63 lines
5.2 KiB
Markdown
63 lines
5.2 KiB
Markdown
|
|
---
|
||
|
|
source_files:
|
||
|
|
- Common/DTS.Common/XMLUtils/TestSetupExportXML/TestSetups/TestSetup/TestSetupXMLClass.cs
|
||
|
|
generated_at: "2026-04-16T03:22:38.732412+00:00"
|
||
|
|
model: "Qwen/Qwen3-Coder-Next-FP8"
|
||
|
|
schema_version: 1
|
||
|
|
sha256: "149921c2940be328"
|
||
|
|
---
|
||
|
|
|
||
|
|
# TestSetup
|
||
|
|
|
||
|
|
## 1. Purpose
|
||
|
|
This module defines the `TestSetupXMLClass`, a data contract class used for serializing and deserializing test setup configurations to/from XML. It serves as the root object model in the XML export/import pipeline for test setup data within the DTS system, capturing core structural elements such as identifiers, device abstraction sets (`DASList`), groupings, field definitions, hardware inclusions, level triggers, and metadata. Its primary role is to provide a strongly-typed representation aligned with a specific XML schema used for test setup persistence and interchange.
|
||
|
|
|
||
|
|
## 2. Public Interface
|
||
|
|
- **`TestSetupXMLClass()`**
|
||
|
|
Parameterless constructor (implicitly provided by C#; required for `XmlSerializer`).
|
||
|
|
|
||
|
|
- **`string Id { get; set; }`**
|
||
|
|
Gets or sets the unique identifier for the test setup. Serialized as a top-level XML element named `<Id>` (default element name derived from property name).
|
||
|
|
|
||
|
|
- **`List<DASListXMLClass> DASList { get; set; }`**
|
||
|
|
Gets or sets a list of device abstraction set definitions. Serialized as a top-level XML element named `<DASList>` (due to `[XmlElement("DASList")]` attribute). May be `null` or empty.
|
||
|
|
|
||
|
|
- **`List<GroupsXMLClass> Groups { get; set; }`**
|
||
|
|
Gets or sets a list of group definitions. Serialized as a top-level XML element named `<Groups>`. May be `null` or empty.
|
||
|
|
|
||
|
|
- **`FieldsXMLClass Fields { get; set; }`**
|
||
|
|
Gets or sets a container for field definitions. Serialized as a top-level XML element named `<Fields>`. May be `null`.
|
||
|
|
|
||
|
|
- **`string HardwareIncludes { get; set; }`**
|
||
|
|
Gets or sets a string representing hardware inclusion criteria (e.g., comma-separated IDs or paths). Serialized as a top-level XML element named `<HardwareIncludes>` (default element name). May be `null` or empty.
|
||
|
|
|
||
|
|
- **`LevelTriggersXMLClass LevelTriggers { get; set; }`**
|
||
|
|
Gets or sets configuration for level-triggered events. Serialized as a top-level XML element named `<LevelTriggers>`. May be `null`.
|
||
|
|
|
||
|
|
- **`MetaDatasXMLClass MetaDatas { get; set; }`**
|
||
|
|
Gets or sets a container for metadata entries. Serialized as a top-level XML element named `<MetaDatas>`. May be `null`.
|
||
|
|
|
||
|
|
## 3. Invariants
|
||
|
|
- **XML Serialization Compatibility**: All public properties must be serializable by `System.Xml.Serialization.XmlSerializer`. This requires:
|
||
|
|
- Public parameterless constructor (satisfied by default).
|
||
|
|
- Public read-write properties (all meet this).
|
||
|
|
- Collection properties (`List<T>`) must be initialized before adding items to avoid `NullReferenceException` during serialization.
|
||
|
|
- **Element Naming**: Element names in the resulting XML are explicitly controlled via `[XmlElement]` attributes for `DASList`, `Groups`, `LevelTriggers`, and `MetaDatas`; others use default naming (`Id`, `Fields`, `HardwareIncludes`).
|
||
|
|
- **Null Handling**: `XmlSerializer` omits `null` reference properties from the output XML. Non-null but empty collections (e.g., `new List<T>()`) will serialize as empty elements (e.g., `<DASList />`).
|
||
|
|
|
||
|
|
## 4. Dependencies
|
||
|
|
- **Internal Dependencies**:
|
||
|
|
- `DASListXMLClass`, `GroupsXMLClass`, `FieldsXMLClass`, `LevelTriggersXMLClass`, `MetaDatasXMLClass` — referenced as property types; their definitions are required for correct serialization/deserialization but not included in this source file.
|
||
|
|
- **External Dependencies**:
|
||
|
|
- `System.Xml.Serialization` — used for XML serialization attributes and runtime.
|
||
|
|
- `System.Collections.Generic`, `System.Linq`, `System.Text`, `System.Threading.Tasks`, `System` — standard .NET namespaces used implicitly (e.g., `List<T>`, LINQ methods).
|
||
|
|
- **Consumers**: This class is likely consumed by XML export/import utilities (e.g., classes responsible for writing/reading test setup XML files), though such consumers are not visible in this file.
|
||
|
|
|
||
|
|
## 5. Gotchas
|
||
|
|
- **Missing `[XmlElement]` on `Id` and `HardwareIncludes`**: These properties serialize with element names matching their property names (`Id`, `HardwareIncludes`). If the XML schema expects different casing or naming (e.g., `<ID>` or `<HardwareInclude>`), this will cause deserialization failures.
|
||
|
|
- **No validation or business logic**: The class is a pure data container; no validation occurs on property values (e.g., `Id` could be empty, `DASList` could contain null items). Consumers must enforce constraints.
|
||
|
|
- **Collection initialization not guaranteed**: `XmlSerializer` does not automatically initialize `List<T>` properties. If deserializing into a pre-existing instance, `DASList`, `Groups`, `Fields`, `LevelTriggers`, and `MetaDatas` may remain `null` unless explicitly initialized in code.
|
||
|
|
- **No inheritance or interface constraints visible**: The class is sealed in behavior (no virtual members, interfaces, or inheritance hierarchy shown), limiting extensibility patterns.
|
||
|
|
- **No documentation on nested types**: Behavior of `FieldsXMLClass`, `LevelTriggersXMLClass`, etc., is unknown from this file alone; their structure may impose additional invariants (e.g., required child elements).
|
||
|
|
|
||
|
|
None identified beyond the above.
|