@@ -592,12 +592,46 @@ def test_client_tls_connect2():
592592)
593593def 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
603637def test_client_mixin_convert_fail ():
0 commit comments