2
from twisted.trial import unittest
4
from vertex import statemachine
6
S_1, S_2 = 'S_1', 'S_2'
7
I_1, I_2 = 'I_1', 'I_2'
8
O_1, O_2 = 'O_1', 'O_2'
10
class TestMachine(statemachine.StateMachine):
24
def _event(self, name):
26
self.events.append(name)
29
def __getattr__(self, name):
30
if (name.startswith('exit_') or name.startswith('enter_') or
31
name.startswith('transition_') or name.startswith('output_')):
32
return self._event(name)
33
raise AttributeError(name)
35
class Transitions(unittest.TestCase):
39
self.assertEquals(m.state, S_1)
45
['exit_S_1', 'enter_S_1', 'transition_S_1_to_S_1', 'output_O_1'])
46
self.assertEquals(m.state, S_1)
52
['exit_S_1', 'enter_S_2', 'transition_S_1_to_S_2', 'output_O_1'])
53
self.assertEquals(m.state, S_2)
59
['exit_S_2', 'enter_S_2', 'transition_S_2_to_S_2', 'output_O_2'])
60
self.assertEquals(m.state, S_2)
66
['exit_S_2', 'enter_S_2', 'transition_S_2_to_S_2', 'output_O_1'])
67
self.assertEquals(m.state, S_2)