feat(s7): resolve equipment-tag refs (read + write) via EquipmentTagRefResolver

This commit is contained in:
Joseph Doherty
2026-06-13 11:25:31 -04:00
parent 34a42486dc
commit b031a6ceef
3 changed files with 137 additions and 13 deletions
@@ -0,0 +1,36 @@
using Shouldly;
using Xunit;
namespace ZB.MOM.WW.OtOpcUa.Driver.S7.Tests;
[Trait("Category", "Unit")]
public class S7EquipmentTagTests
{
[Fact]
public void Parses_equipment_tagconfig_into_a_transient_definition()
{
var json = """{"address":"DB1.DBW0","dataType":"UInt16","stringLength":0}""";
S7EquipmentTagParser.TryParse(json, out var def).ShouldBeTrue();
def!.Name.ShouldBe(json);
def.Address.ShouldBe("DB1.DBW0");
def.DataType.ShouldBe(S7DataType.UInt16);
}
[Fact]
public void Rejects_a_non_address_blob()
=> S7EquipmentTagParser.TryParse("""{"FullName":"x"}""", out _).ShouldBeFalse();
[Fact]
public void Rejects_garbage()
=> S7EquipmentTagParser.TryParse("not json", out _).ShouldBeFalse();
[Fact]
public void Rejects_address_as_a_json_number()
=> S7EquipmentTagParser.TryParse(
"""{"address":40001,"dataType":"UInt16"}""", out _).ShouldBeFalse();
[Fact]
public void Rejects_string_length_out_of_range()
=> S7EquipmentTagParser.TryParse(
"""{"address":"DB1.DBW0","dataType":"String","stringLength":300}""", out _).ShouldBeFalse();
}