Skip to content

Commit 5d775d6

Browse files
committed
BREAKING: Again rename YXDeviceState enum members to have consistency with V1 state values
The motivation is to not have entirely different state values for the same concept to make it easier to write systems that can handle each device.
1 parent 0c2c781 commit 5d775d6

File tree

3 files changed

+47
-50
lines changed

3 files changed

+47
-50
lines changed

roborock/data/b01_q10/b01_q10_code_mappings.py

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -164,24 +164,24 @@ class YXCleanType(RoborockModeEnum):
164164

165165
class YXDeviceState(RoborockModeEnum):
166166
UNKNOWN = "unknown", -1
167-
SLEEP_STATE = "sleeping", 2
168-
STANDBY_STATE = "standby", 3
169-
CLEANING_STATE = "cleaning", 5
170-
TO_CHARGE_STATE = "going_to_charge", 6
171-
REMOTEING_STATE = "remote_control", 7
172-
CHARGING_STATE = "charging", 8
173-
PAUSE_STATE = "paused", 10
174-
FAULT_STATE = "fault", 12
175-
UPGRADE_STATE = "updating", 14
176-
DUSTING = "dusting", 22
177-
CREATING_MAP_STATE = "creating_map", 29
178-
MAP_SAVE_STATE = "saving_map", 99
179-
RE_LOCATION_STATE = "relocating", 101
180-
ROBOT_SWEEPING = "sweeping", 102
181-
ROBOT_MOPING = "mopping", 103
182-
ROBOT_SWEEP_AND_MOPING = "sweep_and_mop", 104
183-
ROBOT_TRANSITIONING = "transitioning", 105
184-
ROBOT_WAIT_CHARGE = "waiting_to_charge", 108
167+
SLEEPING = "sleeping", 2 # sleepstate
168+
IDLE = "idle", 3 # standbystate
169+
CLEANING = "cleaning", 5 # cleaningstate
170+
RETURNING_HOME = "returning_home", 6 # tochargestate
171+
REMOTE_CONTROL_ACTIVE = "remote_control_active", 7 # remoteingstate
172+
CHARGING = "charging", 8 # chargingstate
173+
PAUSED = "paused", 10 # pausestate
174+
ERROR = "error", 12 # faultstate
175+
UPDATING = "updating", 14 # upgradestate
176+
EMPTYING_THE_BIN = "emptying_the_bin", 22 # dusting
177+
MAPPING = "mapping", 29 # creatingmapstate
178+
SAVING_MAP = "saving_map", 99 # mapsavestate
179+
RELOCATING = "relocating", 101 # relocationstate
180+
SWEEPING = "sweeping", 102 # robotsweeping
181+
MOPPING = "mopping", 103 # robotmoping
182+
SWEEP_AND_MOP = "sweep_and_mop", 104 # robotsweepandmoping
183+
TRANSITIONING = "transitioning", 105 # robottransitioning
184+
WAITING_TO_CHARGE = "waiting_to_charge", 108 # robotwaitcharge
185185

186186

187187
class YXBackType(RoborockModeEnum):
Lines changed: 26 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,35 @@
11
"""Test cases for B01 Q10 code mappings."""
22

3+
import pytest
4+
35
from roborock.data.b01_q10 import YXDeviceState
46

57

