class MyTestObject(object):
            def __init__(self):
                self._states = []
                self._fsm = Fysom({
                    'initial':
                    'green',
                    'events': [{
                        'name': 'warn',
                        'src': 'green',
                        'dst': 'yellow'
                    }, {
                        'name': 'panic',
                        'src': 'yellow',
                        'dst': 'red'
                    }, {
                        'name': 'calm',
                        'src': 'red',
                        'dst': 'yellow'
                    }, {
                        'name': 'clear',
                        'src': 'yellow',
                        'dst': 'green'
                    }],
                    'callbacks': {
                        'ongreen': self._on_green,
                        'onyellow': self._on_yellow,
                        'onred': self._on_red
                    }
                })

            def warn(self):
                self._fsm.warn()

            def panic(self):
                self._fsm.panic()

            def calm(self):
                self._fsm.calm()

            def clear(self):
                self._fsm.clear()

            def _on_green(self, *args, **kwargs):
                self._states.append('green')

            def _on_yellow(self, *args, **kwargs):
                self._states.append('yellow')

            def _on_red(self, *args, **kwargs):
                self._states.append('red')
Exemplo n.º 2
0
 def test_tuples_as_trasition_spec(self):
     fsm = Fysom({
         'initial': 'green',
         'events': [  # freely mix dicts and tuples
             {'name': 'warn', 'src': 'green', 'dst': 'yellow'},
             ('panic', 'yellow', 'red'),
             ('calm', 'red', 'yellow'),
             {'name': 'clear', 'src': 'yellow', 'dst': 'green'}
         ]
     })
     fsm.warn()
     fsm.panic()
     self.assertEqual(fsm.current, 'red')
     fsm.calm()
     fsm.clear()
     self.assertEqual(fsm.current, 'green')
Exemplo n.º 3
0
 def test_tuples_as_trasition_spec(self):
     fsm = Fysom({
         'initial':
         'green',
         'events': [  # freely mix dicts and tuples
             {
                 'name': 'warn',
                 'src': 'green',
                 'dst': 'yellow'
             }, ('panic', 'yellow', 'red'), ('calm', 'red', 'yellow'), {
                 'name': 'clear',
                 'src': 'yellow',
                 'dst': 'green'
             }
         ]
     })
     fsm.warn()
     fsm.panic()
     self.assertEqual(fsm.current, 'red')
     fsm.calm()
     fsm.clear()
     self.assertEqual(fsm.current, 'green')
        class MyTestObject(object):

            def __init__(self):
                self._states = []
                self._fsm = Fysom({
                    'initial': 'green',
                    'events': [
                        {'name': 'warn', 'src': 'green', 'dst': 'yellow'},
                        {'name': 'panic', 'src': 'yellow', 'dst': 'red'},
                        {'name': 'calm', 'src': 'red', 'dst': 'yellow'},
                        {'name': 'clear', 'src': 'yellow', 'dst': 'green'}
                    ],
                    'callbacks': {
                        'ongreen':  self._on_green,
                        'onyellow': self._on_yellow,
                        'onred':    self._on_red
                    }
                })

            def warn(self):
                self._fsm.warn()

            def panic(self):
                self._fsm.panic()

            def calm(self):
                self._fsm.calm()

            def clear(self):
                self._fsm.clear()

            def _on_green(self, *args, **kwargs):
                self._states.append('green')

            def _on_yellow(self, *args, **kwargs):
                self._states.append('yellow')

            def _on_red(self, *args, **kwargs):
                self._states.append('red')