Files
lmxopcua/tests/Core/ZB.MOM.WW.OtOpcUa.Commons.Tests/OpcUa/DeferredServiceLevelPublisherTests.cs
T
Joseph Doherty 6dc74289ce review(Commons): record findings + add deferred-sink/equip-nodeid tests, fix stale Phase7 doc
Code review at HEAD 7286d320. Commons-001 (stale Phase7 telemetry doc) fixed;
Commons-003/004 close test-coverage gaps (DeferredAddressSpaceSink/ServiceLevelPublisher
forwarding seam + EquipmentNodeIds whitespace branch). Commons-002 (CorrelationId
typing) deferred as cross-cutting.
2026-06-19 10:22:59 -04:00

54 lines
1.5 KiB
C#

using Shouldly;
using Xunit;
using ZB.MOM.WW.OtOpcUa.Commons.OpcUa;
namespace ZB.MOM.WW.OtOpcUa.Commons.Tests.OpcUa;
/// <summary>
/// Covers DeferredServiceLevelPublisher forwarding invariants (Commons-003 companion).
/// </summary>
public class DeferredServiceLevelPublisherTests
{
[Fact]
public void Before_SetInner_Publish_is_a_noop()
{
var publisher = new DeferredServiceLevelPublisher();
// Must not throw; the NullServiceLevelPublisher absorbs it.
publisher.Publish(200);
}
[Fact]
public void After_SetInner_Publish_is_forwarded()
{
var spy = new SpyPublisher();
var publisher = new DeferredServiceLevelPublisher();
publisher.SetInner(spy);
publisher.Publish(240);
spy.LastPublished.ShouldBe((byte)240);
}
[Fact]
public void SetInner_null_reverts_to_null_publisher()
{
var spy = new SpyPublisher();
var publisher = new DeferredServiceLevelPublisher();
publisher.SetInner(spy);
publisher.SetInner(null); // revert
publisher.Publish(100);
// The spy should NOT have received the publish after revert.
spy.LastPublished.ShouldBe((byte)0, "spy should not have been updated after revert to null");
}
// ---- test double ----
private sealed class SpyPublisher : IServiceLevelPublisher
{
public byte LastPublished { get; private set; }
public void Publish(byte serviceLevel) => LastPublished = serviceLevel;
}
}