| class CordTester(object): | |
| def __init__(self, fsmTable, stopState, stateTable = None, eventTable = None): | |
| self.fsmTable = fsmTable | |
| self.stopState = stopState | |
| self.stateTable = stateTable | |
| self.eventTable = eventTable | |
| self.currentState = None | |
| self.currentEvent = None | |
| self.nextState = None | |
| self.nextEvent = None | |
| def runTest(self): | |
| while self.currentState != self.stopState and self.currentEvent != None: | |
| if self.stateTable and self.eventTable: | |
| print 'Current state: %s, Current event: %s' %(self.stateTable.toStr(self.currentState), | |
| self.eventTable.toStr(self.currentEvent)) | |
| key = (self.currentState, self.currentEvent) | |
| (actions, nextState) = self.fsmTable[key] | |
| if actions: | |
| for a in actions: | |
| a() | |
| self.currentState = nextState | |
| self.currentEvent = self.nextEvent |