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
@@ -16,6 +16,7 @@ public sealed class ModbusAddressEdgeCaseTests
{
// ── Parser: empty trailing-field rejection (Driver.Modbus.Addressing-002) ──────────────
/// <summary>Verifies that a 3-field address with an empty third field is rejected.</summary>
[Fact]
public void Parser_3field_empty_third_field_rejected()
{
@@ -27,6 +28,7 @@ public sealed class ModbusAddressEdgeCaseTests
error!.ShouldContain("empty");
}
/// <summary>Verifies that a 4-field address with an empty third field (byte order) accepts the default.</summary>
[Fact]
public void Parser_4field_empty_third_field_accepted_as_default_order()
{
@@ -40,6 +42,7 @@ public sealed class ModbusAddressEdgeCaseTests
// ── Parser: misplaced type code gives better diagnostic (Driver.Modbus.Addressing-003) ─
/// <summary>Verifies that a misplaced type code in the third field produces a helpful error.</summary>
[Fact]
public void Parser_3field_misplaced_type_in_third_field_gives_helpful_error()
{
@@ -54,6 +57,7 @@ public sealed class ModbusAddressEdgeCaseTests
// ── Parser: multi-dot input (Driver.Modbus.Addressing-004) ──────────────────────────────
/// <summary>Verifies that addresses with multiple dots are rejected with a clear error.</summary>
[Fact]
public void Parser_multi_dot_input_rejected_with_clear_error()
{
@@ -63,6 +67,7 @@ public sealed class ModbusAddressEdgeCaseTests
error.ShouldNotBeNullOrEmpty();
}
/// <summary>Verifies that a decimal point typo produces a precise error.</summary>
[Fact]
public void Parser_decimal_point_typo_400_01_gives_precise_error()
{
@@ -76,6 +81,7 @@ public sealed class ModbusAddressEdgeCaseTests
// ── DirectLogicAddress overflow and boundary (Driver.Modbus.Addressing-008) ────────────
/// <summary>Verifies that user V-memory overflow throws an OverflowException.</summary>
[Fact]
public void UserVMemoryToPdu_overflow_throws_OverflowException()
{
@@ -83,6 +89,7 @@ public sealed class ModbusAddressEdgeCaseTests
Should.Throw<OverflowException>(() => DirectLogicAddress.UserVMemoryToPdu("V200000"));
}
/// <summary>Verifies that octal offset overflow via Y throws an OverflowException.</summary>
[Fact]
public void AddOctalOffset_overflow_via_Y_throws_OverflowException()
{
@@ -92,6 +99,7 @@ public sealed class ModbusAddressEdgeCaseTests
Should.Throw<OverflowException>(() => DirectLogicAddress.YOutputToCoil("Y174000"));
}
/// <summary>Verifies that octal offset overflow via C throws an OverflowException.</summary>
[Fact]
public void AddOctalOffset_overflow_via_C_throws_OverflowException()
{
@@ -100,6 +108,7 @@ public sealed class ModbusAddressEdgeCaseTests
Should.Throw<OverflowException>(() => DirectLogicAddress.CRelayToCoil("C172000"));
}
/// <summary>Verifies that SystemVMemoryToPdu is exercised and returns the correct base.</summary>
[Fact]
public void SystemVMemoryToPdu_is_exercised_and_returns_correct_base()
{
@@ -109,6 +118,7 @@ public sealed class ModbusAddressEdgeCaseTests
DirectLogicAddress.SystemVMemoryToPdu(1).ShouldBe((ushort)(DirectLogicAddress.SystemVMemoryBasePdu + 1));
}
/// <summary>Verifies that system V-memory overflow throws an OverflowException.</summary>
[Fact]
public void SystemVMemoryToPdu_overflow_throws_OverflowException()
{
@@ -119,6 +129,7 @@ public sealed class ModbusAddressEdgeCaseTests
// ── MelsecAddress overflow / boundary (Driver.Modbus.Addressing-008) ─────────────────
/// <summary>Verifies that MELSEC hex address parsing overflow throws an OverflowException.</summary>
[Fact]
public void MelsecAddress_ParseHex_overflow_throws_OverflowException()
{
@@ -126,6 +137,7 @@ public sealed class ModbusAddressEdgeCaseTests
Should.Throw<OverflowException>(() => MelsecAddress.XInputToDiscrete("X10000", MelsecFamily.Q_L_iQR));
}
/// <summary>Verifies that MELSEC D-register to holding overflow throws an exception.</summary>
[Fact]
public void MelsecAddress_DRegisterToHolding_overflow_throws_OverflowException()
{
@@ -133,6 +145,7 @@ public sealed class ModbusAddressEdgeCaseTests
Should.Throw<ArgumentException>(() => MelsecAddress.DRegisterToHolding("D65536"));
}
/// <summary>Verifies that MELSEC M-relay to coil overflow throws an OverflowException.</summary>
[Fact]
public void MelsecAddress_MRelayToCoil_overflow_throws_OverflowException()
{
@@ -140,6 +153,7 @@ public sealed class ModbusAddressEdgeCaseTests
Should.Throw<OverflowException>(() => MelsecAddress.MRelayToCoil("M65535", mBankBase: 1));
}
/// <summary>Verifies that MELSEC D-register bank base overflow throws an OverflowException.</summary>
[Fact]
public void MelsecAddress_DRegisterToHolding_bank_base_overflow_throws_OverflowException()
{
@@ -156,6 +170,8 @@ public sealed class ModbusAddressEdgeCaseTests
// unhandled exception out of a TryParse method. These tests assert the defensive contract
// across a broad set of pathological inputs.
/// <summary>Verifies that DL205 address parsing never throws and returns a structured error.</summary>
/// <param name="addr">The address string to parse.</param>
[Theory]
[InlineData("V")] // V prefix with no digits
[InlineData("V99999999999999")] // overflow in user V-memory octal decode
@@ -181,6 +197,8 @@ public sealed class ModbusAddressEdgeCaseTests
error.ShouldNotBeNullOrEmpty();
}
/// <summary>Verifies that MELSEC address parsing never throws and returns a structured error.</summary>
/// <param name="addr">The address string to parse.</param>
[Theory]
[InlineData("D")] // D prefix alone — no digits
[InlineData("D-1")] // negative — would fail ushort.TryParse, must not throw
@@ -207,6 +225,7 @@ public sealed class ModbusAddressEdgeCaseTests
// is the canonical config path. These tests pin that contract so a future grammar change
// can't quietly add a token that conflicts with the array-count slot.
/// <summary>Verifies that the parser's STR grammar does not carry StringByteOrder.</summary>
[Fact]
public void Parser_STR_grammar_does_not_carry_StringByteOrder()
{
@@ -224,6 +243,7 @@ public sealed class ModbusAddressEdgeCaseTests
.ShouldBeNull();
}
/// <summary>Verifies that the parser rejects unknown string byte order tokens in the grammar.</summary>
[Fact]
public void Parser_rejects_unknown_string_byte_order_token_in_grammar()
{