Files
DP44/docs/ai/DataPRO/DataPRO/Pages/TestSetups And RunTest.md
2026-04-17 14:55:32 -04:00

15 KiB

source_files, generated_at, model, schema_version, sha256
source_files generated_at model schema_version sha256
DataPRO/DataPRO/Pages/TestSetups And RunTest/RunTestPageCheckHardware.cs
DataPRO/DataPRO/Pages/TestSetups And RunTest/RunTestPageDiagnostics.cs
DataPRO/DataPRO/Pages/TestSetups And RunTest/RunTestPageRealtime.cs
DataPRO/DataPRO/Pages/TestSetups And RunTest/RunTestPage.cs
DataPRO/DataPRO/Pages/TestSetups And RunTest/RunTestPageExport.cs
DataPRO/DataPRO/Pages/TestSetups And RunTest/DiagnosticsPage.cs
DataPRO/DataPRO/Pages/TestSetups And RunTest/RunTestPageStatusCheck.cs
DataPRO/DataPRO/Pages/TestSetups And RunTest/CollectDataPage.cs
DataPRO/DataPRO/Pages/TestSetups And RunTest/TestSetupsChangePage.cs
DataPRO/DataPRO/Pages/TestSetups And RunTest/QuickSensorCheckPage.cs
DataPRO/DataPRO/Pages/TestSetups And RunTest/TestSetupEditAddHardwarePage.cs
2026-04-17T15:47:07.283406+00:00 zai-org/GLM-5-FP8 1 07eaa0ac5878fa50

Documentation: Test Setups and RunTest Pages

1. Purpose

This module contains the page classes for the test execution workflow in DataPRO, a WPF-based data acquisition and testing application. These pages handle the complete test lifecycle: test setup selection, hardware configuration and verification, diagnostics execution, real-time data collection, and data export. The module follows a wizard-style navigation pattern where each page represents a distinct step in the test process, inheriting from either RunTestBase or DataPROPage base classes to provide consistent navigation, state management, and UI framework integration.


2. Public Interface

RunTestPageCheckHardware

public class RunTestPageCheckHardware : RunTestBase
Member Signature Description
Constructor RunTestPageCheckHardware(DataModel.TabPageItem item) Initializes with tab page item only.
Constructor RunTestPageCheckHardware(DataModel.TabPageItem item, int possibleSteps) Initializes with tab page item and step count; stores _item field.
OnSetActive public override void OnSetActive() Calls base, sets PageName to _item.Title.
UniqueId public override string UniqueId Returns MY_ID.
MY_ID public const string MY_ID = "Diagnostics_CheckHardware" Constant identifier for this page.

RunTestPageDiagnostics

public class RunTestPageDiagnostics : RunTestBase
Member Signature Description
Constructor RunTestPageDiagnostics(DataModel.TabPageItem item) Initializes with tab page item only.
Constructor RunTestPageDiagnostics(DataModel.TabPageItem item, int possibleSteps) Initializes with tab page item and step count; stores _item field.
OnSetActive public override void OnSetActive() Calls ((App)Application.Current).StartTest(), then base, then sets PageName.
UniqueId public override string UniqueId Returns MY_ID.
MY_ID public const string MY_ID = "Diagnostics" Constant identifier for this page.

RunTestPageRealtime

public class RunTestPageRealtime : RunTestBase
Member Signature Description
Constructor RunTestPageRealtime(DataModel.TabPageItem item) Initializes with tab page item only.
Constructor RunTestPageRealtime(DataModel.TabPageItem item, int possibleSteps) Initializes with tab page item and step count; stores _item field.
QuickCheckout public bool QuickCheckout { get; set; } = false Property controlling strictness level.
OnSetActive public override void OnSetActive() Subscribes to AutomaticModeStatusEvent if not already subscribed, calls base, starts test, sets PageName.
UniqueId public override string UniqueId Returns MY_ID.
MY_ID public const string MY_ID = "Diagnostics_Realtime" Constant identifier for this page.
PageStricknessLevel protected override StrictLevel PageStricknessLevel Returns StrictLevel.QuickCheckout if QuickCheckout is true, otherwise StrictLevel.Strict.

RunTestPage

public class RunTestPage : RunTestBase
Member Signature Description
Constructor RunTestPage(DataModel.TabPageItem item) Initializes with HasBackButton = false.
Constructor RunTestPage(DataModel.TabPageItem item, int possibleSteps) Initializes with step count and HasBackButton = false.
OnSetActive public override void OnSetActive() Subscribes to AutomaticModeStatusEvent if not already subscribed, calls base.
StopDiagnosticsPrepareOnEntry public bool StopDiagnosticsPrepareOnEntry { get; set; } = false Used by TTS import to prevent diagnostics from running on entry.
UniqueId public override string UniqueId Returns "Record".

