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

TestCaseDummyModeManager_1.cpp

00001 // 00002 // Copyright 2004 P&P Software GmbH - All Rights Reserved 00003 // 00004 // TestCaseDummyModeManager_1.cpp 00005 // 00006 // Version 1.1 00007 // Date 14.04.03 00008 // Author A. Pasetti (P&P Software) 00009 00010 #include "TestCaseDummyModeManager_1.h" 00011 #include "../GeneralInclude/CompilerSwitches.h" 00012 #include "../GeneralInclude/ClassId.h" 00013 #include "../GeneralInclude/Constants.h" 00014 #include "../Base/CC_RootObject.h" 00015 #include "../Base/DC_DummyModeManager.h" 00016 #include "../Base/ModeManager.h" 00017 #include "../Event/DC_EventRepository.h" 00018 00019 TestCaseDummyModeManager_1::TestCaseDummyModeManager_1(void) : 00020 TestCaseWithEvtCheck(ID_DUMMYMODEMANAGER*10+1,"TestCaseDummyModeManager_1") { 00021 return; 00022 } 00023 00024 void TestCaseDummyModeManager_1::runTestCase(void) { 00025 00026 unsigned int nEvt = getNumberOfEvents(); 00027 DC_DummyModeManager* pMM = new DC_DummyModeManager(); 00028 DC_EventRepository* pRep = pMM->getEventRepository(); 00029 00030 // Verify correctness of class identifier 00031 if ( pMM->getClassId() != ID_DUMMYMODEMANAGER) 00032 { setTestResult(TEST_FAILURE, "Wrong class identifier"); 00033 return; 00034 } 00035 00036 // Dummy mode managers should not be configured at creation 00037 if ( pMM->isObjectConfigured() == CONFIGURED ) 00038 { setTestResult(TEST_FAILURE, "Wrong configuration status at creation"); 00039 return; 00040 } 00041 00042 // Load number of modes and check correctness 00043 TD_Mode n = 3; 00044 pMM->setNumberOfModes(n); 00045 if ( pMM->getNumberOfModes() != n) 00046 { setTestResult(TEST_FAILURE, "Wrong number of modes"); 00047 return; 00048 } 00049 00050 // Load default mode and check that component is configured 00051 TD_Mode def = 1; 00052 pMM->setDefaultMode(def); 00053 if ( pMM->isObjectConfigured() != CONFIGURED ) 00054 { setTestResult(TEST_FAILURE, "Wrong configuration status"); 00055 return; 00056 } 00057 00058 // Attempt to load illegal default mode and check correct event 00059 if (isNonNominalCheckAllowed()) { 00060 pMM->setDefaultMode(3); 00061 if ( !verifyLatestEvent(nEvt+1,EVT_ILLEGAL_MM) ) 00062 return; 00063 nEvt++; 00064 } 00065 00066 // Reset the component to complete initialization sequence 00067 // The current mode should be the default mode 00068 pMM->reset(); 00069 if ( pMM->getCurrentMode() != def) 00070 { setTestResult(TEST_FAILURE, "Current mode is not default mode"); 00071 return; 00072 } 00073 00074 // Check that all mode transitions are enabled 00075 if ( !pMM->isTransitionEnabled() ) 00076 { setTestResult(TEST_FAILURE, "Transitions are not enabled"); 00077 return; 00078 } 00079 for (TD_Mode i=0; i<n; i++) 00080 if ( !pMM->isTransitionEnabled(i) ) 00081 { setTestResult(TEST_FAILURE, "Transition is not enabled"); 00082 return; 00083 } 00084 00085 // Perform an update and verify correct functioning and event reporting 00086 pMM->update(); 00087 if ( pMM->getCurrentMode() != def+1 ) 00088 { setTestResult(TEST_FAILURE, "Mode transition was not performed"); 00089 return; 00090 } 00091 if ( pRep->getCounter() != nEvt+1 ) 00092 { setTestResult(TEST_FAILURE, "Wrong number of events"); 00093 return; 00094 } 00095 if (!verifyLatestEvent(nEvt+1,EVT_MOD_TRANS_PERFORMED)) 00096 return; 00097 nEvt++; 00098 00099 // Disable mode transitions and verify correctness 00100 pMM->setTransitionEnableStatus(DISABLED); 00101 if ( pMM->isTransitionEnabled() ) 00102 { setTestResult(TEST_FAILURE, "Wrong transition enable status"); 00103 return; 00104 } 00105 00106 // Attempt update and verify that no mode transition occurs and that 00107 // event report was correctly generated 00108 pMM->update(); 00109 if ( pMM->getCurrentMode() != def+1 ) 00110 { setTestResult(TEST_FAILURE, "Wrong operational mode"); 00111 return; 00112 } 00113 if (!verifyLatestEvent(nEvt+1,EVT_MOD_TRANS_INHIBITED)) 00114 return; 00115 nEvt++; 00116 00117 // Disable transitions to mode and verify correctness 00118 pMM->setTransitionEnableStatus(ENABLED); 00119 pMM->setTransitionEnableStatus(1,DISABLED); 00120 if ( pMM->isTransitionEnabled(1) != DISABLED ) 00121 { setTestResult(TEST_FAILURE, "Wrong enable status"); 00122 return; 00123 } 00124 00125 // Make two update requests. The last one should fail 00126 pMM->update(); // perform transition from mode 2 to mode 0 00127 pMM->update(); // attempt (disabled) transitions from mode 0 to mode 1 00128 if ( pMM->getCurrentMode() != 0 ) 00129 { setTestResult(TEST_FAILURE, "Wrong mode"); 00130 return; 00131 } 00132 nEvt = nEvt+2; // each call to update() should generate an event 00133 00134 // Attempt to todisable transition to non-existent mode and check correct event 00135 if (isNonNominalCheckAllowed()) { 00136 pMM->setTransitionEnableStatus(3,false); 00137 if ( !verifyLatestEvent(nEvt+1,EVT_ILLEGAL_MM) ) 00138 return; 00139 nEvt++; 00140 } 00141 00142 // Perform reset and verify correctness 00143 pMM->reset(); 00144 if ( pMM->getCurrentMode() != def ) 00145 { setTestResult(TEST_FAILURE, "Wrong mode after reset"); 00146 return; 00147 } 00148 if ( !pMM->isTransitionEnabled() ) 00149 { setTestResult(TEST_FAILURE, "Wrong transition enable status after reset"); 00150 return; 00151 } 00152 for (TD_Mode i=0; i<n; i++) 00153 if ( !pMM->isTransitionEnabled(i) ) 00154 { setTestResult(TEST_FAILURE, "Transition is not enabled after reset"); 00155 return; 00156 } 00157 00158 setTestResult(TEST_SUCCESS,"Test Successful"); 00159 return; 00160 }
Copyright 2003 P&P Software GmbH - All Rights Reserved