Skip to content

Commit f3aa0fc

Browse files
authored
Add clear names for wrong test responses (#119)
* add clear names for wrong responses * clear names for Seplos_v2, TDT BMS
1 parent e859700 commit f3aa0fc

6 files changed

+107
-82
lines changed

tests/test_ective_bms.py

+36-26
Original file line numberDiff line numberDiff line change
@@ -115,35 +115,45 @@ async def test_tx_notimplemented(monkeypatch) -> None:
115115
@pytest.fixture(
116116
name="wrong_response",
117117
params=[
118-
b"\x5E\x38\x34\x33\x35\x30\x30\x30\x30\x33\x38\x43\x44\x46\x46\x46\x46"
119-
b"\x32\x43\x46\x39\x30\x32\x30\x30\x39\x37\x30\x31\x36\x32\x30\x30"
120-
b"\x45\x31\x30\x42\x30\x30\x30\x30\x30\x30\x30\x30"
121-
b"\x35\x45\x30\x44\x37\x31\x30\x44\x36\x35\x30\x44\x35\x45\x30\x44"
122-
b"\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30"
123-
b"\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30"
124-
b"\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30"
125-
b"\x30\x38\x38\x45\x00\x00\x00\x00\x00\x00\x00\x00", # wrong CRC
126-
b"\x5A\x38\x34\x33\x35\x30\x30\x30\x30\x33\x38\x43\x44\x46\x46\x46\x46"
127-
b"\x32\x43\x46\x39\x30\x32\x30\x30\x39\x37\x30\x31\x36\x32\x30\x30"
128-
b"\x45\x31\x30\x42\x30\x30\x30\x30\x30\x30\x30\x30"
129-
b"\x35\x45\x30\x44\x37\x31\x30\x44\x36\x35\x30\x44\x35\x45\x30\x44"
130-
b"\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30"
131-
b"\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30"
132-
b"\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30"
133-
b"\x30\x38\x38\x46\x00\x00\x00\x00\x00\x00\x00\x00", # wrong SOF
134-
b"\x5E\x34\x33\x35\x30\x30\x30\x30\x33\x38\x43\x44\x46\x46\x46\x46"
135-
b"\x32\x43\x46\x39\x30\x32\x30\x30\x39\x37\x30\x31\x36\x32\x30\x30"
136-
b"\x45\x31\x30\x42\x30\x30\x30\x30\x30\x30\x30\x30"
137-
b"\x35\x45\x30\x44\x37\x31\x30\x44\x36\x35\x30\x44\x35\x45\x30\x44"
138-
b"\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30"
139-
b"\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30"
140-
b"\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30"
141-
b"\x30\x38\x38\x46", # wrong length (1st byte missing)
118+
(
119+
b"\x5E\x38\x34\x33\x35\x30\x30\x30\x30\x33\x38\x43\x44\x46\x46\x46\x46"
120+
b"\x32\x43\x46\x39\x30\x32\x30\x30\x39\x37\x30\x31\x36\x32\x30\x30"
121+
b"\x45\x31\x30\x42\x30\x30\x30\x30\x30\x30\x30\x30"
122+
b"\x35\x45\x30\x44\x37\x31\x30\x44\x36\x35\x30\x44\x35\x45\x30\x44"
123+
b"\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30"
124+
b"\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30"
125+
b"\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30"
126+
b"\x30\x38\x38\x45\x00\x00\x00\x00\x00\x00\x00\x00",
127+
"wrong CRC",
128+
),
129+
(
130+
b"\x5A\x38\x34\x33\x35\x30\x30\x30\x30\x33\x38\x43\x44\x46\x46\x46\x46"
131+
b"\x32\x43\x46\x39\x30\x32\x30\x30\x39\x37\x30\x31\x36\x32\x30\x30"
132+
b"\x45\x31\x30\x42\x30\x30\x30\x30\x30\x30\x30\x30"
133+
b"\x35\x45\x30\x44\x37\x31\x30\x44\x36\x35\x30\x44\x35\x45\x30\x44"
134+
b"\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30"
135+
b"\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30"
136+
b"\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30"
137+
b"\x30\x38\x38\x46\x00\x00\x00\x00\x00\x00\x00\x00",
138+
"wrong SOF",
139+
),
140+
(
141+
b"\x5E\x34\x33\x35\x30\x30\x30\x30\x33\x38\x43\x44\x46\x46\x46\x46"
142+
b"\x32\x43\x46\x39\x30\x32\x30\x30\x39\x37\x30\x31\x36\x32\x30\x30"
143+
b"\x45\x31\x30\x42\x30\x30\x30\x30\x30\x30\x30\x30"
144+
b"\x35\x45\x30\x44\x37\x31\x30\x44\x36\x35\x30\x44\x35\x45\x30\x44"
145+
b"\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30"
146+
b"\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30"
147+
b"\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30"
148+
b"\x30\x38\x38\x46",
149+
"wrong length", # 1st byte missing
150+
),
142151
],
152+
ids=lambda param: param[1],
143153
)
144154
def response(request) -> bytearray:
145-
"""Return all possible BMS variants."""
146-
return request.param
155+
"""Return faulty response frame."""
156+
return request.param[0]
147157

148158

149159
async def test_invalid_response(monkeypatch, wrong_response) -> None:

tests/test_ej_bms.py

+9-8
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ async def write_gatt_char(
4444
"""Issue write command to GATT."""
4545
await super().write_gatt_char(char_specifier, data, response)
4646
assert self._notify_callback is not None
47-
self._notify_callback("MockEctiveBleakClient", bytearray(b'AT\r\n'))
48-
self._notify_callback("MockEctiveBleakClient", bytearray(b'AT\r\nillegal'))
47+
self._notify_callback("MockEctiveBleakClient", bytearray(b"AT\r\n"))
48+
self._notify_callback("MockEctiveBleakClient", bytearray(b"AT\r\nillegal"))
4949
for notify_data in [
5050
self._response(char_specifier, data)[i : i + BT_FRAME_SIZE]
5151
for i in range(0, len(self._response(char_specifier, data)), BT_FRAME_SIZE)
@@ -160,15 +160,16 @@ async def test_update_single_frame(monkeypatch, reconnect_fixture) -> None:
160160
@pytest.fixture(
161161
name="wrong_response",
162162
params=[
163-
b"x009031001E0000001400080016F4~", # wrong SOI
164-
b":009031001E0000001400080016F4x", # wrong EOI
165-
b":009031001D0000001400080016F4~", # wrong length
166-
b":009031001E00000002000A000AD9~", # wrong CRC
163+
(b"x009031001E0000001400080016F4~", "wrong SOI"),
164+
(b":009031001E0000001400080016F4x", "wrong EOI"),
165+
(b":009031001D0000001400080016F4~", "wrong length"),
166+
(b":009031001E00000002000A000AD9~", "wrong CRC"),
167167
],
168+
ids=lambda param: param[1],
168169
)
169170
def response(request):
170-
"""Return all possible BMS variants."""
171-
return request.param
171+
"""Return faulty response frame."""
172+
return request.param[0]
172173

173174

174175
async def test_invalid_response(monkeypatch, wrong_response) -> None:

tests/test_jbd_bms.py

+10-8
Original file line numberDiff line numberDiff line change
@@ -142,18 +142,20 @@ async def test_update(monkeypatch, reconnect_fixture) -> None:
142142
@pytest.fixture(
143143
name="wrong_response",
144144
params=[
145-
bytearray( # wrong end
146-
b"\xdd\x03\x00\x1D\x06\x18\xFE\xE1\x01\xF2\x01\xF4\x00\x2A\x2C\x7C\x00\x00\x00"
147-
b"\x00\x00\x00\x80\x64\x03\x04\x03\x0B\x8B\x0B\x8A\x0B\x84\xf8\x84\xdd"
145+
(
146+
bytearray(
147+
b"\xdd\x03\x00\x1D\x06\x18\xFE\xE1\x01\xF2\x01\xF4\x00\x2A\x2C\x7C\x00\x00\x00"
148+
b"\x00\x00\x00\x80\x64\x03\x04\x03\x0B\x8B\x0B\x8A\x0B\x84\xf8\x84\xdd"
149+
),
150+
"wrong end",
148151
),
149-
bytearray(b"\xdd\x04\x00\x1d")
150-
+ bytearray(31)
151-
+ bytearray(b"\x77"), # wrong CRC
152+
(bytearray(b"\xdd\x04\x00\x1d" + b"\x00" * 31 + b"\x77"), "wrong CRC"),
152153
],
154+
ids=lambda param: param[1],
153155
)
154156
def response(request) -> bytearray:
155-
"""Return all possible BMS variants."""
156-
return request.param
157+
"""Return faulty response frame."""
158+
return request.param[0]
157159

158160

159161
async def test_invalid_response(monkeypatch, wrong_response) -> None:

tests/test_redodo_bms.py

+34-24
Original file line numberDiff line numberDiff line change
@@ -99,36 +99,46 @@ async def test_update(monkeypatch, reconnect_fixture) -> None:
9999
@pytest.fixture(
100100
name="wrong_response",
101101
params=[
102-
bytearray(
103-
b"\x00\x00\x65\x01\x93\x55\xaa\x00\x46\x66\x00\x00\xbc\x67\x00\x00\xf5\x0c\xf7\x0c"
104-
b"\xfc\x0c\xfb\x0c\xf8\x0c\xf2\x0c\xfa\x0c\xf5\x0c\x00\x00\x00\x00\x00\x00\x00\x00"
105-
b"\x00\x00\x00\x00\x00\x00\x00\x00\x65\xfa\xff\xff\x17\x00\x16\x00\x17\x00\x00\x00"
106-
b"\x00\x00\xe9\x1a\x04\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
107-
b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x64\x00\x00\x00\x03\x00\x00\x00"
108-
b"\x5f\x01\x00\x00\xff" # wrong CRC
102+
(
103+
bytearray(
104+
b"\x00\x00\x65\x01\x93\x55\xaa\x00\x46\x66\x00\x00\xbc\x67\x00\x00\xf5\x0c\xf7\x0c"
105+
b"\xfc\x0c\xfb\x0c\xf8\x0c\xf2\x0c\xfa\x0c\xf5\x0c\x00\x00\x00\x00\x00\x00\x00\x00"
106+
b"\x00\x00\x00\x00\x00\x00\x00\x00\x65\xfa\xff\xff\x17\x00\x16\x00\x17\x00\x00\x00"
107+
b"\x00\x00\xe9\x1a\x04\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
108+
b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x64\x00\x00\x00\x03\x00\x00\x00"
109+
b"\x5f\x01\x00\x00\xff"
110+
),
111+
"wrong CRC",
109112
),
110-
bytearray(
111-
b"\x00\x01\x65\x01\x93\x55\xaa\x00\x46\x66\x00\x00\xbc\x67\x00\x00\xf5\x0c\xf7\x0c"
112-
b"\xfc\x0c\xfb\x0c\xf8\x0c\xf2\x0c\xfa\x0c\xf5\x0c\x00\x00\x00\x00\x00\x00\x00\x00"
113-
b"\x00\x00\x00\x00\x00\x00\x00\x00\x65\xfa\xff\xff\x17\x00\x16\x00\x17\x00\x00\x00"
114-
b"\x00\x00\xe9\x1a\x04\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
115-
b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x64\x00\x00\x00\x03\x00\x00\x00"
116-
b"\x5f\x01\x00\x00\xbc" # wrong SOF
113+
(
114+
bytearray(
115+
b"\x00\x01\x65\x01\x93\x55\xaa\x00\x46\x66\x00\x00\xbc\x67\x00\x00\xf5\x0c\xf7\x0c"
116+
b"\xfc\x0c\xfb\x0c\xf8\x0c\xf2\x0c\xfa\x0c\xf5\x0c\x00\x00\x00\x00\x00\x00\x00\x00"
117+
b"\x00\x00\x00\x00\x00\x00\x00\x00\x65\xfa\xff\xff\x17\x00\x16\x00\x17\x00\x00\x00"
118+
b"\x00\x00\xe9\x1a\x04\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
119+
b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x64\x00\x00\x00\x03\x00\x00\x00"
120+
b"\x5f\x01\x00\x00\xbc"
121+
),
122+
"wrong SOF",
117123
),
118-
bytearray(
119-
b"\x00\x00\x65\x01\x93\x55\xaa\x00\x46\x66\x00\x00\xbc\x67\x00\x00\xf5\x0c\xf7\x0c"
120-
b"\xfc\x0c\xfb\x0c\xf8\x0c\xf2\x0c\xfa\x0c\xf5\x0c\x00\x00\x00\x00\x00\x00\x00\x00"
121-
b"\x00\x00\x00\x00\x00\x00\x00\x00\x65\xfa\xff\xff\x17\x00\x16\x00\x17\x00\x00\x00"
122-
b"\x00\x00\xe9\x1a\x04\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
123-
b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x64\x00\x00\x00\x03\x00\x00\x00"
124-
b"\x5f\x01\x00\xbc" # wrong length
124+
(
125+
bytearray(
126+
b"\x00\x00\x65\x01\x93\x55\xaa\x00\x46\x66\x00\x00\xbc\x67\x00\x00\xf5\x0c\xf7\x0c"
127+
b"\xfc\x0c\xfb\x0c\xf8\x0c\xf2\x0c\xfa\x0c\xf5\x0c\x00\x00\x00\x00\x00\x00\x00\x00"
128+
b"\x00\x00\x00\x00\x00\x00\x00\x00\x65\xfa\xff\xff\x17\x00\x16\x00\x17\x00\x00\x00"
129+
b"\x00\x00\xe9\x1a\x04\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
130+
b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x64\x00\x00\x00\x03\x00\x00\x00"
131+
b"\x5f\x01\x00\xbc"
132+
),
133+
"wrong length",
125134
),
126-
bytearray(b"\x00"), # much too short
135+
(bytearray(b"\x00"), "too short"),
127136
],
137+
ids=lambda param: param[1],
128138
)
129139
def response(request):
130-
"""Return all possible BMS variants."""
131-
return request.param
140+
"""Return faulty response frame."""
141+
return request.param[0]
132142

133143

134144
async def test_invalid_response(monkeypatch, wrong_response) -> None:

tests/test_seplos_v2_bms.py

+9-8
Original file line numberDiff line numberDiff line change
@@ -149,17 +149,18 @@ async def test_update(monkeypatch, reconnect_fixture) -> None:
149149
@pytest.fixture(
150150
name="wrong_response",
151151
params=[
152-
b"\x7E\x14\x00\x51\x00\x00\x01\x00\x7A\xEF\x00", # invalid frame end
153-
b"\x7E\x10\x00\x51\x00\x00\x01\x00\xBB\x29\x0D", # invalid version
154-
b"\x7E\x14\x00\x51\x80\x00\x01\x00\xA7\xD7\x0D", # error response
155-
b"\x7E\x14\x00\x51\x00\x00\x01\x00\x7A\xEE\x0D", # invalid CRC
156-
b"\x7E\x14\x00\x51\x00\x00\x01\x00\x7A\xEF\x0D\x00", # oversized frame
157-
b"\x7E\x14\x00\x51\x00\x00\x02\x00\x7A\xEF\x0D", # undersized frame
152+
(b"\x7E\x14\x00\x51\x00\x00\x01\x00\x7A\xEF\x00", "invalid frame end"),
153+
(b"\x7E\x10\x00\x51\x00\x00\x01\x00\xBB\x29\x0D", "invalid version"),
154+
(b"\x7E\x14\x00\x51\x80\x00\x01\x00\xA7\xD7\x0D", "error response"),
155+
(b"\x7E\x14\x00\x51\x00\x00\x01\x00\x7A\xEE\x0D", "invalid CRC"),
156+
(b"\x7E\x14\x00\x51\x00\x00\x01\x00\x7A\xEF\x0D\x00", "oversized frame"),
157+
(b"\x7E\x14\x00\x51\x00\x00\x02\x00\x7A\xEF\x0D", "undersized frame"),
158158
],
159+
ids=lambda param: param[1],
159160
)
160161
def response(request):
161-
"""Return all possible BMS variants."""
162-
return request.param
162+
"""Return faulty response frame."""
163+
return request.param[0]
163164

164165

165166
async def test_invalid_response(monkeypatch, wrong_response) -> None:

tests/test_tdt_bms.py

+9-8
Original file line numberDiff line numberDiff line change
@@ -237,17 +237,18 @@ async def test_update_4s_4t(monkeypatch, reconnect_fixture) -> None:
237237
@pytest.fixture(
238238
name="wrong_response",
239239
params=[
240-
b"\x7e\x00\x01\x03\x00\x8c\x00\x01\x00\xA1\x18\x00", # invalid frame end
241-
b"\x7e\x10\x01\x03\x00\x8c\x00\x01\x00\xAD\x19\x0D", # invalid version
242-
b"\x7e\x00\x01\x03\x00\x8c\x00\x01\x00\xA1\x00\x0D", # invalid CRC
243-
b"\x7e\x00\x01\x03\x00\x8c\x00\x01\x00\xA1\x18\x0D\x00", # oversized frame
244-
b"\x7e\x00\x01\x03\x00\x8c\x00\x01\x00\xA1\x0D", # undersized frame
245-
b"\x7e\x00\x01\x03\x01\x8c\x00\x01\x00\x61\x25\x0D", # error response
240+
(b"\x7e\x00\x01\x03\x00\x8c\x00\x01\x00\xA1\x18\x00", "invalid frame end"),
241+
(b"\x7e\x10\x01\x03\x00\x8c\x00\x01\x00\xAD\x19\x0D", "invalid version"),
242+
(b"\x7e\x00\x01\x03\x00\x8c\x00\x01\x00\xA1\x00\x0D", "invalid CRC"),
243+
(b"\x7e\x00\x01\x03\x00\x8c\x00\x01\x00\xA1\x18\x0D\x00", "oversized frame"),
244+
(b"\x7e\x00\x01\x03\x00\x8c\x00\x01\x00\xA1\x0D", "undersized frame"),
245+
(b"\x7e\x00\x01\x03\x01\x8c\x00\x01\x00\x61\x25\x0D", "error response"),
246246
],
247+
ids=lambda param: param[1],
247248
)
248249
def response(request):
249-
"""Return all possible BMS variants."""
250-
return request.param
250+
"""Return faulty response frame."""
251+
return request.param[0]
251252

252253

253254
async def test_invalid_response(monkeypatch, wrong_response) -> None:

0 commit comments

Comments
 (0)