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
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:
+46
@@ -9,6 +9,11 @@ public sealed class ModbusAddressParserTests
|
||||
{
|
||||
// ----- Bare Modicon-only forms inherit #136 behaviour; one sanity row per region. -----
|
||||
|
||||
/// <summary>Verifies that bare Modicon address forms inherit their data type from region defaults.</summary>
|
||||
/// <param name="addr">The Modicon address string to parse.</param>
|
||||
/// <param name="region">The expected Modbus region.</param>
|
||||
/// <param name="offset">The expected zero-based register offset.</param>
|
||||
/// <param name="type">The expected data type inferred from the region.</param>
|
||||
[Theory]
|
||||
[InlineData("40001", ModbusRegion.HoldingRegisters, 0, ModbusDataType.Int16)]
|
||||
[InlineData("400001", ModbusRegion.HoldingRegisters, 0, ModbusDataType.Int16)]
|
||||
@@ -29,6 +34,10 @@ public sealed class ModbusAddressParserTests
|
||||
|
||||
// ----- Mnemonic forms — HR / IR / C / DI -----
|
||||
|
||||
/// <summary>Verifies that mnemonic region forms (HR, IR, C, DI) parse correctly.</summary>
|
||||
/// <param name="addr">The mnemonic address string to parse.</param>
|
||||
/// <param name="region">The expected Modbus region.</param>
|
||||
/// <param name="offset">The expected zero-based register offset.</param>
|
||||
[Theory]
|
||||
[InlineData("HR1", ModbusRegion.HoldingRegisters, 0)]
|
||||
[InlineData("HR65536", ModbusRegion.HoldingRegisters, 65535)]
|
||||
@@ -46,6 +55,9 @@ public sealed class ModbusAddressParserTests
|
||||
|
||||
// ----- Bit suffix .N -----
|
||||
|
||||
/// <summary>Verifies that bit suffix notation sets the expected bit position and data type.</summary>
|
||||
/// <param name="addr">The address string with bit suffix to parse.</param>
|
||||
/// <param name="expectedBit">The expected bit index within the register.</param>
|
||||
[Theory]
|
||||
[InlineData("40001.0", 0)]
|
||||
[InlineData("40001.5", 5)]
|
||||
@@ -58,6 +70,7 @@ public sealed class ModbusAddressParserTests
|
||||
p.DataType.ShouldBe(ModbusDataType.BitInRegister);
|
||||
}
|
||||
|
||||
/// <summary>Verifies that bit suffix notation combined with explicit type specification is rejected.</summary>
|
||||
[Fact]
|
||||
public void Bit_Plus_Explicit_Type_Rejected()
|
||||
{
|
||||
@@ -65,6 +78,7 @@ public sealed class ModbusAddressParserTests
|
||||
.Message.ShouldContain("Bit suffix");
|
||||
}
|
||||
|
||||
/// <summary>Verifies that bit positions outside the valid 0-15 range are rejected.</summary>
|
||||
[Fact]
|
||||
public void Bit_Above_15_Rejected()
|
||||
{
|
||||
@@ -80,6 +94,9 @@ public sealed class ModbusAddressParserTests
|
||||
// `:BCD_32` for 32-bit BCD (Ignition HRBCD_32). The pre-#146 `:DI`/`:L`/`:UDI`/`:UL`/
|
||||
// `:LI`/`:ULI`/`:LBCD` aliases are removed — they conflict with the Wonderware mapping
|
||||
// and have no clear vendor precedent.
|
||||
/// <summary>Verifies that type code suffixes parse to the expected data type.</summary>
|
||||
/// <param name="addr">The address string with type code suffix to parse.</param>
|
||||
/// <param name="expected">The expected data type.</param>
|
||||
[Theory]
|
||||
[InlineData("40001:BOOL", ModbusDataType.Bool)]
|
||||
[InlineData("40001:S", ModbusDataType.Int16)]
|
||||
@@ -99,6 +116,8 @@ public sealed class ModbusAddressParserTests
|
||||
ModbusAddressParser.Parse(addr).DataType.ShouldBe(expected);
|
||||
}
|
||||
|
||||
/// <summary>Verifies that pre-#146 type code aliases are rejected with a clear diagnostic.</summary>
|
||||
/// <param name="addr">The address string containing a removed alias type code.</param>
|
||||
[Theory]
|
||||
[InlineData("40001:DI")] // pre-#146 alias removed
|
||||
[InlineData("40001:L")]
|
||||
@@ -116,6 +135,9 @@ public sealed class ModbusAddressParserTests
|
||||
.Message.ShouldContain("Unknown type code");
|
||||
}
|
||||
|
||||
/// <summary>Verifies that string type notation carries the expected string length.</summary>
|
||||
/// <param name="addr">The address string with STR type and length to parse.</param>
|
||||
/// <param name="expectedLen">The expected string length.</param>
|
||||
[Theory]
|
||||
[InlineData("40001:STR1", 1)]
|
||||
[InlineData("40001:STR20", 20)]
|
||||
@@ -127,6 +149,7 @@ public sealed class ModbusAddressParserTests
|
||||
p.StringLength.ShouldBe((ushort)expectedLen);
|
||||
}
|
||||
|
||||
/// <summary>Verifies that string type notation without length is rejected.</summary>
|
||||
[Fact]
|
||||
public void STR_Without_Length_Rejected()
|
||||
{
|
||||
@@ -134,6 +157,7 @@ public sealed class ModbusAddressParserTests
|
||||
.Message.ShouldContain("STR");
|
||||
}
|
||||
|
||||
/// <summary>Verifies that string length of zero is rejected.</summary>
|
||||
[Fact]
|
||||
public void STR_Length_Zero_Rejected()
|
||||
{
|
||||
@@ -141,6 +165,7 @@ public sealed class ModbusAddressParserTests
|
||||
.Message.ShouldContain("positive");
|
||||
}
|
||||
|
||||
/// <summary>Verifies that unknown type codes are rejected with a catalog of valid codes.</summary>
|
||||
[Fact]
|
||||
public void Unknown_Type_Code_Rejected_With_Catalog()
|
||||
{
|
||||
@@ -150,6 +175,7 @@ public sealed class ModbusAddressParserTests
|
||||
|
||||
// ----- Region-type compatibility -----
|
||||
|
||||
/// <summary>Verifies that float types are rejected for coil region.</summary>
|
||||
[Fact]
|
||||
public void Coils_With_Float_Type_Rejected()
|
||||
{
|
||||
@@ -157,6 +183,7 @@ public sealed class ModbusAddressParserTests
|
||||
.Message.ShouldContain("only supports Bool");
|
||||
}
|
||||
|
||||
/// <summary>Verifies that integer types are rejected for discrete input region.</summary>
|
||||
[Fact]
|
||||
public void DiscreteInputs_With_Int_Type_Rejected()
|
||||
{
|
||||
@@ -166,6 +193,9 @@ public sealed class ModbusAddressParserTests
|
||||
|
||||
// ----- Byte order modifiers — all four -----
|
||||
|
||||
/// <summary>Verifies that byte order modifiers parse to the expected ordering.</summary>
|
||||
/// <param name="addr">The address string with byte order modifier to parse.</param>
|
||||
/// <param name="expected">The expected byte order.</param>
|
||||
[Theory]
|
||||
[InlineData("40001:F:ABCD", ModbusByteOrder.BigEndian)]
|
||||
[InlineData("40001:F:CDAB", ModbusByteOrder.WordSwap)]
|
||||
@@ -177,6 +207,7 @@ public sealed class ModbusAddressParserTests
|
||||
ModbusAddressParser.Parse(addr).ByteOrder.ShouldBe(expected);
|
||||
}
|
||||
|
||||
/// <summary>Verifies that unknown byte order codes are rejected with a catalog of valid codes.</summary>
|
||||
[Fact]
|
||||
public void Unknown_Byte_Order_Rejected_With_Catalog()
|
||||
{
|
||||
@@ -184,6 +215,7 @@ public sealed class ModbusAddressParserTests
|
||||
.Message.ShouldContain("Valid: ABCD, CDAB, BADC, DCBA");
|
||||
}
|
||||
|
||||
/// <summary>Verifies that empty byte order field defaults to big-endian.</summary>
|
||||
[Fact]
|
||||
public void Empty_Order_Field_Means_Default()
|
||||
{
|
||||
@@ -198,6 +230,9 @@ public sealed class ModbusAddressParserTests
|
||||
|
||||
// ----- Array count -----
|
||||
|
||||
/// <summary>Verifies that array count notation parses to the expected count.</summary>
|
||||
/// <param name="addr">The address string with array count to parse.</param>
|
||||
/// <param name="expectedCount">The expected array element count.</param>
|
||||
[Theory]
|
||||
[InlineData("40001:I:ABCD:1", 1)]
|
||||
[InlineData("40001:F:5", 5)]
|
||||
@@ -208,6 +243,7 @@ public sealed class ModbusAddressParserTests
|
||||
ModbusAddressParser.Parse(addr).ArrayCount.ShouldBe(expectedCount);
|
||||
}
|
||||
|
||||
/// <summary>Verifies that array count of zero is rejected.</summary>
|
||||
[Fact]
|
||||
public void Array_Count_Zero_Rejected()
|
||||
{
|
||||
@@ -215,6 +251,7 @@ public sealed class ModbusAddressParserTests
|
||||
.Message.ShouldContain("positive");
|
||||
}
|
||||
|
||||
/// <summary>Verifies that non-numeric array count is rejected.</summary>
|
||||
[Fact]
|
||||
public void Array_Count_NonNumeric_Rejected()
|
||||
{
|
||||
@@ -222,6 +259,7 @@ public sealed class ModbusAddressParserTests
|
||||
.Message.ShouldContain("positive");
|
||||
}
|
||||
|
||||
/// <summary>Verifies that bit suffix combined with array count is rejected.</summary>
|
||||
[Fact]
|
||||
public void Bit_Plus_Array_Rejected()
|
||||
{
|
||||
@@ -231,6 +269,7 @@ public sealed class ModbusAddressParserTests
|
||||
|
||||
// ----- Composition / examples -----
|
||||
|
||||
/// <summary>Verifies parsing of float with word-swap byte ordering.</summary>
|
||||
[Fact]
|
||||
public void Worked_Example_Float_With_Word_Swap()
|
||||
{
|
||||
@@ -242,6 +281,7 @@ public sealed class ModbusAddressParserTests
|
||||
p.ArrayCount.ShouldBeNull();
|
||||
}
|
||||
|
||||
/// <summary>Verifies parsing of Int16 array with explicit type code.</summary>
|
||||
[Fact]
|
||||
public void Worked_Example_Int16_Array()
|
||||
{
|
||||
@@ -253,6 +293,7 @@ public sealed class ModbusAddressParserTests
|
||||
p.ByteOrder.ShouldBe(ModbusByteOrder.BigEndian);
|
||||
}
|
||||
|
||||
/// <summary>Verifies parsing of Int32 array using the :I type code.</summary>
|
||||
[Fact]
|
||||
public void Worked_Example_Int32_Array_Via_I_Code()
|
||||
{
|
||||
@@ -264,6 +305,7 @@ public sealed class ModbusAddressParserTests
|
||||
p.ArrayCount.ShouldBe(10);
|
||||
}
|
||||
|
||||
/// <summary>Verifies parsing of float array with word-swap and 6-digit address.</summary>
|
||||
[Fact]
|
||||
public void Worked_Example_Float_Array_Word_Swap_6_Digit()
|
||||
{
|
||||
@@ -275,6 +317,7 @@ public sealed class ModbusAddressParserTests
|
||||
p.ArrayCount.ShouldBe(5);
|
||||
}
|
||||
|
||||
/// <summary>Verifies parsing of string type with specified length.</summary>
|
||||
[Fact]
|
||||
public void Worked_Example_String_With_Length()
|
||||
{
|
||||
@@ -284,6 +327,7 @@ public sealed class ModbusAddressParserTests
|
||||
p.ArrayCount.ShouldBeNull(); // strings ARE multi-register but they are not "array of string"
|
||||
}
|
||||
|
||||
/// <summary>Verifies that TryParse returns a diagnostic on parse failure.</summary>
|
||||
[Fact]
|
||||
public void TryParse_Returns_Diagnostic_On_Failure()
|
||||
{
|
||||
@@ -292,6 +336,7 @@ public sealed class ModbusAddressParserTests
|
||||
err.ShouldNotBeNull();
|
||||
}
|
||||
|
||||
/// <summary>Verifies that TryParse returns a result on successful parse.</summary>
|
||||
[Fact]
|
||||
public void TryParse_Returns_Result_On_Success()
|
||||
{
|
||||
@@ -304,6 +349,7 @@ public sealed class ModbusAddressParserTests
|
||||
p.ArrayCount.ShouldBe(3);
|
||||
}
|
||||
|
||||
/// <summary>Verifies that addresses with too many colon-separated fields are rejected.</summary>
|
||||
[Fact]
|
||||
public void Too_Many_Colons_Rejected()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user