Skip to content

Commit 1bce8c7

Browse files
committed
CR: implement code deduplication and aming improvements
1 parent ecb23be commit 1bce8c7

File tree

1 file changed

+69
-77
lines changed

1 file changed

+69
-77
lines changed

tests/test_usb.py

Lines changed: 69 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ def append_response(self, send_response) -> None:
254254
"""Add response to queue."""
255255
self.send_response.append(send_response)
256256

257-
def clear_response(self) -> None:
257+
def clear_responses(self) -> None:
258258
"""Clear response queue."""
259259
self.send_response.clear()
260260

@@ -2302,7 +2302,7 @@ async def load_callback(event: pw_api.NodeEvent, mac: str) -> None: # type: ign
23022302
)
23032303

23042304
# scan with cache enabled
2305-
mock_stick_controller.clear_response()
2305+
mock_stick_controller.clear_responses()
23062306
test_scan = pw_scan.PlugwiseScan(
23072307
"1298347650AFBECD",
23082308
pw_api.NodeType.SCAN,
@@ -2415,6 +2415,23 @@ def fake_cache_bool(dummy: object, setting: str) -> bool | None:
24152415
construct_message(b"0100555555555555555500B4", b"0000")
24162416
)
24172417

2418+
awake_response = pw_responses.NodeAwakeResponse()
2419+
awake_response.deserialize(
2420+
construct_message(b"004F555555555555555500", b"FFFE")
2421+
)
2422+
2423+
async def run_awake_with_response(responses):
2424+
"""Wake node up and run tasks."""
2425+
mock_stick_controller.clear_responses()
2426+
for r in responses:
2427+
mock_stick_controller.append_response(r)
2428+
awake_response.timestamp = awake_response.timestamp + td(
2429+
seconds=pw_sed.AWAKE_RETRY
2430+
)
2431+
await test_sense._awake_response(awake_response) # pylint: disable=protected-access
2432+
assert test_sense._delayed_task is not None # pylint: disable=protected-access
2433+
await asyncio.wait_for(asyncio.shield(test_sense._delayed_task), timeout=2)
2434+
24182435
async def load_callback(event: pw_api.NodeEvent, mac: str) -> None: # type: ignore[name-defined]
24192436
"""Load callback for event."""
24202437

@@ -2466,26 +2483,20 @@ async def load_callback(event: pw_api.NodeEvent, mac: str) -> None: # type: ign
24662483
assert await test_sense.set_hysteresis_humidity_direction(False)
24672484

24682485
# Restore to original settings after failed config
2469-
awake_response1 = pw_responses.NodeAwakeResponse()
2470-
awake_response1.deserialize(
2471-
construct_message(b"004F555555555555555500", b"FFFE")
2472-
)
2473-
mock_stick_controller.append_response(sense_config_failed)
2474-
mock_stick_controller.append_response(sense_config_accepted)
2475-
mock_stick_controller.append_response(sense_config_report_interval_accepted)
2476-
await test_sense._awake_response(awake_response1) # pylint: disable=protected-access
2477-
assert test_sense._delayed_task is not None # pylint: disable=protected-access
2478-
await asyncio.wait_for(asyncio.shield(test_sense._delayed_task), timeout=2)
2479-
2480-
mock_stick_controller.append_response(sense_config_accepted)
2481-
mock_stick_controller.append_response(sense_config_accepted)
2482-
mock_stick_controller.append_response(sense_config_report_interval_accepted)
2483-
awake_response1.timestamp = awake_response1.timestamp + td(
2484-
seconds=pw_sed.AWAKE_RETRY
2485-
)
2486-
await test_sense._awake_response(awake_response1) # pylint: disable=protected-access
2487-
assert test_sense._delayed_task is not None # pylint: disable=protected-access
2488-
await asyncio.wait_for(asyncio.shield(test_sense._delayed_task), timeout=2)
2486+
responses = [
2487+
sense_config_failed,
2488+
sense_config_accepted,
2489+
sense_config_report_interval_accepted,
2490+
]
2491+
await run_awake_with_response(responses)
2492+
assert test_sense.hysteresis_config_dirty
2493+
2494+
responses = [
2495+
sense_config_accepted,
2496+
sense_config_accepted,
2497+
sense_config_report_interval_accepted,
2498+
]
2499+
await run_awake_with_response(responses)
24892500
assert not test_sense.hysteresis_config_dirty
24902501
assert test_sense.humidity_upper_bound == 65
24912502

@@ -2504,15 +2515,12 @@ async def load_callback(event: pw_api.NodeEvent, mac: str) -> None: # type: ign
25042515
assert test_sense.humidity_lower_bound == 55
25052516

25062517
# Successful config
2507-
mock_stick_controller.append_response(sense_config_accepted)
2508-
mock_stick_controller.append_response(sense_config_accepted)
2509-
mock_stick_controller.append_response(sense_config_report_interval_accepted)
2510-
awake_response1.timestamp = awake_response1.timestamp + td(
2511-
seconds=pw_sed.AWAKE_RETRY
2512-
)
2513-
await test_sense._awake_response(awake_response1) # pylint: disable=protected-access
2514-
assert test_sense._delayed_task is not None # pylint: disable=protected-access
2515-
await asyncio.wait_for(asyncio.shield(test_sense._delayed_task), timeout=2)
2518+
responses = [
2519+
sense_config_accepted,
2520+
sense_config_accepted,
2521+
sense_config_report_interval_accepted,
2522+
]
2523+
await run_awake_with_response(responses)
25162524
assert not test_sense.hysteresis_config_dirty
25172525
assert test_sense.humidity_lower_bound == 55
25182526

