Skip to content

Commit e19b103

Browse files
authored
Add tests for writing multiple writes with a single value (#1402)
* Add test for write_multiple_coils(bool) * Change confusing \n * Add test for write_multiple_registers(int) * Add test for read_write_multiple_registers(int)
1 parent e752b6d commit e19b103

File tree

3 files changed

+22
-3
lines changed

3 files changed

+22
-3
lines changed

test/test_bit_write_messages.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ def test_bit_write_base_requests(self):
4343
WriteSingleCoilResponse(1, 0xABCD): b"\x00\x01\xff\x00",
4444
WriteMultipleCoilsRequest(1, [True] * 5): b"\x00\x01\x00\x05\x01\x1f",
4545
WriteMultipleCoilsResponse(1, 5): b"\x00\x01\x00\x05",
46+
WriteMultipleCoilsRequest(1, True): b"\x00\x01\x00\x01\x01\x01",
47+
WriteMultipleCoilsResponse(1, 1): b"\x00\x01\x00\x01",
4648
}
4749
for request, expected in iter(messages.items()):
4850
self.assertEqual(request.encode(), expected)
@@ -63,6 +65,13 @@ def test_write_multiple_coils_request(self):
6365
self.assertEqual(request.values, [True] * 5)
6466
self.assertEqual(request.get_response_pdu_size(), 5)
6567

68+
request = WriteMultipleCoilsRequest(1, True)
69+
request.decode(b"\x00\x01\x00\x01\x01\x01")
70+
self.assertEqual(request.byte_count, 1)
71+
self.assertEqual(request.address, 1)
72+
self.assertEqual(request.values, [True])
73+
self.assertEqual(request.get_response_pdu_size(), 5)
74+
6675
def test_invalid_write_multiple_coils_request(self):
6776
"""Test write invalid multiple coils."""
6877
request = WriteMultipleCoilsRequest(1, None)

test/test_register_read_messages.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ def setUp(self):
3838
"read_address": 1,
3939
"read_count": 5,
4040
"write_address": 1,
41-
"write_registers": [0x00] * 5,
4241
}
4342
self.value = 0xABCD
4443
self.values = [0xA, 0xB, 0xC]
@@ -47,10 +46,16 @@ def setUp(self):
4746
ReadHoldingRegistersRequest(1, 5): b"\x00\x01\x00\x05",
4847
ReadInputRegistersRequest(1, 5): b"\x00\x01\x00\x05",
4948
ReadWriteMultipleRegistersRequest(
50-
**arguments
49+
write_registers=[0x00] * 5,
50+
**arguments,
5151
): b"\x00\x01\x00\x05\x00\x01\x00"
5252
b"\x05\x0a\x00\x00\x00\x00\x00"
5353
b"\x00\x00\x00\x00\x00",
54+
ReadWriteMultipleRegistersRequest(
55+
write_registers=0xAB,
56+
**arguments,
57+
): b"\x00\x01\x00\x05\x00\x01\x00"
58+
b"\x01\x02\x00\xAB",
5459
}
5560
self.response_read = {
5661
ReadRegistersResponseBase(self.values): TEST_MESSAGE,

test/test_register_write_messages.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ def setUp(self):
4141
WriteSingleRegisterResponse(1, self.value): b"\x00\x01\xab\xcd",
4242
WriteMultipleRegistersRequest(
4343
1, self.values
44-
): b"\x00\x01\x00\x03\x06\x00\n\x00\x0b\x00\x0c",
44+
): b"\x00\x01\x00\x03\x06\x00\x0a\x00\x0b\x00\x0c",
45+
WriteMultipleRegistersRequest(1, 0xD): b"\x00\x01\x00\x01\x02\x00\x0D",
4546
WriteMultipleRegistersResponse(1, 5): b"\x00\x01\x00\x05",
4647
WriteSingleRegisterRequest(
4748
1, self.payload[0], skip_encode=True
@@ -117,6 +118,10 @@ def test_write_multiple_register_request(self):
117118
result = request.execute(context)
118119
self.assertEqual(result.function_code, request.function_code)
119120

121+
request = WriteMultipleRegistersRequest(0x00, 0x00)
122+
result = request.execute(context)
123+
self.assertEqual(result.function_code, request.function_code)
124+
120125
# -----------------------------------------------------------------------#
121126
# Mask Write Register Request
122127
# -----------------------------------------------------------------------#

0 commit comments

Comments
 (0)