Skip to content

Commit 750f3c7

Browse files
committed
test convert registers with 1234.... (#2217)
1 parent 0f1ba06 commit 750f3c7

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
@@ -576,12 +576,46 @@ def test_client_tls_connect2():
576576
)
577577
def test_client_mixin_convert(datatype, registers, value):
578578
"""Test converter methods."""
579-
regs = ModbusClientMixin.convert_to_registers(value, datatype)
580-
result = ModbusClientMixin.convert_from_registers(regs, datatype)
579+
result = ModbusClientMixin.convert_from_registers(registers, datatype)
581580
if datatype == ModbusClientMixin.DATATYPE.FLOAT32:
582581
result = round(result, 6)
582+
assert result == value
583+
regs = ModbusClientMixin.convert_to_registers(value, datatype)
583584
assert regs == registers
585+
586+
587+
@pytest.mark.parametrize(
588+
("datatype", "value", "registers"),
589+
[
590+
(ModbusClientMixin.DATATYPE.STRING, "0123", [b'\x30\x31', b'\x32\x33']),
591+
(ModbusClientMixin.DATATYPE.UINT16, 258, [b'\x01\x02']),
592+
(ModbusClientMixin.DATATYPE.INT16, -32510, [b'\x81\x02']),
593+
(ModbusClientMixin.DATATYPE.UINT32, 16909060, [b'\x01\x02', b'\x03\x04']),
594+
(ModbusClientMixin.DATATYPE.INT32, -2130574588, [b'\x81\x02', b'\x03\x04']),
595+
(
596+
ModbusClientMixin.DATATYPE.UINT64,
597+
72623859790382856,
598+
[b'\x01\x02', b'\x03\x04', b'\x05\x06', b'\x07\x08'],
599+
),
600+
(
601+
ModbusClientMixin.DATATYPE.INT64,
602+
-9150748177064392952,
603+
[b'\x81\x02', b'\x03\x04', b'\x05\x06', b'\x07\x08'],
604+
),
605+
(ModbusClientMixin.DATATYPE.FLOAT32, 8.125736, [b'\x41\x02', b'\x03\x04']),
606+
(ModbusClientMixin.DATATYPE.FLOAT64, 147552.502453, [b'\x41\x02', b'\x03\x04', b'\x05\x06', b'\x14\x16']),
607+
],
608+
)
609+
def test_client_mixin_convert_1234(datatype, registers, value):
610+
"""Test converter methods."""
611+
for i in range(0, len(registers)):
612+
registers[i] = int.from_bytes(registers[i], "big")
613+
regs = ModbusClientMixin.convert_to_registers(value, datatype)
614+
result = ModbusClientMixin.convert_from_registers(regs, datatype)
615+
if datatype == ModbusClientMixin.DATATYPE.FLOAT32 or datatype == ModbusClientMixin.DATATYPE.FLOAT64:
616+
result = round(result, 6)
584617
assert result == value
618+
assert regs == registers
585619

586620

587621
def test_client_mixin_convert_fail():

0 commit comments

Comments
 (0)