summaryrefslogtreecommitdiff
path: root/cesar/maximus/python/test/test_fsm.py
diff options
context:
space:
mode:
authorsave2008-04-07 14:17:42 +0000
committersave2008-04-07 14:17:42 +0000
commit3d58a62727346b7ac1a6cb36fed1a06ed72228dd (patch)
treed7788c3cf9f76426aef0286d0202e2097f0fa0eb /cesar/maximus/python/test/test_fsm.py
parent095dca4b0a8d4924093bab424f71f588fdd84613 (diff)
Moved the complete svn base into the cesar directory.
git-svn-id: svn+ssh://pessac/svn/cesar/trunk@1769 017c9cb6-072f-447c-8318-d5b54f68fe89
Diffstat (limited to 'cesar/maximus/python/test/test_fsm.py')
-rw-r--r--cesar/maximus/python/test/test_fsm.py75
1 files changed, 75 insertions, 0 deletions
diff --git a/cesar/maximus/python/test/test_fsm.py b/cesar/maximus/python/test/test_fsm.py
new file mode 100644
index 0000000000..598768eb28
--- /dev/null
+++ b/cesar/maximus/python/test/test_fsm.py
@@ -0,0 +1,75 @@
+#!/usr/bin/env python
+
+print "\n*** " + __file__ + " ***\n"
+
+import startup
+
+from maximus.fsm import *
+
+
+# FSM TEST
+
+def create (fsm):
+ fsm.something.append ("station")
+ print "Create station"
+def send (fsm):
+ print "Send a message"
+def receive (fsm):
+ print "Receive the response"
+def remove (fsm):
+ fsm.something.pop ()
+ print "Remove station"
+def error (fsm):
+ print "Error"
+ print str(fsm.input_symbol)
+
+def trace(fsm):
+ print '=>',fsm.current_state,fsm.something
+
+f = FSM.FSM('INIT',[])
+f.set_default_transition (error, 'IDLE')
+f.add_transition_any ('INIT', None, 'END')
+f.add_transition_any ('IDLE', None, 'END')
+f.add_transition_any ('BUSY', None, 'END')
+f.add_transition ('create_station', 'INIT', create, 'IDLE')
+f.add_transition ('send_message', 'IDLE', send, 'BUSY')
+f.add_transition ('receive_response', 'BUSY', receive, 'IDLE')
+f.add_transition ('remove_station', 'IDLE', remove, 'INIT')
+
+trace(f)
+f.process("create_station")
+trace(f)
+f.process("send_message")
+trace(f)
+f.process("receive_response")
+trace(f)
+f.process("remove_station")
+trace(f)
+f.process("I want to quit!")
+trace(f)
+
+while f.current_state!='END':
+ inputs = raw_input ('>')
+ previous_state = f.current_state
+ f.process (inputs)
+ print previous_state,'=>',f.current_state
+ print f.something
+
+
+# DOC TEST
+
+import doctest
+doctest.testmod(FSM)
+
+
+# UNIT TEST
+
+import unittest
+suite = unittest.TestSuite()
+try:
+ suite.addTest(doctest.DocTestSuite(FSM))
+except ValueError:
+ print "has no tests"
+
+if __name__ == '__main__':
+ testResult = unittest.TextTestRunner(verbosity=2).run(suite)