Vodafone Test Suite

Dependencies:   mbed-rtos mbed HTTPClient VodafoneUSBModem

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?

UserRevisionLine numberNew 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 }