RunTestPageExport

public class RunTestPageExport : RunTestBase
Member Signature Description
Constructor RunTestPageExport(DataModel.TabPageItem item) Initializes with tab page item only.
Constructor RunTestPageExport(DataModel.TabPageItem item, int possibleSteps) Initializes with tab page item and step count; stores _item field.
OnSetActive public override void OnSetActive() Calls base, sets PageName to _item.Title.
UnSet public override void UnSet() Releases files on export controls, resets export step completion, clears DTSFile.
UniqueId public override string UniqueId Returns MY_ID.
MY_ID public const string MY_ID = "Review_ExportData" Constant identifier for this page.
DownloadFolder public string DownloadFolder { get; set; } = string.Empty Download folder path.
DTSFile public string DTSFile { get; set; } = string.Empty Path to selected test DTS file.
SelectedEventList public BindingList<DTS.Common.Interface.ITestEvent> SelectedEventList { get; set; } Events selected for export.
ResetCurrentStep public void ResetCurrentStep() Sets navigation step index to 0.
ShowUploadStep public void ShowUploadStep(bool bShow) Shows or hides the upload navigation step.
DoneButtonPress2 public override bool DoneButtonPress2(DataPROPage nextPage, HomePage homePage, DataPROTabItem nextTab) Returns true.

DiagnosticsPage

public class DiagnosticsPage : DataPROPage
Member Signature Description
Constructor DiagnosticsPage(DataModel.TabPageItem item) Initializes TestSetupsControl, sets up event handlers, configures page properties.
OnSetActive public override void OnSetActive() Calls base, then SetRunButtonEnabled().
UniqueId public override string UniqueId Returns MY_ID.
MY_ID public const string MY_ID = "Diagnostics" Constant identifier for this page.
OnButtonPress public override bool OnButtonPress(Controls.PageButton button) Handles Record_DiagnosticsRunButton by calling SetNewTest().

RunTestPageStatusCheck

public class RunTestPageStatusCheck : RunTestBase
Member Signature Description
Constructor RunTestPageStatusCheck(DataModel.TabPageItem item) Initializes with tab page item only.
Constructor RunTestPageStatusCheck(DataModel.TabPageItem item, int possibleSteps) Initializes with tab page item and step count; stores _item field.
OnSetActive public override void OnSetActive() Complex logic: resets navigation if not on Hardware step, subscribes to AutomaticModeStatusEvent, modifies AllowedSteps based on settings, calls base, starts test.
UniqueId public override string UniqueId Returns MY_ID.
MY_ID public const string MY_ID = "Diagnostics_StatusLineCheck" Constant identifier for this page.

CollectDataPage

public class CollectDataPage : DataPROPage
Member Signature Description
Constructor CollectDataPage() Parameterless constructor calling Initialize().
Constructor CollectDataPage(DataModel.TabPageItem item) Constructor with tab page item.
OnSetActive public override void OnSetActive() Calls base, then SetRunButtonEnabled().
UniqueId public override string UniqueId Returns "CollectData".
OnButtonPress public override bool OnButtonPress(Controls.PageButton button) Handles Record_CollectDataRunButton by calling SetNewTest().

TestSetupsChangePage

public class TestSetupsChangePage : DataPROPage
Member Signature Description
Constructor TestSetupsChangePage(DataModel.TabPageItem tabPageItem) Initializes with test setups control, sets page name and image.
OnSetActive public override void OnSetActive() Calls base, SetPagePermissions(), ChangeEditVisibility().
UniqueId public override string UniqueId Returns "Prepare_ChangeTestSetups".
OnButtonPress public override bool OnButtonPress(Controls.PageButton button) Handles Prepare_TestSetups_Page_MakeCurrentButton by calling SetNewTest().

QuickSensorCheckPage

public class QuickSensorCheckPage : DataPROPage
Member Signature Description
Constructor QuickSensorCheckPage(DataModel.TabPageItem item) Configures page with no search/select controls, no next button, no NAV control.
OnSetActive public override void OnSetActive() Initializes _quickSensorCheck if null, calls base, starts test.
UnSet public override void UnSet() Calls ((App)Application.Current).EndTest(), then base.
UniqueId public override string UniqueId Returns MY_ID.
MY_ID public const string MY_ID = "Diagnostics_QuickSensorCheck" Constant identifier for this page.
ScanButtonEnabled public bool ScanButtonEnabled { get; set; } Gets/sets scan button enabled state.
RunButtonEnabled public bool RunButtonEnabled { get; set; } Gets/sets run/check button enabled state.
OnButtonPress public override bool OnButtonPress(PageButton button) Handles Diagnostics_QuickSensorCheck_Page_CheckButton, Diagnostics_QuickSensorCheck_Page_RunButton, Diagnostics_QuickSensorCheck_Page_ScanButton.
DoneButtonPress2 public override bool DoneButtonPress2(DataPROPage nextPage, HomePage homePage, DataPROTabItem nextTab) Calls _quickSensorCheck.DoneButtonPress(), returns true.