@@ -2535,27 +2543,21 @@ async def load_callback(event: pw_api.NodeEvent, mac: str) -> None: # type: ign
25352543
assert await test_sense.set_hysteresis_temperature_direction(False)
25362544

25372545
# Restore to original settings after failed config
2538-
mock_stick_controller.append_response(sense_config_accepted)
2539-
mock_stick_controller.append_response(sense_config_failed)
2540-
mock_stick_controller.append_response(sense_config_report_interval_accepted)
2541-
awake_response1.timestamp = awake_response1.timestamp + td(
2542-
seconds=pw_sed.AWAKE_RETRY
2543-
)
2544-
await test_sense._awake_response(awake_response1) # pylint: disable=protected-access
2545-
assert test_sense._delayed_task is not None # pylint: disable=protected-access
2546-
await asyncio.wait_for(asyncio.shield(test_sense._delayed_task), timeout=2)
2546+
responses = [
2547+
sense_config_accepted,
2548+
sense_config_failed,
2549+
sense_config_report_interval_accepted,
2550+
]
2551+
await run_awake_with_response(responses)
25472552
assert test_sense.hysteresis_config_dirty
25482553

25492554
# Successful config
2550-
mock_stick_controller.append_response(sense_config_accepted)
2551-
mock_stick_controller.append_response(sense_config_accepted)
2552-
mock_stick_controller.append_response(sense_config_report_interval_accepted)
2553-
awake_response1.timestamp = awake_response1.timestamp + td(
2554-
seconds=pw_sed.AWAKE_RETRY
2555-
)
2556-
await test_sense._awake_response(awake_response1) # pylint: disable=protected-access
2557-
assert test_sense._delayed_task is not None # pylint: disable=protected-access
2558-
await asyncio.wait_for(asyncio.shield(test_sense._delayed_task), timeout=2)
2555+
responses = [
2556+
sense_config_accepted,
2557+
sense_config_accepted,
2558+
sense_config_report_interval_accepted,
2559+
]
2560+
await run_awake_with_response(responses)
25592561
assert not test_sense.hysteresis_config_dirty
25602562
assert test_sense.temperature_upper_bound == 26
25612563

@@ -2574,15 +2576,12 @@ async def load_callback(event: pw_api.NodeEvent, mac: str) -> None: # type: ign
25742576
assert test_sense.temperature_lower_bound == 24
25752577

25762578
# Successful config
2577-
mock_stick_controller.append_response(sense_config_accepted)
2578-
mock_stick_controller.append_response(sense_config_accepted)
2579-
mock_stick_controller.append_response(sense_config_report_interval_accepted)
2580-
awake_response1.timestamp = awake_response1.timestamp + td(
2581-
seconds=pw_sed.AWAKE_RETRY
2582-
)
2583-
await test_sense._awake_response(awake_response1) # pylint: disable=protected-access
2584-
assert test_sense._delayed_task is not None # pylint: disable=protected-access
2585-
await asyncio.wait_for(asyncio.shield(test_sense._delayed_task), timeout=2)
2579+
responses = [
2580+
sense_config_accepted,
2581+
sense_config_accepted,
2582+
sense_config_report_interval_accepted,
2583+
]
2584+
await run_awake_with_response(responses)
25862585
assert not test_sense.hysteresis_config_dirty
25872586
assert test_sense.temperature_lower_bound == 24
25882587

@@ -2595,31 +2594,24 @@ async def load_callback(event: pw_api.NodeEvent, mac: str) -> None: # type: ign
25952594
assert not test_sense.hysteresis_config_dirty
25962595
assert await test_sense.set_report_interval(5)
25972596
assert test_sense.hysteresis_config_dirty
2598-
assert test_sense.hysteresis_config_dirty
25992597
assert test_sense.report_interval == 5
26002598

26012599
# Failed config
2602-
mock_stick_controller.append_response(sense_config_accepted)
2603-
mock_stick_controller.append_response(sense_config_accepted)
2604-
mock_stick_controller.append_response(sense_config_report_interval_failed)
2605-
awake_response1.timestamp = awake_response1.timestamp + td(
2606-
seconds=pw_sed.AWAKE_RETRY
2607-
)
2608-
await test_sense._awake_response(awake_response1) # pylint: disable=protected-access
2609-
assert test_sense._delayed_task is not None # pylint: disable=protected-access
2610-
await asyncio.wait_for(asyncio.shield(test_sense._delayed_task), timeout=2)
2600+
responses = [
2601+
sense_config_accepted,
2602+
sense_config_accepted,
2603+
sense_config_report_interval_failed,
2604+
]
2605+
await run_awake_with_response(responses)
26112606
assert test_sense.hysteresis_config_dirty
26122607

26132608
# Successful config
2614-
mock_stick_controller.append_response(sense_config_accepted)
2615-
mock_stick_controller.append_response(sense_config_accepted)
2616-
mock_stick_controller.append_response(sense_config_report_interval_accepted)
2617-
awake_response1.timestamp = awake_response1.timestamp + td(
2618-
seconds=pw_sed.AWAKE_RETRY
2619-
)
2620-
await test_sense._awake_response(awake_response1) # pylint: disable=protected-access
2621-
assert test_sense._delayed_task is not None # pylint: disable=protected-access
2622-
await asyncio.wait_for(asyncio.shield(test_sense._delayed_task), timeout=2)
2609+
responses = [
2610+
sense_config_accepted,
2611+
sense_config_accepted,
2612+
sense_config_report_interval_accepted,
2613+
]
2614+
await run_awake_with_response(responses)
26232615
assert not test_sense.hysteresis_config_dirty
26242616
assert test_sense.report_interval == 5
26252617

0 commit comments

Comments
 (0)