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')
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')
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')