def test_transition_definitions(self): states = ['A', 'B', {'name': 'C', 'children': ['1', '2', '3']}, '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'}, {'trigger': 'run', 'source': 'C_1', 'dest': 'C_2'} ] m = Machine(states=states, transitions=transitions, initial='A') m.walk() self.assertEquals(m.state, 'B') m.run() self.assertEquals(m.state, 'C_1') m.run() self.assertEquals(m.state, 'C_2') # 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')