docs: backfill XML documentation across 756 files
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.
This commit is contained in:
Joseph Doherty
2026-05-28 08:10:17 -04:00
parent f9fc7dd2e1
commit 64e3fbe035
756 changed files with 9876 additions and 96 deletions
@@ -14,11 +14,18 @@ public sealed class ModbusSubscriptionTests
/// (Read Holding Registers) path is used. Mutating <see cref="HoldingRegisters"/>
/// between polls is how each test simulates a PLC value change.
/// </summary>
/// <summary>Lightweight fake Modbus transport for testing subscriptions.</summary>
private sealed class FakeTransport : IModbusTransport
{
public readonly ushort[] HoldingRegisters = new ushort[256];
/// <summary>Simulates connecting to the Modbus device.</summary>
/// <param name="ct">The cancellation token.</param>
public Task ConnectAsync(CancellationToken ct) => Task.CompletedTask;
/// <summary>Simulates sending a Modbus PDU.</summary>
/// <param name="unitId">The Modbus unit ID.</param>
/// <param name="pdu">The protocol data unit.</param>
/// <param name="ct">The cancellation token.</param>
public Task<byte[]> SendAsync(byte unitId, byte[] pdu, CancellationToken ct)
{
if (pdu[0] != 0x03) return Task.FromException<byte[]>(new NotSupportedException("FC not supported"));
@@ -34,6 +41,7 @@ public sealed class ModbusSubscriptionTests
}
return Task.FromResult(resp);
}
/// <summary>Disposes the transport asynchronously.</summary>
public ValueTask DisposeAsync() => ValueTask.CompletedTask;
}
@@ -44,6 +52,7 @@ public sealed class ModbusSubscriptionTests
return (new ModbusDriver(opts, "modbus-1", _ => fake), fake);
}
/// <summary>Verifies initial poll raises OnDataChange for every subscribed tag.</summary>
[Fact]
public async Task Initial_poll_raises_OnDataChange_for_every_subscribed_tag()
{
@@ -65,6 +74,7 @@ public sealed class ModbusSubscriptionTests
await drv.UnsubscribeAsync(handle, CancellationToken.None);
}
/// <summary>Verifies unchanged values do not raise after initial poll.</summary>
[Fact]
public async Task Unchanged_values_do_not_raise_after_initial_poll()
{
@@ -82,6 +92,7 @@ public sealed class ModbusSubscriptionTests
events.Count.ShouldBe(1); // only the initial-data push, no change events after
}
/// <summary>Verifies value change between polls raises OnDataChange.</summary>
[Fact]
public async Task Value_change_between_polls_raises_OnDataChange()
{
@@ -102,6 +113,7 @@ public sealed class ModbusSubscriptionTests
events.Last().Snapshot.Value.ShouldBe((short)200);
}
/// <summary>Verifies unsubscribe stops the polling loop.</summary>
[Fact]
public async Task Unsubscribe_stops_the_polling_loop()
{
@@ -121,6 +133,7 @@ public sealed class ModbusSubscriptionTests
events.Count.ShouldBe(countAfterUnsub);
}
/// <summary>Verifies SubscribeAsync floors intervals below 100ms.</summary>
[Fact]
public async Task SubscribeAsync_floors_intervals_below_100ms()
{
@@ -140,6 +153,7 @@ public sealed class ModbusSubscriptionTests
events.Count.ShouldBe(1);
}
/// <summary>Verifies multiple subscriptions fire independently.</summary>
[Fact]
public async Task Multiple_subscriptions_fire_independently()
{