コード例 #1
0
    def test_can_transition(self):
        sm = StateMachine()
        sm.add(State('online', is_starting_state=True))
        sm.add(State('offline'))
        sm.add(State('error'))

        sm.add(Transition('online', ['offline', 'error']))

        assert sm.can_transition_to('offline')
        assert sm.can_transition_to('error')
コード例 #2
0
    def test_cant_transition_without_starting_state(self):
        sm = StateMachine()
        sm.add(State('online'))
        sm.add(State('offline'))
        sm.add(State('error'))

        sm.add(Transition('online', ['offline', 'error']))

        with pytest.raises(Exception):
            sm.can_transition_to('offline')
            sm.can_transition_to('error')
コード例 #3
0
    def test_transitions_arent_two_way(self):
        sm = StateMachine()
        sm.add(State('online', is_starting_state=True))
        sm.add(State('offline'))

        sm.add(Transition('offline', ['online']))

        assert not sm.can_transition_to('offline')
コード例 #4
0
    def test_cant_transition_where_cant_transition_to(self):
        sm = StateMachine()
        sm.add(State('online', is_starting_state=True))
        sm.add(State('offline'))

        sm.add(Transition('offline', ['online']))

        assert not sm.can_transition_to('offline')
        with pytest.raises(Exception):
            sm.transition_to('offline')
コード例 #5
0
    def test_cant_transition_to_undefined_state(self):
        sm = StateMachine()

        with pytest.raises(Exception):
            sm.can_transition_to('offline')