64e3fbe035
v2-ci / build (push) Failing after 1m43s
v2-ci / unit-tests (tests/Core/ZB.MOM.WW.OtOpcUa.Cluster.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Runtime.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Security.Tests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests) (push) Has been skipped
Adds <summary>, <param>, <typeparam>, and <inheritdoc/> tags to public members surfaced by commentchecker — resolves 5,847 of 5,869 issues (99.6%) across three /fixdocs passes.
55 lines
1.8 KiB
C#
55 lines
1.8 KiB
C#
using Shouldly;
|
|
using Xunit;
|
|
using ZB.MOM.WW.OtOpcUa.Commons.OpcUa;
|
|
|
|
namespace ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests;
|
|
|
|
public sealed class DeferredServiceLevelPublisherTests
|
|
{
|
|
/// <summary>Verifies that publish before SetInner is a safe no-op.</summary>
|
|
[Fact]
|
|
public void Publish_before_SetInner_is_a_safe_noop()
|
|
{
|
|
var deferred = new DeferredServiceLevelPublisher();
|
|
|
|
Should.NotThrow(() => deferred.Publish(123));
|
|
}
|
|
|
|
/// <summary>Verifies that publish after SetInner routes to the inner publisher.</summary>
|
|
[Fact]
|
|
public void Publish_after_SetInner_routes_to_the_inner()
|
|
{
|
|
var recording = new RecordingPublisher();
|
|
var deferred = new DeferredServiceLevelPublisher();
|
|
deferred.SetInner(recording);
|
|
|
|
deferred.Publish(200);
|
|
|
|
recording.LastValue.ShouldBe((byte)200);
|
|
}
|
|
|
|
/// <summary>Verifies that SetInner with null reverts to the null publisher.</summary>
|
|
[Fact]
|
|
public void SetInner_null_reverts_to_Null_publisher()
|
|
{
|
|
var recording = new RecordingPublisher();
|
|
var deferred = new DeferredServiceLevelPublisher();
|
|
deferred.SetInner(recording);
|
|
deferred.Publish(50);
|
|
|
|
deferred.SetInner(null);
|
|
deferred.Publish(99);
|
|
|
|
recording.LastValue.ShouldBe((byte)50, "writes after SetInner(null) must not reach the previous inner");
|
|
}
|
|
|
|
private sealed class RecordingPublisher : IServiceLevelPublisher
|
|
{
|
|
/// <summary>Gets the last published service level value.</summary>
|
|
public byte? LastValue { get; private set; }
|
|
/// <summary>Publishes a service level value.</summary>
|
|
/// <param name="serviceLevel">The service level to publish.</param>
|
|
public void Publish(byte serviceLevel) => LastValue = serviceLevel;
|
|
}
|
|
}
|