6-
def test_q10_status_values_are_canonical() -> None:
8+
@pytest.mark.parametrize(
9+
"state, string",
10+
[
11+
(YXDeviceState.UNKNOWN, "unknown"),
12+
(YXDeviceState.IDLE, "idle"),
13+
(YXDeviceState.CHARGING, "charging"),
14+
(YXDeviceState.CLEANING, "cleaning"),
15+
(YXDeviceState.SLEEPING, "sleeping"),
16+
(YXDeviceState.UPDATING, "updating"),
17+
(YXDeviceState.RETURNING_HOME, "returning_home"),
18+
],
19+
)
20+
def test_q10_status_values_are_canonical(state: YXDeviceState, string: str) -> None:
721
"""Q10 status enum values should expose canonical names."""
8-
expected_values = {
9-
YXDeviceState.UNKNOWN: "unknown",
10-
YXDeviceState.SLEEP_STATE: "sleeping",
11-
YXDeviceState.STANDBY_STATE: "standby",
12-
YXDeviceState.CLEANING_STATE: "cleaning",
13-
YXDeviceState.TO_CHARGE_STATE: "going_to_charge",
14-
YXDeviceState.REMOTEING_STATE: "remote_control",
15-
YXDeviceState.CHARGING_STATE: "charging",
16-
YXDeviceState.PAUSE_STATE: "paused",
17-
YXDeviceState.FAULT_STATE: "fault",
18-
YXDeviceState.UPGRADE_STATE: "updating",
19-
YXDeviceState.DUSTING: "dusting",
20-
YXDeviceState.CREATING_MAP_STATE: "creating_map",
21-
YXDeviceState.MAP_SAVE_STATE: "saving_map",
22-
YXDeviceState.RE_LOCATION_STATE: "relocating",
23-
YXDeviceState.ROBOT_SWEEPING: "sweeping",
24-
YXDeviceState.ROBOT_MOPING: "mopping",
25-
YXDeviceState.ROBOT_SWEEP_AND_MOPING: "sweep_and_mop",
26-
YXDeviceState.ROBOT_TRANSITIONING: "transitioning",
27-
YXDeviceState.ROBOT_WAIT_CHARGE: "waiting_to_charge",
28-
}
29-
30-
assert {state: state.value for state in expected_values} == expected_values
31-
assert all(not value.endswith("state") for value in expected_values.values())
22+
assert state.value == string
3223

3324

34-
def test_q10_status_codes_map_to_canonical_values() -> None:
25+
@pytest.mark.parametrize(
26+
"code, expected_state",
27+
[
28+
(5, YXDeviceState.CLEANING),
29+
(8, YXDeviceState.CHARGING),
30+
(14, YXDeviceState.UPDATING),
31+
],
32+
)
33+
def test_q10_status_codes_map_to_canonical_values(code: int, expected_state: YXDeviceState) -> None:
3534
"""Code-based mapping should return canonical status values."""
36-
assert YXDeviceState.from_code(5) is YXDeviceState.CLEANING_STATE
37-
assert YXDeviceState.from_code(8) is YXDeviceState.CHARGING_STATE
38-
assert YXDeviceState.from_code(14) is YXDeviceState.UPGRADE_STATE
35+
assert YXDeviceState.from_code(code) is expected_state

tests/devices/traits/b01/q10/test_status.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,10 +96,10 @@ async def test_status_trait_streaming(
9696
message_queue.put_nowait(message)
9797

9898
# Wait for the update
99-
await wait_for_attribute_value(q10_api.status, "status", YXDeviceState.CHARGING_STATE)
99+
await wait_for_attribute_value(q10_api.status, "status", YXDeviceState.CHARGING)
100100

101101
# Verify trait attributes are updated
102-
assert q10_api.status.status == YXDeviceState.CHARGING_STATE
102+
assert q10_api.status.status == YXDeviceState.CHARGING
103103
assert q10_api.status.clean_task_type == YXDeviceCleanTask.IDLE
104104

105105

@@ -142,7 +142,7 @@ async def test_status_trait_refresh(
142142

143143
# Verify trait attributes are updated
144144
assert q10_api.status.battery == 100
145-
assert q10_api.status.status == YXDeviceState.CHARGING_STATE
145+
assert q10_api.status.status == YXDeviceState.CHARGING
146146
assert q10_api.status.fan_level == YXFanLevel.BALANCED
147147
assert q10_api.status.total_clean_area == 0
148148
assert q10_api.status.total_clean_count == 0

0 commit comments

Comments
 (0)