コード例 #1
0
 def test_firing_event_with_name_with_invalid_event_name(self):
     start_state = State(name='start')
     busy_state  = State(name='busy')
     do_work_event = Event(name='do_work', source_states=[start_state], destination_state=busy_state)
     
     fsm = StateMachine(states=[start_state, busy_state], events=[do_work_event], initial_state=busy_state)
     fsm.activate()
     
     with pytest.raises(StateMachineEventError) as context:
         fsm.fire_event_with_name('do_work')
     
     expected_exception = context.value
     assert expected_exception.identifier == STATE_MACHINE.INVALID_EVENT_IDENTIFIER
コード例 #2
0
 def test_firing_event_with_name_successfully(self):
     start_state = State(name='start')
     busy_state  = State(name='busy')
     do_work_event = Event(name='do_work', source_states=[start_state], destination_state=busy_state)
     
     fsm = StateMachine(states=[start_state, busy_state], events=[do_work_event], initial_state=start_state)
     fsm.activate()
     
     assert fsm.fire_event_with_name('do_work')
コード例 #3
0
 def test_firing_event_with_name_that_is_declined(self):
     
     def decline_event(transition):
         return False
     
     start_state = State(name='start')
     busy_state  = State(name='busy')
     
     do_work_info  = EventCallbacks(should_fire_event=decline_event)
     do_work_event = Event(name='do_work', 
                           source_states=[start_state], 
                           destination_state=busy_state, 
                           callbacks=do_work_info)
     
     fsm = StateMachine(states=[start_state, busy_state], events=[do_work_event], initial_state=start_state)
     fsm.activate()
     
     with pytest.raises(StateMachineEventError) as context_manager:
         fsm.fire_event_with_name('do_work')
     
     expected_exception = context_manager.value
     assert expected_exception.identifier == STATE_MACHINE.DECLINED_EVENT_IDENTIFIER