@@ -97,73 +97,85 @@ def fake_execute(_self, _no_response_expected, request):
97
97
98
98
@pytest .mark .parametrize (("word_order" ), ["big" , "little" , None ])
99
99
@pytest .mark .parametrize (
100
- ("datatype" , "value" , "registers" ),
100
+ ("datatype" , "value" , "registers" , "string_encoding" ),
101
101
[
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 ),
109
111
(
110
112
ModbusClientMixin .DATATYPE .UINT64 ,
111
113
1234567890123456789 ,
112
114
[0x1122 , 0x10F4 , 0x7DE9 , 0x8115 ],
115
+ None ,
113
116
),
114
117
(
115
118
ModbusClientMixin .DATATYPE .INT64 ,
116
119
- 1234567890123456789 ,
117
120
[0xEEDD , 0xEF0B , 0x8216 , 0x7EEB ],
121
+ None ,
118
122
),
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 ),
123
127
(
124
128
ModbusClientMixin .DATATYPE .FLOAT64 ,
125
129
3.14159265358979 ,
126
130
[0x4009 , 0x21FB , 0x5444 , 0x2D11 ],
131
+ None ,
127
132
),
128
133
(
129
134
ModbusClientMixin .DATATYPE .FLOAT64 ,
130
135
- 3.14159265358979 ,
131
136
[0xC009 , 0x21FB , 0x5444 , 0x2D11 ],
137
+ None ,
132
138
),
133
139
(
134
140
ModbusClientMixin .DATATYPE .BITS ,
135
141
[True ],
136
142
[256 ],
143
+ None ,
137
144
),
138
145
(
139
146
ModbusClientMixin .DATATYPE .BITS ,
140
147
[True , False , True ],
141
148
[1280 ],
149
+ None ,
142
150
),
143
151
(
144
152
ModbusClientMixin .DATATYPE .BITS ,
145
153
[True , False , True ] + [False ] * 5 + [True ],
146
154
[1281 ],
155
+ None ,
147
156
),
148
157
(
149
158
ModbusClientMixin .DATATYPE .BITS ,
150
159
[True , False , True ] + [False ] * 5 + [True ] + [False ] * 6 + [True ],
151
160
[1409 ],
161
+ None ,
152
162
),
153
163
(
154
164
ModbusClientMixin .DATATYPE .BITS ,
155
165
[True , False , True ] + [False ] * 5 + [True ] + [False ] * 6 + [True ] * 2 ,
156
166
[1409 , 256 ],
167
+ None ,
157
168
),
158
169
],
159
170
)
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 ):
161
172
"""Test converter methods."""
162
173
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
+
167
179
regs = ModbusClientMixin .convert_to_registers (value , datatype , ** kwargs )
168
180
assert regs == registers
169
181
result = ModbusClientMixin .convert_from_registers (registers , datatype , ** kwargs )
0 commit comments