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
@@ -26,34 +26,61 @@ public sealed class GalaxyDriverWriteTests
private sealed class FakeHierarchySource(IReadOnlyList<GalaxyObject> objects) : IGalaxyHierarchySource
{
/// <summary>Returns the fake Galaxy object hierarchy.</summary>
/// <param name="cancellationToken">Token to cancel the operation.</param>
public Task<IReadOnlyList<GalaxyObject>> GetHierarchyAsync(CancellationToken cancellationToken)
=> Task.FromResult(objects);
}
private sealed class FakeBuilder : IAddressSpaceBuilder
{
/// <summary>Gets the list of variables added to this builder.</summary>
public List<DriverAttributeInfo> Variables { get; } = [];
/// <summary>Adds a folder and returns this builder for chaining.</summary>
/// <param name="browseName">The browse name of the folder.</param>
/// <param name="displayName">The display name of the folder.</param>
public IAddressSpaceBuilder Folder(string browseName, string displayName) => this;
/// <summary>Adds a variable to the variables list and returns a handle.</summary>
/// <param name="browseName">The browse name of the variable.</param>
/// <param name="displayName">The display name of the variable.</param>
/// <param name="attributeInfo">The attribute information for the variable.</param>
public IVariableHandle Variable(string browseName, string displayName, DriverAttributeInfo attributeInfo)
{
Variables.Add(attributeInfo);
return new FakeHandle(attributeInfo.FullName);
}
/// <summary>No-op property adding operation for test compatibility.</summary>
/// <param name="browseName">The browse name of the property.</param>
/// <param name="dataType">The data type of the property.</param>
/// <param name="value">The value of the property.</param>
public void AddProperty(string browseName, DriverDataType dataType, object? value) { }
private sealed class FakeHandle(string fullRef) : IVariableHandle
{
/// <summary>Gets the full reference for this variable handle.</summary>
public string FullReference { get; } = fullRef;
/// <summary>Marks this variable as an alarm condition and returns a noop sink.</summary>
/// <param name="info">The alarm condition information.</param>
public IAlarmConditionSink MarkAsAlarmCondition(AlarmConditionInfo info) => new NoopSink();
private sealed class NoopSink : IAlarmConditionSink { public void OnTransition(AlarmEventArgs args) { } }
/// <summary>No-op alarm transition handler.</summary>
private sealed class NoopSink : IAlarmConditionSink {
/// <summary>Handles alarm state transition events.</summary>
/// <param name="args">The alarm event arguments.</param>
public void OnTransition(AlarmEventArgs args) { }
}
}
}
private sealed class FakeWriter : IGalaxyDataWriter
{
/// <summary>Gets the list of write calls received by this writer.</summary>
public List<(string FullRef, object? Value, SecurityClassification Resolved)> Calls { get; } = [];
/// <summary>Records write requests with their resolved security classifications.</summary>
/// <param name="writes">The list of write requests to process.</param>
/// <param name="securityResolver">Function to resolve security classification for each request.</param>
/// <param name="cancellationToken">Token to cancel the operation.</param>
public Task<IReadOnlyList<WriteResult>> WriteAsync(
IReadOnlyList<WriteRequest> writes,
Func<string, SecurityClassification> securityResolver,
@@ -79,6 +106,7 @@ public sealed class GalaxyDriverWriteTests
return o;
}
/// <summary>Verifies that WriteAsync routes through the injected writer and propagates values correctly.</summary>
[Fact]
public async Task WriteAsync_RoutesThroughInjectedWriter_AndPropagatesValues()
{
@@ -102,6 +130,9 @@ public sealed class GalaxyDriverWriteTests
writer.Calls[1].Resolved.ShouldBe(SecurityClassification.Operate);
}
/// <summary>Verifies that WriteAsync resolves every security classification from discovery data.</summary>
/// <param name="mxSec">The raw MXAccess security integer from the discovery attribute.</param>
/// <param name="expected">The expected resolved security classification.</param>
[Theory]
[InlineData(0, SecurityClassification.FreeAccess)]
[InlineData(1, SecurityClassification.Operate)]
@@ -125,6 +156,7 @@ public sealed class GalaxyDriverWriteTests
writer.Calls[0].Resolved.ShouldBe(expected);
}
/// <summary>Verifies that unknown tags resolve to FreeAccess classification and writes proceed.</summary>
[Fact]
public async Task WriteAsync_UnknownTag_ResolvesToFreeAccess_DefaultsToWrite()
{
@@ -139,6 +171,7 @@ public sealed class GalaxyDriverWriteTests
writer.Calls[0].Resolved.ShouldBe(SecurityClassification.FreeAccess);
}
/// <summary>Verifies that an empty write request returns empty without calling the writer.</summary>
[Fact]
public async Task WriteAsync_EmptyRequest_ReturnsEmpty_WithoutCallingWriter()
{
@@ -152,6 +185,7 @@ public sealed class GalaxyDriverWriteTests
writer.Calls.ShouldBeEmpty();
}
/// <summary>Verifies that WriteAsync throws when no writer is configured, referencing PR 4.4.</summary>
[Fact]
public async Task WriteAsync_NoWriter_Throws_PointingAtPR44()
{
@@ -162,6 +196,7 @@ public sealed class GalaxyDriverWriteTests
ex.Message.ShouldContain("PR 4.4");
}
/// <summary>Verifies that WriteAsync throws ObjectDisposedException after the driver is disposed.</summary>
[Fact]
public async Task WriteAsync_AfterDispose_Throws()
{