Linter/formatter pass across the full codebase. Restores required partial keyword on AXAML code-behind classes that the formatter incorrectly removed. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
46 lines
1.6 KiB
C#
46 lines
1.6 KiB
C#
using Opc.Ua;
|
|
using Shouldly;
|
|
using Xunit;
|
|
using ZB.MOM.WW.LmxOpcUa.Host.Domain;
|
|
|
|
namespace ZB.MOM.WW.LmxOpcUa.Tests.Historian
|
|
{
|
|
public class HistorianQualityMappingTests
|
|
{
|
|
private static StatusCode MapHistorianQuality(byte quality)
|
|
{
|
|
return QualityMapper.MapToOpcUaStatusCode(QualityMapper.MapFromMxAccessQuality(quality));
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData(192)] // Quality.Good
|
|
[InlineData(216)] // Quality.GoodLocalOverride
|
|
public void GoodQualityRange_MapsToGood(byte quality)
|
|
{
|
|
StatusCode.IsGood(MapHistorianQuality(quality)).ShouldBeTrue();
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData(64)] // Quality.Uncertain
|
|
[InlineData(68)] // Quality.UncertainLastUsable
|
|
[InlineData(80)] // Quality.UncertainSensorNotAccurate
|
|
[InlineData(88)] // Quality.UncertainSubNormal
|
|
[InlineData(128)] // Uncertain range (no exact enum match)
|
|
public void UncertainQualityRange_MapsToUncertain(byte quality)
|
|
{
|
|
StatusCode.IsUncertain(MapHistorianQuality(quality)).ShouldBeTrue();
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData(0)] // Quality.Bad
|
|
[InlineData(1)] // Bad range
|
|
[InlineData(4)] // Quality.BadConfigError
|
|
[InlineData(8)] // Quality.BadNotConnected
|
|
[InlineData(20)] // Quality.BadCommFailure
|
|
[InlineData(50)] // Bad range (no exact enum match)
|
|
public void BadQualityRange_MapsToBad(byte quality)
|
|
{
|
|
StatusCode.IsBad(MapHistorianQuality(quality)).ShouldBeTrue();
|
|
}
|
|
}
|
|
} |