Main Page | Modules | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

TestCaseFromFsmEvent_1.cpp

00001 // 00002 // Copyright 2004 P&P Software GmbH - All Rights Reserved 00003 // 00004 // TestCaseFromFsmEvent_1.cpp 00005 // 00006 // Version 1.1 00007 // Date 04.04.03 00008 // Author A. Pasetti (P&P Software) 00009 00010 #include "TestCaseFromFsmEvent_1.h" 00011 #include "../GeneralInclude/CompilerSwitches.h" 00012 #include "../GeneralInclude/ClassId.h" 00013 #include "../GeneralInclude/BasicTypes.h" 00014 #include "../GeneralInclude/Constants.h" 00015 #include "../FSM/CC_FSM.h" 00016 #include "../FSM/DC_DummyFsmState.h" 00017 #include "../FSM/DC_FromFsmEvent.h" 00018 00019 TestCaseFromFsmEvent_1::TestCaseFromFsmEvent_1(void) : 00020 TestCaseGenericSetUp(ID_FROMFSMEVENT*10+1,"TestCaseFromFsmEvent_1") { 00021 return; 00022 } 00023 00024 void TestCaseFromFsmEvent_1::runTestCase(void) { 00025 00026 CC_FSM* pFsm = new CC_FSM(); 00027 00028 // Configure the FSM 00029 pFsm->setNumberOfStates(4); 00030 00031 DC_DummyFsmState* pState[4]; 00032 for (TD_FsmStateIndex i=0; i<pFsm->getNumberOfStates(); i++) 00033 pState[i] = new DC_DummyFsmState(); 00034 00035 for (TD_FsmStateIndex i=0; i<pFsm->getNumberOfStates(); i++) 00036 pFsm->setState(i,pState[i]); 00037 00038 pFsm->reset(); 00039 00040 // FSM object should now be configured 00041 if ( (pFsm->isObjectConfigured() == NOT_CONFIGURED) ) 00042 { setTestResult(TEST_FAILURE, 00043 "Wrong FSM configuration status after configuration was completed"); 00044 return; 00045 } 00046 00047 // Create one FromFsmEvents 00048 DC_FromFsmEvent* pFsmEvt_1 = new DC_FromFsmEvent(); 00049 00050 // Check the correctness of the class identifier 00051 if ( (pFsmEvt_1->getClassId() != ID_FROMFSMEVENT) ) 00052 { setTestResult(TEST_FAILURE,"Wrong class identifier"); 00053 return; 00054 } 00055 00056 // Check that FromFsmEvent is not configured 00057 if ( (pFsmEvt_1->isObjectConfigured() == CONFIGURED) ) 00058 { setTestResult(TEST_FAILURE,"Wrong configuration status"); 00059 return; 00060 } 00061 00062 // Configure the FromFsmEvent object and check the success of the 00063 // class-specific configuration action 00064 TD_FsmStateIndex evtStartingState = 2; 00065 TD_FsmStateIndex evtTargetState = 3; 00066 pFsmEvt_1->setTargetFsm(pFsm); 00067 pFsmEvt_1->setTargetState(evtTargetState); 00068 pFsmEvt_1->setStartingState(evtStartingState); 00069 if ( pFsmEvt_1->getStartingState() != evtStartingState ) 00070 { setTestResult(TEST_FAILURE,"Wrong starting state"); 00071 return; 00072 } 00073 00074 // Check that the FromFsmEvent is configured 00075 if ( (pFsmEvt_1->isObjectConfigured() != CONFIGURED) ) 00076 { setTestResult(TEST_FAILURE,"Wrong configuration status"); 00077 return; 00078 } 00079 00080 // Fire the FromFsmEvent from an FSM state other than its starting space 00081 TD_FsmStateIndex fsmState_1 = 1; 00082 pFsm->makeTransitionRequest(fsmState_1); 00083 pFsm->activate(); 00084 if ( pFsmEvt_1->execute() != ACTION_FAILURE ) 00085 { setTestResult(TEST_FAILURE,"Wrong execution return value"); 00086 return; 00087 } 00088 pFsm->activate(); 00089 if ( pFsm->getCurrentState() != fsmState_1 ) 00090 { setTestResult(TEST_FAILURE,"Wrong FSM state"); 00091 return; 00092 } 00093 00094 // Fire the FromFsmEvent from an FSM state equal to its starting space 00095 TD_FsmStateIndex fsmState_2 = evtStartingState; 00096 pFsm->makeTransitionRequest(fsmState_2); 00097 pFsm->activate(); 00098 if ( pFsmEvt_1->execute() != ACTION_SUCCESS ) 00099 { setTestResult(TEST_FAILURE,"Wrong execution return value"); 00100 return; 00101 } 00102 pFsm->activate(); 00103 if ( pFsm->getCurrentState() != evtTargetState ) 00104 { setTestResult(TEST_FAILURE,"Wrong FSM state"); 00105 return; 00106 } 00107 00108 setTestResult(TEST_SUCCESS,"Test Successful"); 00109 return; 00110 }
Copyright 2003 P&P Software GmbH - All Rights Reserved