@@ -576,12 +576,46 @@ def test_client_tls_connect2():
576576)
577577def 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
587621def test_client_mixin_convert_fail ():
0 commit comments