def test_auto_transitions(self): states = ['A', {'name': 'B'}, State(name='C')] m = Machine(None, states, initial='A', auto_transitions=True) m.to_B() self.assertEquals(m.state, 'B') m.to_C() self.assertEquals(m.state, 'C') m.to_A() self.assertEquals(m.state, 'A') # Should fail if auto transitions is off... m = Machine(None, states, initial='A', auto_transitions=False) with self.assertRaises(TypeError): m.to_C()
def test_transition_definitions(self): states = ['A', 'B', 'C', 'D'] # Define with list of dictionaries transitions = [ {'trigger': 'walk', 'source': 'A', 'dest': 'B'}, {'trigger': 'run', 'source': 'B', 'dest': 'C'}, {'trigger': 'sprint', 'source': 'C', 'dest': 'D'} ] m = Machine(states=states, transitions=transitions, initial='A') m.walk() self.assertEquals(m.state, 'B') # Define with list of lists transitions = [ ['walk', 'A', 'B'], ['run', 'B', 'C'], ['sprint', 'C', 'D'] ] m = Machine(states=states, transitions=transitions, initial='A') m.to_C() m.sprint() self.assertEquals(m.state, 'D')