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