using Opc.Ua; using ZB.MOM.WW.ScadaBridge.Commons.Interfaces.Protocol; using ZB.MOM.WW.ScadaBridge.DataConnectionLayer.Adapters; namespace ZB.MOM.WW.ScadaBridge.DataConnectionLayer.Tests; /// ScadaBridge#117: quality follows the StatusCode severity bits, not "== 0". public class OpcUaStatusCodeMappingTests { [Theory] [InlineData(StatusCodes.Good, QualityCode.Good)] [InlineData(StatusCodes.GoodLocalOverride, QualityCode.Good)] [InlineData(StatusCodes.GoodClamped, QualityCode.Good)] [InlineData(StatusCodes.Good | 0x0480u, QualityCode.Good)] // info bits set [InlineData(StatusCodes.Uncertain, QualityCode.Uncertain)] [InlineData(StatusCodes.UncertainLastUsableValue, QualityCode.Uncertain)] [InlineData(StatusCodes.UncertainSensorNotAccurate, QualityCode.Uncertain)] [InlineData(StatusCodes.Bad, QualityCode.Bad)] [InlineData(StatusCodes.BadNodeIdUnknown, QualityCode.Bad)] [InlineData(StatusCodes.BadResourceUnavailable, QualityCode.Bad)] [InlineData(0xC0000000u, QualityCode.Bad)] public void MapStatusCode_UsesSeverityBits(uint code, QualityCode expected) => Assert.Equal(expected, OpcUaDataConnection.MapStatusCode(code)); }