Skip to content

Commit ad3ceea

Browse files
authored
feat(api)!: Again rename YXDeviceState enum members to have consistency with V1 state values (#795)
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 c630022 commit ad3ceea

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)