Files
DP44/enriched-partialglm/Common/DTS.CommonCore/Interface/DTS.Viewer/TestModule.md

77 lines
3.5 KiB
Markdown
Raw Normal View History

2026-04-17 14:55:32 -04:00
---
source_files:
- Common/DTS.CommonCore/Interface/DTS.Viewer/TestModule/ITestModuleView.cs
- Common/DTS.CommonCore/Interface/DTS.Viewer/TestModule/ITestModuleViewModel.cs
generated_at: "2026-04-16T12:22:30.959477+00:00"
model: "zai-org/GLM-5-FP8"
schema_version: 1
sha256: "43e7cc3a0d236351"
---
# Documentation: ITestModuleView & ITestModuleViewModel
## 1. Purpose
This module defines the view and view model interfaces for a Test Module component within an MVVM (Model-View-ViewModel) architecture. It establishes contracts for a test module view (`ITestModuleView`) and its corresponding view model (`ITestModuleViewModel`), with the view model specifically exposing a collection of assemblies for test management purposes. These interfaces enable decoupled communication between the presentation layer and business logic for test module functionality.
---
## 2. Public Interface
### `ITestModuleView`
**Signature:**
```csharp
public interface ITestModuleView : IBaseView { }
```
**Description:** A marker interface extending `IBaseView`. It defines no members of its own, serving purely as a type contract for test module view implementations.
---
### `ITestModuleViewModel`
**Signature:**
```csharp
public interface ITestModuleViewModel : IBaseViewModel
{
List<Assembly> AssemblyList { get; set; }
}
```
**Description:** An interface extending `IBaseViewModel` that defines the contract for a test module view model. Exposes a single property:
| Property | Type | Access | Description |
|----------|------|--------|-------------|
| `AssemblyList` | `List<Assembly>` | get; set; | A mutable list of .NET assemblies, presumably for test discovery or execution purposes. |
---
## 3. Invariants
- `ITestModuleView` must always implement `IBaseView`.
- `ITestModuleViewModel` must always implement `IBaseViewModel`.
- The `AssemblyList` property must be a mutable `List<Assembly>` (both getter and setter are required).
- The namespace `DTS.Common.Interface` is declared for both interfaces regardless of file location.
---
## 4. Dependencies
### This module depends on:
| Dependency | Usage |
|------------|-------|
| `DTS.Common.Base` | Provides `IBaseView` and `IBaseViewModel` base interfaces |
| `System.Collections.Generic` | Provides `List<T>` for the `AssemblyList` property |
| `System.Reflection` | Provides the `Assembly` type |
### What depends on this module:
**Cannot be determined from source alone.** Consumers would be concrete implementations of `ITestModuleView` and `ITestModuleViewModel`, as well as any code that depends on these abstractions (e.g., test runners, navigation services, or dependency injection containers).
---
## 5. Gotchas
- **Namespace mismatch with file path:** The declared namespace `DTS.Common.Interface` does not match the folder structure `Common/DTS.CommonCore/Interface/DTS.Viewer/TestModule/`. The `// ReSharper disable CheckNamespace` directive suppresses IDE warnings about this discrepancy, suggesting this may be intentional or a historical artifact.
- **Marker interface with no members:** `ITestModuleView` is an empty interface that only inherits from `IBaseView`. Its purpose beyond type identification is unclear from the source alone.
- **Mutable property on interface:** `AssemblyList` exposes both a getter and setter, implying implementations must support full replacement of the list, not just modification of its contents. The implications of this design choice (e.g., notification requirements, thread safety) are not documented in the source.