Ejemplo n.º 1
0
 def test_set_child_sm(self):
     child_state_machine = StateMachine("state_machine")
     state = State("state")
     assert state.child_sm is None
     assert not state.has_child_sm()
     state.set_child_sm(child_state_machine)
     assert state.child_sm is not None
     assert state.has_child_sm()
Ejemplo n.º 2
0
 def test_event_trigger_propagate_with_child_sm(self):
     state_machine = StateMachine("sm")
     exit_cb = MagicMock()
     entry_cb = MagicMock()
     initial_state = State("initial_state")
     second_state = State("second_state")
     initial_state.on_exit(exit_cb)
     second_state.on_entry(entry_cb)
     initial_state.set_child_sm(self.create_child_fsm())
     event = Event("event")
     state_machine.add_state(initial_state, initial_state=True)
     state_machine.add_state(second_state)
     state_machine.add_event(event)
     state_machine.add_transition(initial_state, second_state, event)
     state_machine.start("data")
     exit_cb.assert_not_called()
     entry_cb.assert_not_called()
     state_machine.trigger_event(event, "data", propagate=True)
     # child fsm in current state, so the event is caught in child fsm
     assert state_machine.current_state == initial_state
     assert initial_state.child_sm.current_state.name == \
            "child_second_state"