Vodafone Test Suite
Dependencies: mbed-rtos mbed HTTPClient VodafoneUSBModem
TestManager.cpp@37:847f5f86e9ff, 2012-09-13 (annotated)
- Committer:
- ashleymills
- Date:
- Thu Sep 13 15:26:49 2012 +0000
- Revision:
- 37:847f5f86e9ff
- Parent:
- 35:6867af70c51c
- Child:
- 38:83085bfd1018
Test only constructed when executed. INCOMPLETE, need to change som e other stuff to reflect this.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ashleymills | 2:ea883307d02f | 1 | #include "TestManager.h" |
ashleymills | 3:28336c2e94e4 | 2 | #include "Tests.h" |
nherriot | 28:c630a04a7198 | 3 | |
ashleymills | 32:8ff0b67bb58c | 4 | // adds a test into the master test index |
ashleymills | 32:8ff0b67bb58c | 5 | void TestManager::addTest(VodafoneTestCase* testCase) { |
ashleymills | 33:16126e029d58 | 6 | _tests.push_back(testCase); |
ashleymills | 32:8ff0b67bb58c | 7 | } |
ashleymills | 32:8ff0b67bb58c | 8 | |
ashleymills | 37:847f5f86e9ff | 9 | VodafoneTestCase* TestManager::constructTest(int testID) { |
ashleymills | 37:847f5f86e9ff | 10 | switch(testID) { |
ashleymills | 37:847f5f86e9ff | 11 | case 0: break; |
ashleymills | 37:847f5f86e9ff | 12 | case 1: break; |
ashleymills | 37:847f5f86e9ff | 13 | case 2: break; |
ashleymills | 37:847f5f86e9ff | 14 | case 3: break; |
ashleymills | 37:847f5f86e9ff | 15 | case 4: break; |
ashleymills | 37:847f5f86e9ff | 16 | case 5: break; |
ashleymills | 37:847f5f86e9ff | 17 | case 6: break; |
ashleymills | 37:847f5f86e9ff | 18 | case 7: break; |
ashleymills | 37:847f5f86e9ff | 19 | case 8: break; |
ashleymills | 37:847f5f86e9ff | 20 | case 9: break; |
ashleymills | 37:847f5f86e9ff | 21 | case 10: return (VodafoneTestCase*) new Test10(_modem); |
ashleymills | 37:847f5f86e9ff | 22 | case 11: break; |
ashleymills | 37:847f5f86e9ff | 23 | case 12: return (VodafoneTestCase*) new Test12(_modem); |
ashleymills | 37:847f5f86e9ff | 24 | case 13: return (VodafoneTestCase*) new Test13(_modem); |
ashleymills | 37:847f5f86e9ff | 25 | case 14: return (VodafoneTestCase*) new Test14(_modem); |
ashleymills | 37:847f5f86e9ff | 26 | case 15: break; |
ashleymills | 37:847f5f86e9ff | 27 | case 16: return (VodafoneTestCase*) new Test16(_modem); |
ashleymills | 37:847f5f86e9ff | 28 | case 17: break; |
ashleymills | 37:847f5f86e9ff | 29 | case 18: break; |
ashleymills | 37:847f5f86e9ff | 30 | case 19: break; |
ashleymills | 37:847f5f86e9ff | 31 | case 20: break; |
ashleymills | 37:847f5f86e9ff | 32 | case 21: return (VodafoneTestCase*) new Test21(_modem); |
ashleymills | 37:847f5f86e9ff | 33 | case 22: return (VodafoneTestCase*) new Test22(_modem); |
ashleymills | 37:847f5f86e9ff | 34 | case 23: return (VodafoneTestCase*) new Test23(_modem); |
ashleymills | 37:847f5f86e9ff | 35 | case 24: break; |
ashleymills | 37:847f5f86e9ff | 36 | case 25: return (VodafoneTestCase*) new Test25(_modem); |
ashleymills | 37:847f5f86e9ff | 37 | case 26: return (VodafoneTestCase*) new Test26(_modem); |
ashleymills | 37:847f5f86e9ff | 38 | case 27: break; |
ashleymills | 37:847f5f86e9ff | 39 | case 28: break; |
ashleymills | 37:847f5f86e9ff | 40 | case 29: break; |
ashleymills | 37:847f5f86e9ff | 41 | case 30: break; |
ashleymills | 37:847f5f86e9ff | 42 | case 31: break; |
ashleymills | 37:847f5f86e9ff | 43 | case 32: break; |
ashleymills | 37:847f5f86e9ff | 44 | case 33: break; |
ashleymills | 37:847f5f86e9ff | 45 | case 34: break; |
ashleymills | 37:847f5f86e9ff | 46 | case 35: break; |
ashleymills | 37:847f5f86e9ff | 47 | case 36: break; |
ashleymills | 37:847f5f86e9ff | 48 | case 37: break; |
ashleymills | 37:847f5f86e9ff | 49 | case 38: break; |
ashleymills | 37:847f5f86e9ff | 50 | case 39: break; |
ashleymills | 37:847f5f86e9ff | 51 | case 40: break; |
ashleymills | 37:847f5f86e9ff | 52 | case 41: break; |
ashleymills | 37:847f5f86e9ff | 53 | case 42: break; |
ashleymills | 37:847f5f86e9ff | 54 | case 43: break; |
ashleymills | 37:847f5f86e9ff | 55 | case 44: break; |
ashleymills | 37:847f5f86e9ff | 56 | case 45: break; |
ashleymills | 37:847f5f86e9ff | 57 | case 46: break; |
ashleymills | 37:847f5f86e9ff | 58 | case 47: break; |
ashleymills | 37:847f5f86e9ff | 59 | case 48: break; |
ashleymills | 37:847f5f86e9ff | 60 | case 49: break; |
ashleymills | 37:847f5f86e9ff | 61 | case 50: return (VodafoneTestCase*) new Test50(_modem); |
ashleymills | 37:847f5f86e9ff | 62 | case 51: break; |
ashleymills | 37:847f5f86e9ff | 63 | case 52: break; |
ashleymills | 37:847f5f86e9ff | 64 | case 53: break; |
ashleymills | 37:847f5f86e9ff | 65 | case 54: break; |
ashleymills | 37:847f5f86e9ff | 66 | case 55: break; |
ashleymills | 37:847f5f86e9ff | 67 | case 56: return (VodafoneTestCase*) new Test56(_modem); |
ashleymills | 37:847f5f86e9ff | 68 | case 57: break; |
ashleymills | 37:847f5f86e9ff | 69 | case 58: break; |
ashleymills | 37:847f5f86e9ff | 70 | case 59: break; |
ashleymills | 37:847f5f86e9ff | 71 | }; |
ashleymills | 37:847f5f86e9ff | 72 | } |
ashleymills | 37:847f5f86e9ff | 73 | |
ashleymills | 32:8ff0b67bb58c | 74 | TestManager::TestManager(VodafoneUSBModem *m) : _modem(m) { |
ashleymills | 32:8ff0b67bb58c | 75 | // using direct array indexing instead of searching each time |
ashleymills | 32:8ff0b67bb58c | 76 | // dummy tests are inserted by the addTest function |
ashleymills | 37:847f5f86e9ff | 77 | //addTest((VodafoneTestCase*)new Test10(m)); |
ashleymills | 37:847f5f86e9ff | 78 | //addTest((VodafoneTestCase*)new Test12(m)); |
ashleymills | 37:847f5f86e9ff | 79 | |
ashleymills | 37:847f5f86e9ff | 80 | //addTest((VodafoneTestCase*)new Test13(m)); |
ashleymills | 37:847f5f86e9ff | 81 | //addTest((VodafoneTestCase*)new Test16(m)); |
ashleymills | 37:847f5f86e9ff | 82 | //addTest((VodafoneTestCase*)new Test21(m)); |
ashleymills | 37:847f5f86e9ff | 83 | |
ashleymills | 37:847f5f86e9ff | 84 | //addTest((VodafoneTestCase*)new Test22(m)); |
ashleymills | 37:847f5f86e9ff | 85 | //addTest((VodafoneTestCase*)new Test23(m)); |
ashleymills | 37:847f5f86e9ff | 86 | /* |
ashleymills | 35:6867af70c51c | 87 | addTest((VodafoneTestCase*)new Test25(m)); |
ashleymills | 35:6867af70c51c | 88 | addTest((VodafoneTestCase*)new Test26(m)); |
ashleymills | 35:6867af70c51c | 89 | addTest((VodafoneTestCase*)new Test50(m)); |
ashleymills | 35:6867af70c51c | 90 | addTest((VodafoneTestCase*)new Test56(m)); |
ashleymills | 37:847f5f86e9ff | 91 | */ |
ashleymills | 2:ea883307d02f | 92 | } |
ashleymills | 2:ea883307d02f | 93 | |
ashleymills | 22:5b1feecf2aeb | 94 | int TestManager::getTestProfileLength(TestProfile profile) { |
ashleymills | 26:9eefab9e28df | 95 | if(profile < TESTS_END) { // no test for >= 0 since TestProfile is unsigned |
ashleymills | 22:5b1feecf2aeb | 96 | return gTestProfileLengths[profile]; |
ashleymills | 22:5b1feecf2aeb | 97 | } else { |
ashleymills | 22:5b1feecf2aeb | 98 | LOG("Test profile out of bounds. Must be between 0 and %d",TESTS_END-1); |
ashleymills | 22:5b1feecf2aeb | 99 | return 0; |
ashleymills | 22:5b1feecf2aeb | 100 | } |
ashleymills | 22:5b1feecf2aeb | 101 | } |
ashleymills | 22:5b1feecf2aeb | 102 | |
ashleymills | 22:5b1feecf2aeb | 103 | int TestManager::executeTestProfile(TestProfile profile) { |
ashleymills | 24:8f0f9551122a | 104 | int numPassed = 0; |
ashleymills | 32:8ff0b67bb58c | 105 | if(profile<TESTS_END) { // no test for >= 0 since TestProfile is unsigned |
ashleymills | 24:8f0f9551122a | 106 | numPassed = executeTestList(gTestProfiles[profile], gTestProfileLengths[profile]); |
ashleymills | 22:5b1feecf2aeb | 107 | } else { |
ashleymills | 22:5b1feecf2aeb | 108 | LOG("Test profile out of bounds. Must be between 0 and %d",TESTS_END-1); |
ashleymills | 22:5b1feecf2aeb | 109 | return 0; |
ashleymills | 22:5b1feecf2aeb | 110 | } |
ashleymills | 24:8f0f9551122a | 111 | int numTests = getTestProfileLength(profile); |
ashleymills | 24:8f0f9551122a | 112 | LOG("%d tests complete: %d passes and %d failures.",numTests,numPassed,numTests-numPassed); |
ashleymills | 27:0297dbc3252b | 113 | LOG("Listing failures:"); |
ashleymills | 27:0297dbc3252b | 114 | listFailures(gTestProfiles[profile], gTestProfileLengths[profile]); |
ashleymills | 24:8f0f9551122a | 115 | return numPassed; |
ashleymills | 22:5b1feecf2aeb | 116 | } |
ashleymills | 22:5b1feecf2aeb | 117 | |
ashleymills | 27:0297dbc3252b | 118 | void TestManager::listFailures(const int *list, const int listLen) { |
ashleymills | 27:0297dbc3252b | 119 | for(int i=0; i<listLen; i++) { |
ashleymills | 27:0297dbc3252b | 120 | int testIndex = list[i]; |
ashleymills | 33:16126e029d58 | 121 | VodafoneTestCase* test = getTest(testIndex); |
ashleymills | 33:16126e029d58 | 122 | if(test==NULL) { |
ashleymills | 33:16126e029d58 | 123 | LOG("ERROR: Test %d is not in test list!.",testIndex); |
ashleymills | 27:0297dbc3252b | 124 | continue; |
ashleymills | 27:0297dbc3252b | 125 | } |
ashleymills | 27:0297dbc3252b | 126 | |
ashleymills | 27:0297dbc3252b | 127 | if(test->_lastRunOutcome==false) { |
ashleymills | 33:16126e029d58 | 128 | LOG("Test %d:",test->_testCaseNumber); |
ashleymills | 33:16126e029d58 | 129 | LOG(test->_description); |
ashleymills | 27:0297dbc3252b | 130 | } |
ashleymills | 27:0297dbc3252b | 131 | } |
ashleymills | 22:5b1feecf2aeb | 132 | } |
ashleymills | 22:5b1feecf2aeb | 133 | |
ashleymills | 32:8ff0b67bb58c | 134 | VodafoneTestCase* TestManager::getTest(int index) { |
ashleymills | 32:8ff0b67bb58c | 135 | for(int i=0; i<_tests.size(); i++) { |
ashleymills | 32:8ff0b67bb58c | 136 | if(index==_tests[i]->_testCaseNumber) |
ashleymills | 32:8ff0b67bb58c | 137 | return _tests[i]; |
ashleymills | 32:8ff0b67bb58c | 138 | } |
ashleymills | 32:8ff0b67bb58c | 139 | return NULL; |
ashleymills | 32:8ff0b67bb58c | 140 | } |
ashleymills | 32:8ff0b67bb58c | 141 | |
ashleymills | 19:26fbed33d4e7 | 142 | int TestManager::executeTestList(const int *list, const int listLen) { |
ashleymills | 2:ea883307d02f | 143 | int successfullTests = 0; |
ashleymills | 19:26fbed33d4e7 | 144 | LOG("Running %d tests...",listLen); |
ashleymills | 19:26fbed33d4e7 | 145 | for(int i=0; i<listLen; i++) { |
ashleymills | 19:26fbed33d4e7 | 146 | int testIndex = list[i]; |
ashleymills | 37:847f5f86e9ff | 147 | if(executeTest(testIndex)) { |
ashleymills | 2:ea883307d02f | 148 | successfullTests++; |
ashleymills | 2:ea883307d02f | 149 | } |
ashleymills | 2:ea883307d02f | 150 | } |
ashleymills | 2:ea883307d02f | 151 | return successfullTests; |
ashleymills | 2:ea883307d02f | 152 | } |
ashleymills | 2:ea883307d02f | 153 | |
ashleymills | 37:847f5f86e9ff | 154 | bool TestManager::executeTest(int testID) { |
ashleymills | 37:847f5f86e9ff | 155 | VodafoneTestCase* test = constructTest(testID);//getTest(testID); |
ashleymills | 33:16126e029d58 | 156 | if(test==NULL) { |
ashleymills | 37:847f5f86e9ff | 157 | LOG("Error. Test %d is not in test list! This will be counted as a failure.",testID); |
ashleymills | 37:847f5f86e9ff | 158 | delete test; |
ashleymills | 19:26fbed33d4e7 | 159 | return false; |
ashleymills | 19:26fbed33d4e7 | 160 | } |
ashleymills | 37:847f5f86e9ff | 161 | |
ashleymills | 37:847f5f86e9ff | 162 | LOG("Running test %d...",testID); |
ashleymills | 37:847f5f86e9ff | 163 | if(test->execute()) { |
ashleymills | 37:847f5f86e9ff | 164 | LOG("...OK"); |
ashleymills | 37:847f5f86e9ff | 165 | delete test; |
ashleymills | 37:847f5f86e9ff | 166 | return true; |
ashleymills | 37:847f5f86e9ff | 167 | } |
ashleymills | 37:847f5f86e9ff | 168 | LOG("...FAIL"); |
ashleymills | 37:847f5f86e9ff | 169 | delete test; |
ashleymills | 37:847f5f86e9ff | 170 | return false; |
ashleymills | 4:1f8e079924ba | 171 | } |
ashleymills | 4:1f8e079924ba | 172 | |
ashleymills | 33:16126e029d58 | 173 | bool TestManager::executeTest(int id, int numTimes) { |
ashleymills | 4:1f8e079924ba | 174 | for(int i=0; i<numTimes; i++) { |
ashleymills | 33:16126e029d58 | 175 | if(!executeTest(id)) |
ashleymills | 4:1f8e079924ba | 176 | return false; |
ashleymills | 4:1f8e079924ba | 177 | } |
ashleymills | 4:1f8e079924ba | 178 | return true; |
ashleymills | 2:ea883307d02f | 179 | } |