Skip to content

Commit 217f302

Browse files
committed
Add test for stopping mission when recharging
1 parent 66b9935 commit 217f302

2 files changed

Lines changed: 60 additions & 1 deletion

File tree

tests/isar/state_machine/states/test_going_to_recharging_state.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,3 +64,22 @@ def test_return_home_goes_to_recharging_when_battery_low(
6464

6565
sync_state_machine.current_state = transition(sync_state_machine)
6666
assert type(sync_state_machine.current_state) is GoingToRecharging
67+
68+
69+
def test_cancelling_mission_when_going_home_to_recharge(
70+
sync_state_machine: StateMachine,
71+
) -> None:
72+
sync_state_machine.current_state = GoingToRechargingWithMission(
73+
sync_state_machine, mission=AbortedMission(name="test", id="test_id")
74+
)
75+
returning_home_state: State = cast(State, sync_state_machine.current_state)
76+
event_handler: EventHandlerMapping | None = (
77+
returning_home_state.get_event_handler_by_name("stop_mission_event")
78+
)
79+
80+
assert event_handler is not None
81+
82+
transition = event_handler.handler("test_id")
83+
84+
sync_state_machine.current_state = transition(sync_state_machine)
85+
assert type(sync_state_machine.current_state) is GoingToRecharging

tests/isar/state_machine/states/test_recharging_state.py

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
from typing import cast
22

33
from isar.eventhandlers.eventhandler import EventHandlerMapping, State
4-
from isar.models.events import EmptyMessage
4+
from isar.models.events import AbortedMission, EmptyMessage
55
from isar.state_machine.state_machine import StateMachine
66
from isar.state_machine.states.going_to_recharging import GoingToRecharging
77
from isar.state_machine.states.home import Home
88
from isar.state_machine.states.lockdown import Lockdown
9+
from isar.state_machine.states.monitor import Monitor
910
from isar.state_machine.states.recharging import Recharging
11+
from isar.state_machine.states.recharging_with_mission import RechargingWithMission
1012

1113

1214
def test_going_to_recharging_goes_to_recharge(
@@ -77,3 +79,41 @@ def test_recharging_continues_when_battery_low(
7779
transition = event_handler.handler(10.0)
7880

7981
assert transition is None
82+
83+
84+
def test_continuing_mission_when_battery_high(
85+
sync_state_machine: StateMachine,
86+
) -> None:
87+
sync_state_machine.current_state = RechargingWithMission(
88+
sync_state_machine, mission=AbortedMission(name="test", id="test_id")
89+
)
90+
returning_home_state: State = cast(State, sync_state_machine.current_state)
91+
event_handler: EventHandlerMapping | None = (
92+
returning_home_state.get_event_handler_by_name("robot_battery_update_event")
93+
)
94+
95+
assert event_handler is not None
96+
97+
transition = event_handler.handler(100.0)
98+
99+
sync_state_machine.current_state = transition(sync_state_machine)
100+
assert type(sync_state_machine.current_state) is Monitor
101+
102+
103+
def test_cancelling_mission_when_recharging_with_mission(
104+
sync_state_machine: StateMachine,
105+
) -> None:
106+
sync_state_machine.current_state = RechargingWithMission(
107+
sync_state_machine, mission=AbortedMission(name="test", id="test_id")
108+
)
109+
returning_home_state: State = cast(State, sync_state_machine.current_state)
110+
event_handler: EventHandlerMapping | None = (
111+
returning_home_state.get_event_handler_by_name("stop_mission_event")
112+
)
113+
114+
assert event_handler is not None
115+
116+
transition = event_handler.handler("test_id")
117+
118+
sync_state_machine.current_state = transition(sync_state_machine)
119+
assert type(sync_state_machine.current_state) is Recharging

0 commit comments

Comments
 (0)