Merge "Disallow adding transitions from terminal states"
This commit is contained in:
commit
f511ea9f94
@ -188,6 +188,10 @@ class FiniteMachine(object):
|
||||
raise excp.NotFound("Can not add a transition on event '%s' that"
|
||||
" ends in a undefined state '%s'"
|
||||
% (event, end))
|
||||
if self._states[start]['terminal']:
|
||||
raise excp.InvalidState("Can not add a transition on event '%s'"
|
||||
" that starts in the terminal state '%s'"
|
||||
% (event, start))
|
||||
self._transitions[start][event] = _Jump(end,
|
||||
self._states[end]['on_enter'],
|
||||
self._states[start]['on_exit'])
|
||||
|
@ -60,6 +60,12 @@ class FSMTest(testcase.TestCase):
|
||||
m.add_state('unknown')
|
||||
self.assertIn('unknown', m)
|
||||
|
||||
def test_no_add_transition_terminal(self):
|
||||
m = self._create_fsm('up')
|
||||
m.add_state('down', terminal=True)
|
||||
self.assertRaises(excp.InvalidState,
|
||||
m.add_transition, 'down', 'up', 'jump')
|
||||
|
||||
def test_duplicate_state(self):
|
||||
m = self._create_fsm('unknown')
|
||||
self.assertRaises(excp.Duplicate, m.add_state, 'unknown')
|
||||
|
Loading…
x
Reference in New Issue
Block a user