예제 #1
0
 def test_goto(self):
     fsm = Fysom({
         'initial': 'green',
         'events': [
             {'name': 'warn', 'src': 'green', 'dst': 'yellow'},
             {'name': 'panic', 'src': 'yellow', 'dst': 'red'},
             {'name': 'panic', 'src': 'green', 'dst': 'red'},
             {'name': 'calm', 'src': 'red', 'dst': 'yellow'},
             {'name': 'clear', 'src': 'yellow', 'dst': 'green'}
         ]
     })
     self.assertRaises(MultiplePossibilitesFound, fsm.next)
     self.assertEqual('red', fsm.goto('panic'))
예제 #2
0
    def test_no_possibility_for_goto(self):
        fsm = Fysom({
            'initial': 'green',
            'events': [
                {'name': 'warn', 'src': 'green', 'dst': 'yellow'},
                {'name': 'panic', 'src': 'yellow', 'dst': 'red'},
                {'name': 'panic', 'src': 'green', 'dst': 'red'},
                # when call panic from green, we go to red, from red we
                # should go to yellow, but it is commented and we should
                # have a exception
                # {'name': 'calm', 'src': 'red', 'dst': 'yellow'},
                {'name': 'clear', 'src': 'yellow', 'dst': 'green'}
            ]
        })

        self.assertRaises(MultiplePossibilitesFound, fsm.next)
        self.assertEqual('red', fsm.goto('panic'))
        self.assertRaises(NoPossibilityFound, fsm.goto, 'calm')