#!/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)