TestSetupEditAddHardwarePage

public class TestSetupEditAddHardwarePage : DataPROPage
Member Signature Description
TestTemplate public DataModel.TestTemplate TestTemplate { get; set; } Gets/sets test template; updates _vm.TestId when set.
Constructor TestSetupEditAddHardwarePage(DataModel.TabPageItem item) Configures page with save button, modify enhancements, tile color.
UniqueId public override string UniqueId Returns MY_ID.
OnSetActive public override void OnSetActive() Subscribes to events, initializes VM, sets modification state.
UnSet public override void UnSet() Unsubscribes from events, calls base.
SetHardware public void SetHardware(IDASHardware hw, IISOHardware isoHW) Initializes hardware in the viewer, sets IsAdd flag and PageName.
OnButtonPress public override bool OnButtonPress(PageButton button) Handles AddNewDevice button.
Validate public override bool Validate(ref List<string> errors, ref List<string> warnings, bool displayWindow) Validates hardware configuration.
ReportErrors public override void ReportErrors(List<string> errors) Shows message box with errors.
DoneButtonPress public override void DoneButtonPress() Handles modification state propagation to referring page.

3. Invariants

  1. Unique ID Consistency: Each page class defines a MY_ID constant and returns it via the UniqueId property override. This ID must be unique across all pages.

  2. Event Subscription Guard: Pages that subscribe to AutomaticModeStatusEvent (RunTestPageRealtime, RunTestPage, RunTestPageStatusCheck) use a _subscribed boolean flag to prevent duplicate subscriptions.

  3. Base Call Ordering:

    • OnSetActive() implementations must call base.OnSetActive() at appropriate points (typically after page-specific setup).
    • UnSet() implementations must call base.UnSet() after cleanup.
  4. Test Lifecycle: Pages that start tests via ((App)Application.Current).StartTest() should ensure proper test termination. QuickSensorCheckPage.UnSet() explicitly calls EndTest().

  5. Hardware Page State: TestSetupEditAddHardwarePage tracks _entryState and _bModificationsWereMade to properly propagate modification state to the referring page.

  6. Navigation Step Management: RunTestPageStatusCheck.OnSetActive() enforces that if the current step is not PossibleSteps.Hardware, navigation resets to the first step in navStepList.

  7. AllowedSteps Bitwise Operations: RunTestPageStatusCheck uses bitwise operations to modify AllowedSteps, requiring that AllowedSteps be treated as a flags enum bitmask.


4. Dependencies

External Dependencies (from imports)

  • Prism.Ioc - ContainerLocator, IEventAggregator for dependency resolution and event aggregation
  • Prism.Events - Event subscription patterns
  • DTS.Common.Events - AutomaticModeStatusEvent, HardwareSavedEvent
  • DTS.Common.Enums - RecordingModes, hardware/sensor enums
  • DTS.Common.Interface - IDASHardware, IISOHardware, ITestEvent, IAddEditHardwareViewModel, IAddEditHardwareView
  • DTS.Slice.Users - User.UserPermissionLevels for permission checks
  • Unity - IUnityContainer for DI in TestSetupEditAddHardwarePage

Internal Dependencies

  • DataModel.TabPageItem - Constructor parameter for all pages
  • DataModel.TestTemplate - Used by TestSetupEditAddHardwarePage
  • Controls.TestSetupsControl - Used by DiagnosticsPage, CollectDataPage, TestSetupsChangePage
  • Controls.QuickSensorCheck - Used by QuickSensorCheckPage
  • BrushesAndColors - Color constants for UI theming
  • Common.SerializedSettings - Configuration settings for behavior toggles
  • CommonFunctions - Helper methods for channel creation

Downstream Dependencies (Inferred)

  • RunTestBase - Base class for RunTestPage* classes
  • DataPROPage - Base class for standalone pages
  • App - Application singleton accessed via Application.Current
  • MainWindow - Main window accessed for navigation and test setup changes

5. Gotchas

  1. Duplicate Constructor Pattern: Multiple classes define two constructors where the simpler constructor does NOT initialize the _item field, but the constructor with possibleSteps does. This means