From 3692243fdc4fedbcd7c929f7fb1068a99785833b Mon Sep 17 00:00:00 2001 From: jan iversen Date: Tue, 11 Jun 2024 13:32:53 +0200 Subject: [PATCH 1/2] test convert registers 1234... --- test/sub_client/test_client.py | 38 ++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/test/sub_client/test_client.py b/test/sub_client/test_client.py index 360d22fb9..96afd462b 100755 --- a/test/sub_client/test_client.py +++ b/test/sub_client/test_client.py @@ -592,12 +592,46 @@ def test_client_tls_connect2(): ) def test_client_mixin_convert(datatype, registers, value): """Test converter methods.""" - regs = ModbusClientMixin.convert_to_registers(value, datatype) - result = ModbusClientMixin.convert_from_registers(regs, datatype) + result = ModbusClientMixin.convert_from_registers(registers, datatype) if datatype == ModbusClientMixin.DATATYPE.FLOAT32: result = round(result, 6) + assert result == value + regs = ModbusClientMixin.convert_to_registers(value, datatype) assert regs == registers + + +@pytest.mark.parametrize( + ("datatype", "value", "registers"), + [ + (ModbusClientMixin.DATATYPE.STRING, "0123", [b'\x30\x31', b'\x32\x33']), + (ModbusClientMixin.DATATYPE.UINT16, 258, [b'\x01\x02']), + (ModbusClientMixin.DATATYPE.INT16, -32510, [b'\x81\x02']), + (ModbusClientMixin.DATATYPE.UINT32, 16909060, [b'\x01\x02', b'\x03\x04']), + (ModbusClientMixin.DATATYPE.INT32, -2130574588, [b'\x81\x02', b'\x03\x04']), + ( + ModbusClientMixin.DATATYPE.UINT64, + 72623859790382856, + [b'\x01\x02', b'\x03\x04', b'\x05\x06', b'\x07\x08'], + ), + ( + ModbusClientMixin.DATATYPE.INT64, + -9150748177064392952, + [b'\x81\x02', b'\x03\x04', b'\x05\x06', b'\x07\x08'], + ), + (ModbusClientMixin.DATATYPE.FLOAT32, 8.125736, [b'\x41\x02', b'\x03\x04']), + (ModbusClientMixin.DATATYPE.FLOAT64, 147552.502453, [b'\x41\x02', b'\x03\x04', b'\x05\x06', b'\x14\x16']), + ], +) +def test_client_mixin_convert_1234(datatype, registers, value): + """Test converter methods.""" + for i in range(0, len(registers)): + registers[i] = int.from_bytes(registers[i]) + regs = ModbusClientMixin.convert_to_registers(value, datatype) + result = ModbusClientMixin.convert_from_registers(regs, datatype) + if datatype == ModbusClientMixin.DATATYPE.FLOAT32 or datatype == ModbusClientMixin.DATATYPE.FLOAT64: + result = round(result, 6) assert result == value + assert regs == registers def test_client_mixin_convert_fail(): From 3fa26a7684989b5f964517f5e192513abe47b0a0 Mon Sep 17 00:00:00 2001 From: jan iversen Date: Tue, 11 Jun 2024 20:25:52 +0200 Subject: [PATCH 2/2] python 3.9 --- test/sub_client/test_client.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/sub_client/test_client.py b/test/sub_client/test_client.py index 96afd462b..04ea7828f 100755 --- a/test/sub_client/test_client.py +++ b/test/sub_client/test_client.py @@ -625,7 +625,7 @@ def test_client_mixin_convert(datatype, registers, value): def test_client_mixin_convert_1234(datatype, registers, value): """Test converter methods.""" for i in range(0, len(registers)): - registers[i] = int.from_bytes(registers[i]) + registers[i] = int.from_bytes(registers[i], "big") regs = ModbusClientMixin.convert_to_registers(value, datatype) result = ModbusClientMixin.convert_from_registers(regs, datatype) if datatype == ModbusClientMixin.DATATYPE.FLOAT32 or datatype == ModbusClientMixin.DATATYPE.FLOAT64: