From b9a03b427459cd6a5dcd598cea90b8ef96d73713 Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Tue, 10 Nov 2026 12:50:19 -0500 Subject: [PATCH] test: repair SDK status oracle and remove duplicate payload cases --- .../Helpers/VariantBoundaryTests.cs | 4 ++-- .../StatusCodeParityTests.cs | 15 ++++++++++++--- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/tests/Client/ZB.MOM.WW.OtOpcUa.Client.Shared.Tests/Helpers/VariantBoundaryTests.cs b/tests/Client/ZB.MOM.WW.OtOpcUa.Client.Shared.Tests/Helpers/VariantBoundaryTests.cs index ce6b8ba8..321c4df3 100644 --- a/tests/Client/ZB.MOM.WW.OtOpcUa.Client.Shared.Tests/Helpers/VariantBoundaryTests.cs +++ b/tests/Client/ZB.MOM.WW.OtOpcUa.Client.Shared.Tests/Helpers/VariantBoundaryTests.cs @@ -11,8 +11,8 @@ public class VariantBoundaryTests { foreach (var value in new object?[] { null, true, (sbyte)-1, (byte)1, (short)-2, (ushort)2, -3, 3u, -4L, 4UL, 1.25f, 2.5, "", "text", Guid.Parse("de305d54-75b4-431b-adb2-eb6b9e546014"), - new DateTime(2026, 11, 10, 0, 0, 0, DateTimeKind.Utc), Array.Empty(), new byte[] { 1, 2 }, - Array.Empty(), new[] { 1 }, new[] { 1, 2 }, Array.Empty(), new[] { "", "text" } }) + new DateTime(2026, 11, 10, 0, 0, 0, DateTimeKind.Utc), new byte[] { 1, 2 }, + new[] { 1 }, new[] { 1, 2 }, new[] { "", "text" } }) yield return [value]; foreach (var value in new object[] { true, (sbyte)-1, (byte)1, (short)-2, (ushort)2, -3, 3u, -4L, 4UL, 1.25f, 2.5, "text", Guid.Empty, diff --git a/tests/Core/ZB.MOM.WW.OtOpcUa.Core.Abstractions.Tests/StatusCodeParityTests.cs b/tests/Core/ZB.MOM.WW.OtOpcUa.Core.Abstractions.Tests/StatusCodeParityTests.cs index d617384b..d1a98bcb 100644 --- a/tests/Core/ZB.MOM.WW.OtOpcUa.Core.Abstractions.Tests/StatusCodeParityTests.cs +++ b/tests/Core/ZB.MOM.WW.OtOpcUa.Core.Abstractions.Tests/StatusCodeParityTests.cs @@ -47,9 +47,18 @@ public sealed class StatusCodeParityTests /// Every Opc.Ua.StatusCodes member, by name — the oracle this test checks against. private static readonly IReadOnlyDictionary SdkStatusCodes = typeof(Opc.Ua.StatusCodes) - .GetProperties(BindingFlags.Public | BindingFlags.Static) - .Where(p => p.PropertyType == typeof(Opc.Ua.StatusCode)) - .ToDictionary(p => p.Name, p => ((Opc.Ua.StatusCode)p.GetValue(null)!).Code, StringComparer.Ordinal); + .GetFields(BindingFlags.Public | BindingFlags.Static) + .Where(f => f.FieldType == typeof(Opc.Ua.StatusCode)) + .ToDictionary(f => f.Name, f => ((Opc.Ua.StatusCode)f.GetValue(null)!).Code, StringComparer.Ordinal); + + [Fact] + public void SDK_oracle_contains_all_status_severities() + { + SdkStatusCodes.Count.ShouldBeGreaterThan(200); + SdkStatusCodes["Good"].ShouldBe(0u); + SdkStatusCodes["Uncertain"].ShouldBe(0x40000000u); + SdkStatusCodes["Bad"].ShouldBe(0x80000000u); + } /// /// Every status-shaped const uint declared anywhere in the deployed driver assemblies, as