39 lines
1.7 KiB
C#
39 lines
1.7 KiB
C#
using ZB.MOM.WW.OtOpcUa.Core.Abstractions;
|
|
|
|
namespace ZB.MOM.WW.OtOpcUa.Driver.Galaxy.E2E;
|
|
|
|
/// <summary>
|
|
/// Test-only <see cref="IAddressSpaceBuilder"/> that records every Folder + Variable
|
|
/// registration. Mirrors the v1 in-process address-space build so tests can assert on
|
|
/// the same shape the legacy <c>LmxNodeManager</c> produced.
|
|
/// </summary>
|
|
public sealed class RecordingAddressSpaceBuilder : IAddressSpaceBuilder
|
|
{
|
|
public List<RecordedFolder> Folders { get; } = new();
|
|
public List<RecordedVariable> Variables { get; } = new();
|
|
public List<RecordedProperty> Properties { get; } = new();
|
|
|
|
public IAddressSpaceBuilder Folder(string browseName, string displayName)
|
|
{
|
|
Folders.Add(new RecordedFolder(browseName, displayName));
|
|
return this; // single flat builder for tests; nesting irrelevant for parity assertions
|
|
}
|
|
|
|
public IVariableHandle Variable(string browseName, string displayName, DriverAttributeInfo attributeInfo)
|
|
{
|
|
Variables.Add(new RecordedVariable(browseName, displayName, attributeInfo));
|
|
return new RecordedVariableHandle(attributeInfo.FullName);
|
|
}
|
|
|
|
public void AddProperty(string browseName, DriverDataType dataType, object? value)
|
|
{
|
|
Properties.Add(new RecordedProperty(browseName, dataType, value));
|
|
}
|
|
|
|
public sealed record RecordedFolder(string BrowseName, string DisplayName);
|
|
public sealed record RecordedVariable(string BrowseName, string DisplayName, DriverAttributeInfo AttributeInfo);
|
|
public sealed record RecordedProperty(string BrowseName, DriverDataType DataType, object? Value);
|
|
|
|
private sealed record RecordedVariableHandle(string FullReference) : IVariableHandle;
|
|
}
|