using Opc.Ua; using Shouldly; using Xunit; using ZB.MOM.WW.LmxOpcUa.Host.Historian; namespace ZB.MOM.WW.LmxOpcUa.Tests.Historian { public class HistorianQualityMappingTests { /// /// Verifies that the Historian good-quality sentinel is surfaced to OPC UA clients as a good status code. /// [Fact] public void Quality0_MapsToGood() { HistorianDataSource.MapQuality(0).ShouldBe(StatusCodes.Good); } /// /// Verifies that the Historian bad-quality sentinel is surfaced to OPC UA clients as a bad status code. /// [Fact] public void Quality1_MapsToBad() { HistorianDataSource.MapQuality(1).ShouldBe(StatusCodes.Bad); } /// /// Verifies that Historian uncertainty quality bands are translated into OPC UA uncertain results. /// /// A Wonderware Historian quality byte in the uncertain range. [Theory] [InlineData(128)] [InlineData(133)] [InlineData(192)] public void QualityAbove128_MapsToUncertain(byte quality) { HistorianDataSource.MapQuality(quality).ShouldBe(StatusCodes.Uncertain); } /// /// Verifies that nonzero non-uncertain Historian quality values are treated as bad historical samples. /// /// A Wonderware Historian quality byte that should map to an OPC UA bad status. [Theory] [InlineData(2)] [InlineData(50)] [InlineData(127)] public void OtherBadQualities_MapToBad(byte quality) { HistorianDataSource.MapQuality(quality).ShouldBe(StatusCodes.Bad); } } }