58 lines
1.8 KiB
C#
58 lines
1.8 KiB
C#
using Shouldly;
|
|
using Xunit;
|
|
using ZB.MOM.WW.OtOpcUa.Core.OpcUa;
|
|
using ZB.MOM.WW.OtOpcUa.Server.OpcUa;
|
|
|
|
namespace ZB.MOM.WW.OtOpcUa.Server.Tests;
|
|
|
|
[Trait("Category", "Unit")]
|
|
public sealed class DriverEquipmentContentRegistryTests
|
|
{
|
|
private static readonly EquipmentNamespaceContent EmptyContent =
|
|
new(Areas: [], Lines: [], Equipment: [], Tags: []);
|
|
|
|
[Fact]
|
|
public void Get_Returns_Null_For_Unknown_Driver()
|
|
{
|
|
var registry = new DriverEquipmentContentRegistry();
|
|
registry.Get("galaxy-prod").ShouldBeNull();
|
|
registry.Count.ShouldBe(0);
|
|
}
|
|
|
|
[Fact]
|
|
public void Set_Then_Get_Returns_Stored_Content()
|
|
{
|
|
var registry = new DriverEquipmentContentRegistry();
|
|
registry.Set("galaxy-prod", EmptyContent);
|
|
|
|
registry.Get("galaxy-prod").ShouldBeSameAs(EmptyContent);
|
|
registry.Count.ShouldBe(1);
|
|
}
|
|
|
|
[Fact]
|
|
public void Get_Is_Case_Insensitive_For_Driver_Id()
|
|
{
|
|
// DriverInstanceId keys are OrdinalIgnoreCase across the codebase (Equipment /
|
|
// Tag rows, walker grouping). Registry matches that contract so callers don't have
|
|
// to canonicalize driver ids before lookup.
|
|
var registry = new DriverEquipmentContentRegistry();
|
|
registry.Set("Galaxy-Prod", EmptyContent);
|
|
registry.Get("galaxy-prod").ShouldBeSameAs(EmptyContent);
|
|
registry.Get("GALAXY-PROD").ShouldBeSameAs(EmptyContent);
|
|
}
|
|
|
|
[Fact]
|
|
public void Set_Overwrites_Existing_Content_For_Same_Driver()
|
|
{
|
|
var registry = new DriverEquipmentContentRegistry();
|
|
var first = EmptyContent;
|
|
var second = new EquipmentNamespaceContent([], [], [], []);
|
|
|
|
registry.Set("galaxy-prod", first);
|
|
registry.Set("galaxy-prod", second);
|
|
|
|
registry.Get("galaxy-prod").ShouldBeSameAs(second);
|
|
registry.Count.ShouldBe(1);
|
|
}
|
|
}
|