Skip to content

Commit 98d1d4a

Browse files
authored
test convert registers with 1234.... (#2217)
1 parent 5bddf9e commit 98d1d4a

File tree

1 file changed

+36
-2
lines changed

1 file changed

+36
-2
lines changed

test/sub_client/test_client.py

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -592,12 +592,46 @@ def test_client_tls_connect2():
592592
)
593593
def test_client_mixin_convert(datatype, registers, value):
594594
"""Test converter methods."""
595-
regs = ModbusClientMixin.convert_to_registers(value, datatype)
596-
result = ModbusClientMixin.convert_from_registers(regs, datatype)
595+
result = ModbusClientMixin.convert_from_registers(registers, datatype)
597596
if datatype == ModbusClientMixin.DATATYPE.FLOAT32:
598597
result = round(result, 6)
598+
assert result == value
599+
regs = ModbusClientMixin.convert_to_registers(value, datatype)
599600
assert regs == registers
601+
602+
603+
@pytest.mark.parametrize(
604+
("datatype", "value", "registers"),
605+
[
606+
(ModbusClientMixin.DATATYPE.STRING, "0123", [b'\x30\x31', b'\x32\x33']),
607+
(ModbusClientMixin.DATATYPE.UINT16, 258, [b'\x01\x02']),
608+
(ModbusClientMixin.DATATYPE.INT16, -32510, [b'\x81\x02']),
609+
(ModbusClientMixin.DATATYPE.UINT32, 16909060, [b'\x01\x02', b'\x03\x04']),
610+
(ModbusClientMixin.DATATYPE.INT32, -2130574588, [b'\x81\x02', b'\x03\x04']),
611+
(
612+
ModbusClientMixin.DATATYPE.UINT64,
613+
72623859790382856,
614+
[b'\x01\x02', b'\x03\x04', b'\x05\x06', b'\x07\x08'],
615+
),
616+
(
617+
ModbusClientMixin.DATATYPE.INT64,
618+
-9150748177064392952,
619+
[b'\x81\x02', b'\x03\x04', b'\x05\x06', b'\x07\x08'],
620+
),
621+
(ModbusClientMixin.DATATYPE.FLOAT32, 8.125736, [b'\x41\x02', b'\x03\x04']),
622+
(ModbusClientMixin.DATATYPE.FLOAT64, 147552.502453, [b'\x41\x02', b'\x03\x04', b'\x05\x06', b'\x14\x16']),
623+
],
624+
)
625+
def test_client_mixin_convert_1234(datatype, registers, value):
626+
"""Test converter methods."""
627+
for i in range(0, len(registers)):
628+
registers[i] = int.from_bytes(registers[i], "big")
629+
regs = ModbusClientMixin.convert_to_registers(value, datatype)
630+
result = ModbusClientMixin.convert_from_registers(regs, datatype)
631+
if datatype == ModbusClientMixin.DATATYPE.FLOAT32 or datatype == ModbusClientMixin.DATATYPE.FLOAT64:
632+
result = round(result, 6)
600633
assert result == value
634+
assert regs == registers
601635

602636

603637
def test_client_mixin_convert_fail():

0 commit comments

Comments
 (0)