Skip to content

Commit

Permalink
Add tests for writing multiple writes with a single value (#1402)
Browse files Browse the repository at this point in the history
* 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)
  • Loading branch information
alexrudd2 authored Mar 3, 2023
1 parent e752b6d commit e19b103
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 3 deletions.
9 changes: 9 additions & 0 deletions test/test_bit_write_messages.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ def test_bit_write_base_requests(self):
WriteSingleCoilResponse(1, 0xABCD): b"\x00\x01\xff\x00",
WriteMultipleCoilsRequest(1, [True] * 5): b"\x00\x01\x00\x05\x01\x1f",
WriteMultipleCoilsResponse(1, 5): b"\x00\x01\x00\x05",
WriteMultipleCoilsRequest(1, True): b"\x00\x01\x00\x01\x01\x01",
WriteMultipleCoilsResponse(1, 1): b"\x00\x01\x00\x01",
}
for request, expected in iter(messages.items()):
self.assertEqual(request.encode(), expected)
Expand All @@ -63,6 +65,13 @@ def test_write_multiple_coils_request(self):
self.assertEqual(request.values, [True] * 5)
self.assertEqual(request.get_response_pdu_size(), 5)

request = WriteMultipleCoilsRequest(1, True)
request.decode(b"\x00\x01\x00\x01\x01\x01")
self.assertEqual(request.byte_count, 1)
self.assertEqual(request.address, 1)
self.assertEqual(request.values, [True])
self.assertEqual(request.get_response_pdu_size(), 5)

def test_invalid_write_multiple_coils_request(self):
"""Test write invalid multiple coils."""
request = WriteMultipleCoilsRequest(1, None)
Expand Down
9 changes: 7 additions & 2 deletions test/test_register_read_messages.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ def setUp(self):
"read_address": 1,
"read_count": 5,
"write_address": 1,
"write_registers": [0x00] * 5,
}
self.value = 0xABCD
self.values = [0xA, 0xB, 0xC]
Expand All @@ -47,10 +46,16 @@ def setUp(self):
ReadHoldingRegistersRequest(1, 5): b"\x00\x01\x00\x05",
ReadInputRegistersRequest(1, 5): b"\x00\x01\x00\x05",
ReadWriteMultipleRegistersRequest(
**arguments
write_registers=[0x00] * 5,
**arguments,
): b"\x00\x01\x00\x05\x00\x01\x00"
b"\x05\x0a\x00\x00\x00\x00\x00"
b"\x00\x00\x00\x00\x00",
ReadWriteMultipleRegistersRequest(
write_registers=0xAB,
**arguments,
): b"\x00\x01\x00\x05\x00\x01\x00"
b"\x01\x02\x00\xAB",
}
self.response_read = {
ReadRegistersResponseBase(self.values): TEST_MESSAGE,
Expand Down
7 changes: 6 additions & 1 deletion test/test_register_write_messages.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,8 @@ def setUp(self):
WriteSingleRegisterResponse(1, self.value): b"\x00\x01\xab\xcd",
WriteMultipleRegistersRequest(
1, self.values
): b"\x00\x01\x00\x03\x06\x00\n\x00\x0b\x00\x0c",
): b"\x00\x01\x00\x03\x06\x00\x0a\x00\x0b\x00\x0c",
WriteMultipleRegistersRequest(1, 0xD): b"\x00\x01\x00\x01\x02\x00\x0D",
WriteMultipleRegistersResponse(1, 5): b"\x00\x01\x00\x05",
WriteSingleRegisterRequest(
1, self.payload[0], skip_encode=True
Expand Down Expand Up @@ -117,6 +118,10 @@ def test_write_multiple_register_request(self):
result = request.execute(context)
self.assertEqual(result.function_code, request.function_code)

request = WriteMultipleRegistersRequest(0x00, 0x00)
result = request.execute(context)
self.assertEqual(result.function_code, request.function_code)

# -----------------------------------------------------------------------#
# Mask Write Register Request
# -----------------------------------------------------------------------#
Expand Down

0 comments on commit e19b103

Please sign in to comment.