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
{
    [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);

    [Fact]
    public void Build_UnknownType_FallsBackToHolding()
        => ModbusAddressBuilder.Build("Unknown", 1, 1).ShouldBe("4x00001-1");
}
