diff --git a/roborock/data/b01_q10/b01_q10_code_mappings.py b/roborock/data/b01_q10/b01_q10_code_mappings.py index aef65c5a..660a35c5 100644 --- a/roborock/data/b01_q10/b01_q10_code_mappings.py +++ b/roborock/data/b01_q10/b01_q10_code_mappings.py @@ -164,24 +164,24 @@ class YXCleanType(RoborockModeEnum): class YXDeviceState(RoborockModeEnum): UNKNOWN = "unknown", -1 - SLEEP_STATE = "sleepstate", 2 - STANDBY_STATE = "standbystate", 3 - CLEANING_STATE = "cleaningstate", 5 - TO_CHARGE_STATE = "tochargestate", 6 - REMOTEING_STATE = "remoteingstate", 7 - CHARGING_STATE = "chargingstate", 8 - PAUSE_STATE = "pausestate", 10 - FAULT_STATE = "faultstate", 12 - UPGRADE_STATE = "upgradestate", 14 + SLEEP_STATE = "sleeping", 2 + STANDBY_STATE = "standby", 3 + CLEANING_STATE = "cleaning", 5 + TO_CHARGE_STATE = "going_to_charge", 6 + REMOTEING_STATE = "remote_control", 7 + CHARGING_STATE = "charging", 8 + PAUSE_STATE = "paused", 10 + FAULT_STATE = "fault", 12 + UPGRADE_STATE = "updating", 14 DUSTING = "dusting", 22 - CREATING_MAP_STATE = "creatingmapstate", 29 - MAP_SAVE_STATE = "mapsavestate", 99 - RE_LOCATION_STATE = "relocationstate", 101 - ROBOT_SWEEPING = "robotsweeping", 102 - ROBOT_MOPING = "robotmoping", 103 - ROBOT_SWEEP_AND_MOPING = "robotsweepandmoping", 104 - ROBOT_TRANSITIONING = "robottransitioning", 105 - ROBOT_WAIT_CHARGE = "robotwaitcharge", 108 + CREATING_MAP_STATE = "creating_map", 29 + MAP_SAVE_STATE = "saving_map", 99 + RE_LOCATION_STATE = "relocating", 101 + ROBOT_SWEEPING = "sweeping", 102 + ROBOT_MOPING = "mopping", 103 + ROBOT_SWEEP_AND_MOPING = "sweep_and_mop", 104 + ROBOT_TRANSITIONING = "transitioning", 105 + ROBOT_WAIT_CHARGE = "waiting_to_charge", 108 class YXBackType(RoborockModeEnum): diff --git a/tests/data/b01_q10/test_b01_q10_code_mappings.py b/tests/data/b01_q10/test_b01_q10_code_mappings.py new file mode 100644 index 00000000..b6703110 --- /dev/null +++ b/tests/data/b01_q10/test_b01_q10_code_mappings.py @@ -0,0 +1,38 @@ +"""Test cases for B01 Q10 code mappings.""" + +from roborock.data.b01_q10 import YXDeviceState + + +def test_q10_status_values_are_canonical() -> None: + """Q10 status enum values should expose canonical names.""" + expected_values = { + YXDeviceState.UNKNOWN: "unknown", + YXDeviceState.SLEEP_STATE: "sleeping", + YXDeviceState.STANDBY_STATE: "standby", + YXDeviceState.CLEANING_STATE: "cleaning", + YXDeviceState.TO_CHARGE_STATE: "going_to_charge", + YXDeviceState.REMOTEING_STATE: "remote_control", + YXDeviceState.CHARGING_STATE: "charging", + YXDeviceState.PAUSE_STATE: "paused", + YXDeviceState.FAULT_STATE: "fault", + YXDeviceState.UPGRADE_STATE: "updating", + YXDeviceState.DUSTING: "dusting", + YXDeviceState.CREATING_MAP_STATE: "creating_map", + YXDeviceState.MAP_SAVE_STATE: "saving_map", + YXDeviceState.RE_LOCATION_STATE: "relocating", + YXDeviceState.ROBOT_SWEEPING: "sweeping", + YXDeviceState.ROBOT_MOPING: "mopping", + YXDeviceState.ROBOT_SWEEP_AND_MOPING: "sweep_and_mop", + YXDeviceState.ROBOT_TRANSITIONING: "transitioning", + YXDeviceState.ROBOT_WAIT_CHARGE: "waiting_to_charge", + } + + assert {state: state.value for state in expected_values} == expected_values + assert all(not value.endswith("state") for value in expected_values.values()) + + +def test_q10_status_codes_map_to_canonical_values() -> None: + """Code-based mapping should return canonical status values.""" + assert YXDeviceState.from_code(5) is YXDeviceState.CLEANING_STATE + assert YXDeviceState.from_code(8) is YXDeviceState.CHARGING_STATE + assert YXDeviceState.from_code(14) is YXDeviceState.UPGRADE_STATE