def test_epsilon_transition_is_triggered_automatically(self): a = TimedFiniteAutomaton("start") a.add_state("end") a.add_transition("start", "end", "event") a.add_transition("end", "start") a.feed("event") self.assertEqual("start", a.state)
def test_normal_and_timed_transitions_mix(self): a = TimedFiniteAutomaton("start") a.add_state("a") a.add_state("b") a.add_transition("start", "a", "foo") a.add_transition("start", "b", 1.0) a.feed("foo") self.assertEqual("a", a.state)
def test_callback_called_on_transition_to_self_on_event(self): a = TimedFiniteAutomaton("start") a.add_transition("start", "start", "event") transitions = [] a.add_state_change_listener(lambda *a: transitions.append(a)) a.feed("event") self.assertEqual( [("start", "start", "event")], transitions, )
def test_adding_transition_and_walking_it(self): a = TimedFiniteAutomaton("start") a.add_state("end") a.add_transition("start", "end", "event") a.feed("event") self.assertEqual("end", a.state)