def test_execute_transition_not_found(self): fsm = FSM("off") fsm.add_transition("play", "off", "music", "on") self.assertRaises(Exception, fsm.execute, "stop") self.assertIsNone(fsm.action) self.assertIsNone(fsm.prev_state) self.assertEqual("off", fsm.current_state)
def test_execute_transition_found(self): fsm = FSM("off") fsm.add_transition("play", "off", "music", "on") fsm.execute("play") self.assertEqual("music", fsm.action) self.assertEqual("off", fsm.prev_state) self.assertEqual("on", fsm.current_state)
def test_add_transition_4args(self): fsm = FSM("off") fsm.add_transition("play", "off", "music", "on") self.assertEqual(("music", "on"), fsm.transitions[("play", "off")])
def test_add_transition_3args(self): fsm = FSM("on") fsm.add_transition("change", "on", "radio") self.assertEqual(("radio", "on"), fsm.transitions[("change", "on")])
class Lion: def __init__(self, initial_state): self.FSM = FSM(initial_state) self.FSM.add_transition("Antelope", "Hungry", "Eat", "Fed") self.FSM.add_transition("Antelope", "Fed", "Sleep", "Hungry") self.FSM.add_transition("Hunter", "Hungry", "Run away") self.FSM.add_transition("Hunter", "Fed", "Run away", "Hungry") self.FSM.add_transition("Tree", "Hungry", "Sleep") self.FSM.add_transition("Tree", "Fed", "Look", "Hungry") def meet(self, who): self.FSM.execute(who)