@@ -97,73 +97,85 @@ def fake_execute(_self, _no_response_expected, request):
9797
9898 @pytest .mark .parametrize (("word_order" ), ["big" , "little" , None ])
9999 @pytest .mark .parametrize (
100- ("datatype" , "value" , "registers" ),
100+ ("datatype" , "value" , "registers" , "string_encoding" ),
101101 [
102- (ModbusClientMixin .DATATYPE .STRING , "abcd" , [0x6162 , 0x6364 ]),
103- (ModbusClientMixin .DATATYPE .STRING , "a" , [0x6100 ]),
104- (ModbusClientMixin .DATATYPE .UINT16 , 27123 , [0x69F3 ]),
105- (ModbusClientMixin .DATATYPE .INT16 , - 27123 , [0x960D ]),
106- (ModbusClientMixin .DATATYPE .UINT32 , 27123 , [0x0000 , 0x69F3 ]),
107- (ModbusClientMixin .DATATYPE .UINT32 , 32145678 , [0x01EA , 0x810E ]),
108- (ModbusClientMixin .DATATYPE .INT32 , - 32145678 , [0xFE15 , 0x7EF2 ]),
102+ (ModbusClientMixin .DATATYPE .STRING , "abcdÇ" , [0x6162 , 0x6364 , 0xc387 ], "utf-8" ),
103+ (ModbusClientMixin .DATATYPE .STRING , "abcdÇ" , [0x6162 , 0x6364 , 0xc387 ], None ),
104+ (ModbusClientMixin .DATATYPE .STRING , "abcdÇ" , [0x6162 , 0x6364 , 0x8000 ], "cp437" ),
105+ (ModbusClientMixin .DATATYPE .STRING , "a" , [0x6100 ], None ),
106+ (ModbusClientMixin .DATATYPE .UINT16 , 27123 , [0x69F3 ], None ),
107+ (ModbusClientMixin .DATATYPE .INT16 , - 27123 , [0x960D ], None ),
108+ (ModbusClientMixin .DATATYPE .UINT32 , 27123 , [0x0000 , 0x69F3 ], None ),
109+ (ModbusClientMixin .DATATYPE .UINT32 , 32145678 , [0x01EA , 0x810E ], None ),
110+ (ModbusClientMixin .DATATYPE .INT32 , - 32145678 , [0xFE15 , 0x7EF2 ], None ),
109111 (
110112 ModbusClientMixin .DATATYPE .UINT64 ,
111113 1234567890123456789 ,
112114 [0x1122 , 0x10F4 , 0x7DE9 , 0x8115 ],
115+ None ,
113116 ),
114117 (
115118 ModbusClientMixin .DATATYPE .INT64 ,
116119 - 1234567890123456789 ,
117120 [0xEEDD , 0xEF0B , 0x8216 , 0x7EEB ],
121+ None ,
118122 ),
119- (ModbusClientMixin .DATATYPE .FLOAT32 , 27123.5 , [0x46D3 , 0xE700 ]),
120- (ModbusClientMixin .DATATYPE .FLOAT32 , 3.141592 , [0x4049 , 0x0FD8 ]),
121- (ModbusClientMixin .DATATYPE .FLOAT32 , - 3.141592 , [0xC049 , 0x0FD8 ]),
122- (ModbusClientMixin .DATATYPE .FLOAT64 , 27123.5 , [0x40DA , 0x7CE0 , 0x0000 , 0x0000 ]),
123+ (ModbusClientMixin .DATATYPE .FLOAT32 , 27123.5 , [0x46D3 , 0xE700 ], None ),
124+ (ModbusClientMixin .DATATYPE .FLOAT32 , 3.141592 , [0x4049 , 0x0FD8 ], None ),
125+ (ModbusClientMixin .DATATYPE .FLOAT32 , - 3.141592 , [0xC049 , 0x0FD8 ], None ),
126+ (ModbusClientMixin .DATATYPE .FLOAT64 , 27123.5 , [0x40DA , 0x7CE0 , 0x0000 , 0x0000 ], None ),
123127 (
124128 ModbusClientMixin .DATATYPE .FLOAT64 ,
125129 3.14159265358979 ,
126130 [0x4009 , 0x21FB , 0x5444 , 0x2D11 ],
131+ None ,
127132 ),
128133 (
129134 ModbusClientMixin .DATATYPE .FLOAT64 ,
130135 - 3.14159265358979 ,
131136 [0xC009 , 0x21FB , 0x5444 , 0x2D11 ],
137+ None ,
132138 ),
133139 (
134140 ModbusClientMixin .DATATYPE .BITS ,
135141 [True ],
136142 [256 ],
143+ None ,
137144 ),
138145 (
139146 ModbusClientMixin .DATATYPE .BITS ,
140147 [True , False , True ],
141148 [1280 ],
149+ None ,
142150 ),
143151 (
144152 ModbusClientMixin .DATATYPE .BITS ,
145153 [True , False , True ] + [False ] * 5 + [True ],
146154 [1281 ],
155+ None ,
147156 ),
148157 (
149158 ModbusClientMixin .DATATYPE .BITS ,
150159 [True , False , True ] + [False ] * 5 + [True ] + [False ] * 6 + [True ],
151160 [1409 ],
161+ None ,
152162 ),
153163 (
154164 ModbusClientMixin .DATATYPE .BITS ,
155165 [True , False , True ] + [False ] * 5 + [True ] + [False ] * 6 + [True ] * 2 ,
156166 [1409 , 256 ],
167+ None ,
157168 ),
158169 ],
159170 )
160- def test_client_mixin_convert (self , datatype , word_order , registers , value ):
171+ def test_client_mixin_convert (self , datatype , word_order , registers , value , string_encoding ):
161172 """Test converter methods."""
162173 if word_order == "little" :
163- x = registers .copy ()
164- x .reverse ()
165- registers = x
166- kwargs = {"word_order" : word_order } if word_order else {}
174+ registers = list (reversed (registers ))
175+
176+ kwargs = {** ({"word_order" : word_order } if word_order else {}),
177+ ** ({"string_encoding" : string_encoding } if string_encoding else {})}
178+
167179 regs = ModbusClientMixin .convert_to_registers (value , datatype , ** kwargs )
168180 assert regs == registers
169181 result = ModbusClientMixin .convert_from_registers (registers , datatype , ** kwargs )
0 commit comments