docs: complete XML doc comments via fixdocs (2757 to 131 findings)
Add missing <returns>/<param>/<summary>/<typeparam> tags and clean up misused inheritdoc across 481 files so the documented API surface is complete. Documentation-only (zero code lines changed). The 131 remaining findings are inheritdoc-style warnings deliberately left to preserve hand-written implementation rationale (plan-decision notes, race-condition explanations).
This commit is contained in:
+4
@@ -36,6 +36,7 @@ public sealed class AddressingGrammarTests
|
||||
}
|
||||
|
||||
/// <summary>Verifies that 5-digit and 6-digit Modicon formats map to the same wire offset.</summary>
|
||||
/// <returns>A task that represents the asynchronous test operation.</returns>
|
||||
[Fact]
|
||||
public async Task Modicon_5_And_6_Digit_Both_Map_To_Same_Wire_Offset()
|
||||
{
|
||||
@@ -54,6 +55,7 @@ public sealed class AddressingGrammarTests
|
||||
}
|
||||
|
||||
/// <summary>Verifies that Float32 values roundtrip correctly with CDAB byte order.</summary>
|
||||
/// <returns>A task that represents the asynchronous test operation.</returns>
|
||||
[Fact]
|
||||
public async Task Float32_With_CDAB_Roundtrips_Through_Wire()
|
||||
{
|
||||
@@ -76,6 +78,7 @@ public sealed class AddressingGrammarTests
|
||||
}
|
||||
|
||||
/// <summary>Verifies that Int16 array reads surface as typed arrays.</summary>
|
||||
/// <returns>A task that represents the asynchronous test operation.</returns>
|
||||
[Fact]
|
||||
public async Task Int16_Array_Reads_Surface_As_Typed_Array()
|
||||
{
|
||||
@@ -93,6 +96,7 @@ public sealed class AddressingGrammarTests
|
||||
}
|
||||
|
||||
/// <summary>Verifies that block read coalescing reduces PDU count end-to-end.</summary>
|
||||
/// <returns>A task that represents the asynchronous test operation.</returns>
|
||||
[Fact]
|
||||
public async Task Block_Read_Coalescing_Reduces_PDU_Count_End_To_End()
|
||||
{
|
||||
|
||||
+1
@@ -15,6 +15,7 @@ namespace ZB.MOM.WW.OtOpcUa.Driver.Modbus.IntegrationTests.DL205;
|
||||
public sealed class DL205BcdQuirkTests(ModbusSimulatorFixture sim)
|
||||
{
|
||||
/// <summary>Verifies DL205 binary-coded-decimal register decodes as decimal value 1234.</summary>
|
||||
/// <returns>A task that represents the asynchronous test.</returns>
|
||||
[Fact]
|
||||
public async Task DL205_BCD16_decodes_HR1072_as_decimal_1234()
|
||||
{
|
||||
|
||||
+3
@@ -15,6 +15,7 @@ namespace ZB.MOM.WW.OtOpcUa.Driver.Modbus.IntegrationTests.DL205;
|
||||
public sealed class DL205CoilMappingTests(ModbusSimulatorFixture sim)
|
||||
{
|
||||
/// <summary>Verifies that DirectLOGIC Y0 output maps to Modbus coil 2048.</summary>
|
||||
/// <returns>A task that represents the asynchronous test.</returns>
|
||||
[Fact]
|
||||
public async Task DL260_Y0_maps_to_coil_2048()
|
||||
{
|
||||
@@ -42,6 +43,7 @@ public sealed class DL205CoilMappingTests(ModbusSimulatorFixture sim)
|
||||
}
|
||||
|
||||
/// <summary>Verifies that DirectLOGIC C0 relay maps to Modbus coil 3072.</summary>
|
||||
/// <returns>A task that represents the asynchronous test.</returns>
|
||||
[Fact]
|
||||
public async Task DL260_C0_maps_to_coil_3072()
|
||||
{
|
||||
@@ -69,6 +71,7 @@ public sealed class DL205CoilMappingTests(ModbusSimulatorFixture sim)
|
||||
}
|
||||
|
||||
/// <summary>Verifies that a scratch DirectLOGIC C relay supports write and read operations.</summary>
|
||||
/// <returns>A task that represents the asynchronous test.</returns>
|
||||
[Fact]
|
||||
public async Task DL260_scratch_Crelay_supports_write_then_read()
|
||||
{
|
||||
|
||||
+1
@@ -17,6 +17,7 @@ namespace ZB.MOM.WW.OtOpcUa.Driver.Modbus.IntegrationTests.DL205;
|
||||
public sealed class DL205ExceptionCodeTests(ModbusSimulatorFixture sim)
|
||||
{
|
||||
/// <summary>Verifies that DL205 FC03 reads at unmapped registers return BadOutOfRange status.</summary>
|
||||
/// <returns>A task that represents the asynchronous test operation.</returns>
|
||||
[Fact]
|
||||
public async Task DL205_FC03_at_unmapped_register_returns_BadOutOfRange()
|
||||
{
|
||||
|
||||
+1
@@ -17,6 +17,7 @@ namespace ZB.MOM.WW.OtOpcUa.Driver.Modbus.IntegrationTests.DL205;
|
||||
public sealed class DL205FloatCdabQuirkTests(ModbusSimulatorFixture sim)
|
||||
{
|
||||
/// <summary>Verifies that DL205 float32 CDAB word order correctly decodes 1.5f from HR1056.</summary>
|
||||
/// <returns>A task that represents the asynchronous operation.</returns>
|
||||
[Fact]
|
||||
public async Task DL205_Float32_CDAB_decodes_1_5f_from_HR1056()
|
||||
{
|
||||
|
||||
+1
@@ -26,6 +26,7 @@ namespace ZB.MOM.WW.OtOpcUa.Driver.Modbus.IntegrationTests.DL205;
|
||||
public sealed class DL205SmokeTests(ModbusSimulatorFixture sim)
|
||||
{
|
||||
/// <summary>Verifies that DL205 roundtrip write then read of holding register succeeds.</summary>
|
||||
/// <returns>A task that represents the asynchronous operation.</returns>
|
||||
[Fact]
|
||||
public async Task DL205_roundtrip_write_then_read_of_holding_register()
|
||||
{
|
||||
|
||||
+1
@@ -24,6 +24,7 @@ namespace ZB.MOM.WW.OtOpcUa.Driver.Modbus.IntegrationTests.DL205;
|
||||
public sealed class DL205StringQuirkTests(ModbusSimulatorFixture sim)
|
||||
{
|
||||
/// <summary>Verifies that DL205 low-byte-first string packing correctly decodes "Hello" from HR1040.</summary>
|
||||
/// <returns>A task that represents the asynchronous operation.</returns>
|
||||
[Fact]
|
||||
public async Task DL205_string_low_byte_first_decodes_Hello_from_HR1040()
|
||||
{
|
||||
|
||||
+2
@@ -17,6 +17,7 @@ namespace ZB.MOM.WW.OtOpcUa.Driver.Modbus.IntegrationTests.DL205;
|
||||
public sealed class DL205VMemoryQuirkTests(ModbusSimulatorFixture sim)
|
||||
{
|
||||
/// <summary>Verifies that DL205 V2000 user memory octal address resolves to PDU address 0x0400.</summary>
|
||||
/// <returns>A task that represents the asynchronous test operation.</returns>
|
||||
[Fact]
|
||||
public async Task DL205_V2000_user_memory_resolves_to_PDU_0x0400_marker()
|
||||
{
|
||||
@@ -53,6 +54,7 @@ public sealed class DL205VMemoryQuirkTests(ModbusSimulatorFixture sim)
|
||||
}
|
||||
|
||||
/// <summary>Verifies that DL205 V40400 system memory address resolves to PDU address 0x2100.</summary>
|
||||
/// <returns>A task that represents the asynchronous test operation.</returns>
|
||||
[Fact]
|
||||
public async Task DL205_V40400_system_memory_resolves_to_PDU_0x2100_marker()
|
||||
{
|
||||
|
||||
+1
@@ -22,6 +22,7 @@ namespace ZB.MOM.WW.OtOpcUa.Driver.Modbus.IntegrationTests.DL205;
|
||||
public sealed class DL205XInputTests(ModbusSimulatorFixture sim)
|
||||
{
|
||||
/// <summary>Verifies that DL260 X20 octal maps to discrete input 16 and reads the ON state.</summary>
|
||||
/// <returns>A task that represents the asynchronous operation.</returns>
|
||||
[Fact]
|
||||
public async Task DL260_X20_octal_maps_to_DiscreteInput_16_and_reads_ON()
|
||||
{
|
||||
|
||||
+3
@@ -64,6 +64,7 @@ public sealed class ExceptionInjectionTests(ModbusSimulatorFixture sim)
|
||||
/// <param name="address">The Modbus register address to read.</param>
|
||||
/// <param name="expectedStatus">The expected OPC UA status code.</param>
|
||||
/// <param name="scenario">Scenario description for assertion messages.</param>
|
||||
/// <returns>A task that represents the asynchronous test operation.</returns>
|
||||
[Theory]
|
||||
[InlineData(1000, StatusBadNotSupported, "exc 0x01 (Illegal Function) -> BadNotSupported")]
|
||||
[InlineData(1001, StatusBadOutOfRange, "exc 0x02 (Illegal Data Address) -> BadOutOfRange")]
|
||||
@@ -82,6 +83,7 @@ public sealed class ExceptionInjectionTests(ModbusSimulatorFixture sim)
|
||||
}
|
||||
|
||||
/// <summary>Verifies that reads at non-injected addresses return Good status.</summary>
|
||||
/// <returns>A task that represents the asynchronous test operation.</returns>
|
||||
[Fact]
|
||||
public async Task FC03_read_at_non_injected_address_returns_Good()
|
||||
{
|
||||
@@ -98,6 +100,7 @@ public sealed class ExceptionInjectionTests(ModbusSimulatorFixture sim)
|
||||
/// <param name="address">The Modbus register address to write.</param>
|
||||
/// <param name="expectedStatus">The expected OPC UA status code.</param>
|
||||
/// <param name="scenario">Scenario description for assertion messages.</param>
|
||||
/// <returns>A task that represents the asynchronous test operation.</returns>
|
||||
[Theory]
|
||||
[InlineData(2000, StatusBadDeviceFailure, "exc 0x04 on FC06 -> BadDeviceFailure (CPU in PROGRAM mode)")]
|
||||
[InlineData(2001, StatusBadDeviceFailure, "exc 0x06 on FC06 -> BadDeviceFailure (Server Busy)")]
|
||||
|
||||
+1
@@ -26,6 +26,7 @@ public static class MitsubishiProfile
|
||||
/// <summary>Builds Modbus driver options configured for the Mitsubishi profile.</summary>
|
||||
/// <param name="host">The Modbus server hostname or IP address.</param>
|
||||
/// <param name="port">The Modbus server port number.</param>
|
||||
/// <returns>A <see cref="ModbusDriverOptions"/> instance configured for the Mitsubishi profile.</returns>
|
||||
public static ModbusDriverOptions BuildOptions(string host, int port) => new()
|
||||
{
|
||||
Host = host,
|
||||
|
||||
+6
@@ -20,6 +20,7 @@ namespace ZB.MOM.WW.OtOpcUa.Driver.Modbus.IntegrationTests.Mitsubishi;
|
||||
public sealed class MitsubishiQuirkTests(ModbusSimulatorFixture sim)
|
||||
{
|
||||
/// <summary>Verifies that Mitsubishi D0 register fingerprint reads the expected value 0x1234.</summary>
|
||||
/// <returns>A task that represents the asynchronous operation.</returns>
|
||||
[Fact]
|
||||
public async Task Mitsubishi_D0_fingerprint_reads_0x1234()
|
||||
{
|
||||
@@ -36,6 +37,7 @@ public sealed class MitsubishiQuirkTests(ModbusSimulatorFixture sim)
|
||||
}
|
||||
|
||||
/// <summary>Verifies that Mitsubishi Float32 with CDAB word order decodes correctly to 1.5 from D100.</summary>
|
||||
/// <returns>A task that represents the asynchronous operation.</returns>
|
||||
[Fact]
|
||||
public async Task Mitsubishi_Float32_CDAB_decodes_1_5f_from_D100()
|
||||
{
|
||||
@@ -62,6 +64,7 @@ public sealed class MitsubishiQuirkTests(ModbusSimulatorFixture sim)
|
||||
}
|
||||
|
||||
/// <summary>Verifies that Mitsubishi D registers store binary values, not BCD.</summary>
|
||||
/// <returns>A task that represents the asynchronous operation.</returns>
|
||||
[Fact]
|
||||
public async Task Mitsubishi_D10_is_binary_not_BCD()
|
||||
{
|
||||
@@ -81,6 +84,7 @@ public sealed class MitsubishiQuirkTests(ModbusSimulatorFixture sim)
|
||||
}
|
||||
|
||||
/// <summary>Verifies that reading a binary D register as BCD throws when the value contains non-decimal nibbles.</summary>
|
||||
/// <returns>A task that represents the asynchronous operation.</returns>
|
||||
[Fact]
|
||||
public async Task Mitsubishi_D10_as_BCD_throws_because_nibble_is_non_decimal()
|
||||
{
|
||||
@@ -102,6 +106,7 @@ public sealed class MitsubishiQuirkTests(ModbusSimulatorFixture sim)
|
||||
}
|
||||
|
||||
/// <summary>Verifies that Mitsubishi Q/L/iQ-R X inputs use hex addressing and X210 maps correctly.</summary>
|
||||
/// <returns>A task that represents the asynchronous operation.</returns>
|
||||
[Fact]
|
||||
public async Task Mitsubishi_QLiQR_X210_hex_maps_to_DI_528_reads_ON()
|
||||
{
|
||||
@@ -134,6 +139,7 @@ public sealed class MitsubishiQuirkTests(ModbusSimulatorFixture sim)
|
||||
}
|
||||
|
||||
/// <summary>Verifies that Mitsubishi M512 relay maps to coil address 512 and reads ON.</summary>
|
||||
/// <returns>A task that represents the asynchronous operation.</returns>
|
||||
[Fact]
|
||||
public async Task Mitsubishi_M512_maps_to_coil_512_reads_ON()
|
||||
{
|
||||
|
||||
+1
@@ -16,6 +16,7 @@ namespace ZB.MOM.WW.OtOpcUa.Driver.Modbus.IntegrationTests.Mitsubishi;
|
||||
public sealed class MitsubishiSmokeTests(ModbusSimulatorFixture sim)
|
||||
{
|
||||
/// <summary>Verifies end-to-end write and read of a Mitsubishi holding register via the Modbus driver.</summary>
|
||||
/// <returns>A task that represents the asynchronous operation.</returns>
|
||||
[Fact]
|
||||
public async Task Mitsubishi_roundtrip_write_then_read_of_holding_register()
|
||||
{
|
||||
|
||||
+2
-1
@@ -82,7 +82,8 @@ public sealed class ModbusSimulatorFixture : IAsyncDisposable
|
||||
}
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
/// <summary>Disposes the fixture asynchronously (no-op for this fixture).</summary>
|
||||
/// <returns>A completed value task.</returns>
|
||||
public ValueTask DisposeAsync() => ValueTask.CompletedTask;
|
||||
}
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@ namespace ZB.MOM.WW.OtOpcUa.Driver.Modbus.IntegrationTests.S7;
|
||||
public sealed class S7_1500SmokeTests(ModbusSimulatorFixture sim)
|
||||
{
|
||||
/// <summary>Verifies that an S7-1500 roundtrip write then read of a holding register succeeds.</summary>
|
||||
/// <returns>A task that represents the asynchronous test.</returns>
|
||||
[Fact]
|
||||
public async Task S7_1500_roundtrip_write_then_read_of_holding_register()
|
||||
{
|
||||
|
||||
@@ -17,6 +17,7 @@ namespace ZB.MOM.WW.OtOpcUa.Driver.Modbus.IntegrationTests.S7;
|
||||
public sealed class S7_ByteOrderTests(ModbusSimulatorFixture sim)
|
||||
{
|
||||
/// <summary>Verifies that S7 Float32 with ABCD byte order correctly decodes 1.5f from HR100.</summary>
|
||||
/// <returns>A task that represents the asynchronous operation.</returns>
|
||||
[Fact]
|
||||
public async Task S7_Float32_ABCD_decodes_1_5f_from_HR100()
|
||||
{
|
||||
@@ -63,6 +64,7 @@ public sealed class S7_ByteOrderTests(ModbusSimulatorFixture sim)
|
||||
}
|
||||
|
||||
/// <summary>Verifies that S7 Int32 with ABCD byte order correctly decodes 0x12345678 from HR300.</summary>
|
||||
/// <returns>A task that represents the asynchronous operation.</returns>
|
||||
[Fact]
|
||||
public async Task S7_Int32_ABCD_decodes_0x12345678_from_HR300()
|
||||
{
|
||||
@@ -98,6 +100,7 @@ public sealed class S7_ByteOrderTests(ModbusSimulatorFixture sim)
|
||||
}
|
||||
|
||||
/// <summary>Verifies that S7 DB1 fingerprint marker reads 0xABCD from HR0.</summary>
|
||||
/// <returns>A task that represents the asynchronous operation.</returns>
|
||||
[Fact]
|
||||
public async Task S7_DB1_fingerprint_marker_at_HR0_reads_0xABCD()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user