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
@@ -6,10 +6,16 @@ namespace ZB.MOM.WW.OtOpcUa.Client.Shared.Tests.Fakes;
internal sealed class FakeApplicationConfigurationFactory : IApplicationConfigurationFactory
{
/// <summary>Gets or sets a value indicating whether to throw when Create is called.</summary>
public bool ThrowOnCreate { get; set; }
/// <summary>Gets the number of times CreateAsync has been called.</summary>
public int CreateCallCount { get; private set; }
/// <summary>Gets the last connection settings passed to CreateAsync.</summary>
public ConnectionSettings? LastSettings { get; private set; }
/// <inheritdoc />
public Task<ApplicationConfiguration> CreateAsync(ConnectionSettings settings, CancellationToken ct)
{
CreateCallCount++;
@@ -5,10 +5,18 @@ namespace ZB.MOM.WW.OtOpcUa.Client.Shared.Tests.Fakes;
internal sealed class FakeEndpointDiscovery : IEndpointDiscovery
{
/// <summary>Gets or sets a value indicating whether SelectEndpoint should throw an exception.</summary>
public bool ThrowOnSelect { get; set; }
/// <summary>Gets the number of times SelectEndpoint has been called.</summary>
public int SelectCallCount { get; private set; }
/// <summary>Gets the last endpoint URL passed to SelectEndpoint.</summary>
public string? LastEndpointUrl { get; private set; }
/// <summary>Selects an endpoint for the given configuration and URL, optionally throwing an exception.</summary>
/// <param name="config">The application configuration.</param>
/// <param name="endpointUrl">The endpoint URL to select.</param>
/// <param name="requestedMode">The requested security mode.</param>
/// <returns>The selected endpoint description.</returns>
public EndpointDescription SelectEndpoint(ApplicationConfiguration config, string endpointUrl,
MessageSecurityMode requestedMode)
{
@@ -20,31 +20,53 @@ internal sealed class FakeSessionAdapter : ISessionAdapter
/// Gets a value indicating whether the fake session has been disposed.
/// </summary>
public bool Disposed { get; private set; }
/// <summary>Gets the number of times ReadValueAsync has been called.</summary>
public int ReadCount { get; private set; }
/// <summary>Gets the number of times WriteValueAsync has been called.</summary>
public int WriteCount { get; private set; }
/// <summary>Gets the number of times BrowseAsync has been called.</summary>
public int BrowseCount { get; private set; }
/// <summary>Gets the number of times BrowseNextAsync has been called.</summary>
public int BrowseNextCount { get; private set; }
/// <summary>Gets the number of times HasChildrenAsync has been called.</summary>
public int HasChildrenCount { get; private set; }
/// <summary>Gets the number of times HistoryReadRawAsync has been called.</summary>
public int HistoryReadRawCount { get; private set; }
/// <summary>Gets the number of times HistoryReadAggregateAsync has been called.</summary>
public int HistoryReadAggregateCount { get; private set; }
// Configurable responses
/// <summary>Gets or sets the data value returned by read operations.</summary>
public DataValue? ReadResponse { get; set; }
/// <summary>Gets or sets a function to generate read responses dynamically based on the node ID.</summary>
public Func<NodeId, DataValue>? ReadResponseFunc { get; set; }
/// <summary>Gets or sets the status code returned by write operations.</summary>
public StatusCode WriteResponse { get; set; } = StatusCodes.Good;
/// <summary>Gets or sets a value indicating whether read operations should throw an exception.</summary>
public bool ThrowOnRead { get; set; }
/// <summary>Gets or sets a value indicating whether write operations should throw an exception.</summary>
public bool ThrowOnWrite { get; set; }
/// <summary>Gets or sets a value indicating whether browse operations should throw an exception.</summary>
public bool ThrowOnBrowse { get; set; }
/// <summary>Gets or sets the browse references returned by browse operations.</summary>
public ReferenceDescriptionCollection BrowseResponse { get; set; } = [];
/// <summary>Gets or sets the continuation point for browse operations.</summary>
public byte[]? BrowseContinuationPoint { get; set; }
/// <summary>Gets or sets the browse references returned by browse-next operations.</summary>
public ReferenceDescriptionCollection BrowseNextResponse { get; set; } = [];
/// <summary>Gets or sets the continuation point for browse-next operations.</summary>
public byte[]? BrowseNextContinuationPoint { get; set; }
/// <summary>Gets or sets the result returned by has-children operations.</summary>
public bool HasChildrenResponse { get; set; } = false;
/// <summary>Gets or sets the historical values returned by raw history-read operations.</summary>
public List<DataValue> HistoryReadRawResponse { get; set; } = [];
/// <summary>Gets or sets the historical values returned by aggregate history-read operations.</summary>
public List<DataValue> HistoryReadAggregateResponse { get; set; } = [];
/// <summary>Gets or sets a value indicating whether raw history-read operations should throw an exception.</summary>
public bool ThrowOnHistoryReadRaw { get; set; }
/// <summary>Gets or sets a value indicating whether aggregate history-read operations should throw an exception.</summary>
public bool ThrowOnHistoryReadAggregate { get; set; }
/// <summary>
@@ -210,6 +232,7 @@ internal sealed class FakeSessionAdapter : ISessionAdapter
/// <summary>
/// Simulates a keep-alive event.
/// </summary>
/// <param name="isGood">Whether the keep-alive status is good.</param>
public void SimulateKeepAlive(bool isGood)
{
_keepAliveCallback?.Invoke(isGood);
@@ -8,8 +8,11 @@ internal sealed class FakeSessionFactory : ISessionFactory
private readonly List<FakeSessionAdapter> _createdSessions = [];
private readonly Queue<FakeSessionAdapter> _sessions = new();
/// <summary>Gets the number of times CreateSessionAsync has been called.</summary>
public int CreateCallCount { get; private set; }
/// <summary>Gets or sets a value indicating whether CreateSessionAsync should throw.</summary>
public bool ThrowOnCreate { get; set; }
/// <summary>Gets the endpoint URL from the last CreateSessionAsync call.</summary>
public string? LastEndpointUrl { get; private set; }
/// <summary>
@@ -18,8 +21,17 @@ internal sealed class FakeSessionFactory : ISessionFactory
/// </summary>
public TaskCompletionSource? CreateGate { get; set; }
/// <summary>Gets the list of sessions created via CreateSessionAsync.</summary>
public IReadOnlyList<FakeSessionAdapter> CreatedSessions => _createdSessions;
/// <summary>Creates a session asynchronously (fake implementation).</summary>
/// <param name="config">The application configuration.</param>
/// <param name="endpoint">The endpoint description.</param>
/// <param name="sessionName">The session name.</param>
/// <param name="sessionTimeoutMs">The session timeout in milliseconds.</param>
/// <param name="identity">The user identity.</param>
/// <param name="ct">Cancellation token.</param>
/// <returns>A task containing the session adapter.</returns>
public async Task<ISessionAdapter> CreateSessionAsync(
ApplicationConfiguration config, EndpointDescription endpoint, string sessionName,
uint sessionTimeoutMs, UserIdentity identity, CancellationToken ct)
@@ -54,6 +66,7 @@ internal sealed class FakeSessionFactory : ISessionFactory
/// <summary>
/// Enqueues a session adapter to be returned on the next call to CreateSessionAsync.
/// </summary>
/// <param name="session">The session adapter to enqueue.</param>
public void EnqueueSession(FakeSessionAdapter session)
{
_sessions.Enqueue(session);
@@ -31,8 +31,13 @@ internal sealed class FakeSubscriptionAdapter : ISubscriptionAdapter
/// Gets or sets a value indicating whether condition refresh should throw to simulate unsupported servers.
/// </summary>
public bool ThrowOnConditionRefresh { get; set; }
/// <summary>Gets the number of times AddDataChangeMonitoredItemAsync was called.</summary>
public int AddDataChangeCount { get; private set; }
/// <summary>Gets the number of times AddEventMonitoredItemAsync was called.</summary>
public int AddEventCount { get; private set; }
/// <summary>Gets the number of times RemoveMonitoredItemAsync was called.</summary>
public int RemoveCount { get; private set; }
/// <summary>
@@ -115,6 +120,8 @@ internal sealed class FakeSubscriptionAdapter : ISubscriptionAdapter
/// <summary>
/// Simulates a data change notification for testing.
/// </summary>
/// <param name="handle">The monitored item handle.</param>
/// <param name="value">The new data value to simulate.</param>
public void SimulateDataChange(uint handle, DataValue value)
{
(NodeId NodeId, Action<string, DataValue>? DataCallback, Action<EventFieldList>? EventCallback) item;
@@ -129,6 +136,8 @@ internal sealed class FakeSubscriptionAdapter : ISubscriptionAdapter
/// <summary>
/// Simulates an event notification for testing.
/// </summary>
/// <param name="handle">The monitored item handle.</param>
/// <param name="eventFields">The event field list to simulate.</param>
public void SimulateEvent(uint handle, EventFieldList eventFields)
{
(NodeId NodeId, Action<string, DataValue>? DataCallback, Action<EventFieldList>? EventCallback) item;