def testScanning_DoneScanning(self): sm = StateMachine() sm.handle_event(Event.START_PATROL) sm.handle_event(Event.SCANNING_TIME) sm.handle_event(Event.DONE_SCANNING) self.assertEqual(sm.get_state(), State.PATROLLING, "SCANNING + DONE_SCANNING is invalid")
def testPatrolling_ArrivedAtMolehill(self): sm = StateMachine() sm.handle_event(Event.START_PATROL) sm.handle_event(Event.ARRIVED_AT_MOLEHILL) self.assertEqual( sm.get_state(), State.SCARING, "PATROLLING + ARRIVED_AT_MOLEHILL -> SCARING is valid")
def testScaring_LowBattery(self): sm = StateMachine() sm.handle_event(Event.START_PATROL) sm.handle_event(Event.ARRIVED_AT_MOLEHILL) sm.handle_event(Event.LOW_BATTERY) self.assertEqual(sm.get_state(), State.PATROLLING, "SCARING + LOW_BATTERY -> PATROLLING is valid")
def testScanning_LowBattery(self): sm = StateMachine() sm.handle_event(Event.START_PATROL) sm.handle_event(Event.SCANNING_TIME) sm.handle_event(Event.LOW_BATTERY) self.assertEqual(sm.get_state(), State.PATROLLING, "SCANNING + LOW_BATTERY PATROLLING is valid")
def testCharging_FullyCharged(self): sm = StateMachine() sm.handle_event(Event.LOW_BATTERY) sm.handle_event(Event.ARRIVED_AT_BASE) sm.handle_event(Event.FULLY_CHARGED) self.assertEqual(sm.get_state(), State.IDLE, "RETURNING_TO_BASE + FULLY_CHARGED -> IDLE is valid")
def testScaring_DoneScaring(self): sm = StateMachine() sm.handle_event(Event.START_PATROL) sm.handle_event(Event.ARRIVED_AT_MOLEHILL) sm.handle_event(Event.DONE_SCARING) self.assertEqual(sm.get_state(), State.PATROLLING, "SCARING + DONE_SCARING -> PATROLLING is valid")
def testReturningToBase_ArrivedAtBase(self): sm = StateMachine() sm.handle_event(Event.LOW_BATTERY) sm.handle_event(Event.ARRIVED_AT_BASE) self.assertEqual( sm.get_state(), State.CHARGING, "RETURNING_TO_BASE + ARRIVED_AT_BASE -> CHARGING is valid")
def testPatrolling_LowBattery(self): sm = StateMachine() sm.handle_event(Event.START_PATROL) sm.handle_event(Event.LOW_BATTERY) self.assertEqual( sm.get_state(), State.RETURNING_TO_BASE, "PATROLLING + LOW_BATTERY -> RETURNING_TO_BASE is valid")
def testCreate(self): sm = StateMachine() self.assertEqual(sm.get_state(), State.IDLE, "When created should be in IDLE state.") self.assertNotEqual( sm.get_state(), State.PATROLLING, "Ensure that the IDLE state is not the same as the PATROLLING state" ) self.assertNotEqual( sm.get_state(), State.RETURNING_TO_BASE, "Ensure that the IDLE state is not the same as the RETURNING_TO_BASE state" ) self.assertNotEqual( sm.get_state(), State.CHARGING, "Ensure that the IDLE state is not the same as the CHARGING state") self.assertNotEqual( sm.get_state(), State.SCARING, "Ensure that the IDLE state is not the same as the SCARING state") self.assertNotEqual( sm.get_state(), State.SCANNING, "Ensure that the IDLE state is not the same as the SCANNING state")
def testIdle_LowBattery(self): sm = StateMachine() sm.handle_event(Event.LOW_BATTERY) self.assertEqual(sm.get_state(), State.RETURNING_TO_BASE, "IDLE + LOW_BATTERY -> RETURNING_TO_BASE is valid")
def testIdle_StartPatrol(self): sm = StateMachine() sm.handle_event(Event.START_PATROL) self.assertEqual(sm.get_state(), State.PATROLLING, "IDLE + START_PATROL -> PATROLLING is valid")
def testPatrolling_DonePatrolling(self): sm = StateMachine() sm.handle_event(Event.START_PATROL) sm.handle_event(Event.DONE_PATROLLING) self.assertEqual(sm.get_state(), State.IDLE, "PATROLLING + DONE_PATROLLING -> IDLE is valid")
def testPatrolling_ScanningTime(self): sm = StateMachine() sm.handle_event(Event.START_PATROL) sm.handle_event(Event.SCANNING_TIME) self.assertEqual(sm.get_state(), State.SCANNING, "PATROLLING + SCANNING_TIME -> SCANNING is valid")