using Shouldly;
using Xunit;
using ZB.MOM.WW.OtOpcUa.AdminUI.Components.Shared.Drivers.Pickers;
namespace ZB.MOM.WW.OtOpcUa.AdminUI.Tests.Pickers;
public sealed class ModbusAddressBuilderTests
{
/// Verifies that Build produces canonical Modbus address strings for all supported register types.
/// The Modbus register type.
/// The register offset.
/// The data length.
/// The expected canonical address string.
[Theory]
[InlineData("Holding", 1, 1, "4x00001-1")]
[InlineData("Coil", 0, 1, "0x00000-1")]
[InlineData("Holding", 123, 4, "4x00123-4")]
[InlineData("DiscreteInput", 5, 1, "1x00005-1")]
[InlineData("Input", 99999, 125, "3x99999-125")]
public void Build_Canonical(string type, int offset, int length, string expected)
=> ModbusAddressBuilder.Build(type, offset, length).ShouldBe(expected);
/// Verifies that Build falls back to the Holding register type for unknown type strings.
[Fact]
public void Build_UnknownType_FallsBackToHolding()
=> ModbusAddressBuilder.Build("Unknown", 1, 1).ShouldBe("4x00001-1");
}