Vodafone Test Suite

Dependencies:   mbed-rtos mbed HTTPClient VodafoneUSBModem

Committer:
ashleymills
Date:
Wed Jan 29 16:34:38 2014 +0000
Revision:
74:e52ac9624f7f
Parent:
72:0e8e769fcf76
Updated dependencies to latest versions.

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 66:6b00a764e549 11 case 0: return (VodafoneTestCase*) new Test00(_modem);
ashleymills 66:6b00a764e549 12 case 1: return (VodafoneTestCase*) new Test01(_modem);
ashleymills 66:6b00a764e549 13 case 2: return (VodafoneTestCase*) new Test02(_modem);
ashleymills 66:6b00a764e549 14 case 3: return (VodafoneTestCase*) new Test03(_modem);
ashleymills 66:6b00a764e549 15 case 4: return (VodafoneTestCase*) new Test04(_modem);
ashleymills 66:6b00a764e549 16 case 5: return (VodafoneTestCase*) new Test05(_modem);
ashleymills 67:a61d60fa342c 17 case 6: return (VodafoneTestCase*) new Test06(_modem);
ashleymills 67:a61d60fa342c 18 case 7: return (VodafoneTestCase*) new Test07(_modem);
ashleymills 67:a61d60fa342c 19 case 8: return (VodafoneTestCase*) new Test08(_modem);
ashleymills 67:a61d60fa342c 20 case 9: return (VodafoneTestCase*) new Test09(_modem);
ashleymills 67:a61d60fa342c 21 case 10: return (VodafoneTestCase*) new Test10(_modem);
ashleymills 67:a61d60fa342c 22 case 11: return (VodafoneTestCase*) new Test11(_modem);
ashleymills 67:a61d60fa342c 23 case 12: return (VodafoneTestCase*) new Test12(_modem);
ashleymills 67:a61d60fa342c 24 case 13: return (VodafoneTestCase*) new Test13(_modem);
ashleymills 67:a61d60fa342c 25 case 14: return (VodafoneTestCase*) new Test14(_modem);
ashleymills 72:0e8e769fcf76 26 case 15: return (VodafoneTestCase*) new Test15(_modem);
ashleymills 66:6b00a764e549 27 case 16: break;
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 66:6b00a764e549 32 case 21: break;
ashleymills 66:6b00a764e549 33 case 22: break;
ashleymills 66:6b00a764e549 34 case 23: break;
ashleymills 37:847f5f86e9ff 35 case 24: break;
ashleymills 66:6b00a764e549 36 case 25: break;
ashleymills 66:6b00a764e549 37 case 26: break;
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 66:6b00a764e549 61 case 50: break;
ashleymills 66:6b00a764e549 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 66:6b00a764e549 67 case 56: break;
ashleymills 37:847f5f86e9ff 68 case 57: break;
ashleymills 37:847f5f86e9ff 69 case 58: break;
ashleymills 37:847f5f86e9ff 70 case 59: break;
ashleymills 40:32b0558320ea 71 default: return NULL;
ashleymills 37:847f5f86e9ff 72 };
ashleymills 40:32b0558320ea 73 return NULL; //< For compiler warning
ashleymills 37:847f5f86e9ff 74 }
ashleymills 37:847f5f86e9ff 75
ashleymills 32:8ff0b67bb58c 76 TestManager::TestManager(VodafoneUSBModem *m) : _modem(m) {
ashleymills 44:6d0ac4747f5b 77 _testOutcomes = (bool*)malloc(NUMBER_OF_TESTS*sizeof(bool));
ashleymills 44:6d0ac4747f5b 78 resetTestOutcomes();
ashleymills 40:32b0558320ea 79 }
ashleymills 40:32b0558320ea 80
ashleymills 40:32b0558320ea 81 void TestManager::resetTestOutcomes() {
ashleymills 40:32b0558320ea 82 for(int i=0; i<NUMBER_OF_TESTS; i++) {
ashleymills 40:32b0558320ea 83 _testOutcomes[i] = false;
ashleymills 40:32b0558320ea 84 }
ashleymills 2:ea883307d02f 85 }
ashleymills 2:ea883307d02f 86
ashleymills 22:5b1feecf2aeb 87 int TestManager::getTestProfileLength(TestProfile profile) {
ashleymills 26:9eefab9e28df 88 if(profile < TESTS_END) { // no test for >= 0 since TestProfile is unsigned
ashleymills 22:5b1feecf2aeb 89 return gTestProfileLengths[profile];
ashleymills 22:5b1feecf2aeb 90 } else {
ashleymills 22:5b1feecf2aeb 91 LOG("Test profile out of bounds. Must be between 0 and %d",TESTS_END-1);
ashleymills 22:5b1feecf2aeb 92 return 0;
ashleymills 22:5b1feecf2aeb 93 }
ashleymills 22:5b1feecf2aeb 94 }
ashleymills 22:5b1feecf2aeb 95
ashleymills 44:6d0ac4747f5b 96 int TestManager::runTestProfile(TestProfile profile) {
ashleymills 44:6d0ac4747f5b 97 resetTestOutcomes();
ashleymills 24:8f0f9551122a 98 int numPassed = 0;
ashleymills 32:8ff0b67bb58c 99 if(profile<TESTS_END) { // no test for >= 0 since TestProfile is unsigned
ashleymills 44:6d0ac4747f5b 100 numPassed = runTestList(gTestProfiles[profile], gTestProfileLengths[profile]);
ashleymills 22:5b1feecf2aeb 101 } else {
ashleymills 22:5b1feecf2aeb 102 LOG("Test profile out of bounds. Must be between 0 and %d",TESTS_END-1);
ashleymills 22:5b1feecf2aeb 103 return 0;
ashleymills 22:5b1feecf2aeb 104 }
ashleymills 24:8f0f9551122a 105 int numTests = getTestProfileLength(profile);
ashleymills 24:8f0f9551122a 106 LOG("%d tests complete: %d passes and %d failures.",numTests,numPassed,numTests-numPassed);
ashleymills 27:0297dbc3252b 107 LOG("Listing failures:");
ashleymills 27:0297dbc3252b 108 listFailures(gTestProfiles[profile], gTestProfileLengths[profile]);
ashleymills 24:8f0f9551122a 109 return numPassed;
ashleymills 22:5b1feecf2aeb 110 }
ashleymills 22:5b1feecf2aeb 111
ashleymills 27:0297dbc3252b 112 void TestManager::listFailures(const int *list, const int listLen) {
ashleymills 27:0297dbc3252b 113 for(int i=0; i<listLen; i++) {
ashleymills 27:0297dbc3252b 114 int testIndex = list[i];
ashleymills 27:0297dbc3252b 115
ashleymills 40:32b0558320ea 116 if(_testOutcomes[testIndex]==false) {
ashleymills 40:32b0558320ea 117 LOG("Test %d:",testIndex);
ashleymills 45:f68fea0831d7 118 LOG(gTestDescriptions[testIndex]);
ashleymills 27:0297dbc3252b 119 }
ashleymills 27:0297dbc3252b 120 }
ashleymills 22:5b1feecf2aeb 121 }
ashleymills 22:5b1feecf2aeb 122
ashleymills 44:6d0ac4747f5b 123 int TestManager::runTestList(const int *list, const int listLen) {
ashleymills 2:ea883307d02f 124 int successfullTests = 0;
ashleymills 19:26fbed33d4e7 125 LOG("Running %d tests...",listLen);
ashleymills 19:26fbed33d4e7 126 for(int i=0; i<listLen; i++) {
ashleymills 19:26fbed33d4e7 127 int testIndex = list[i];
ashleymills 44:6d0ac4747f5b 128 if(runTest(testIndex)) {
ashleymills 2:ea883307d02f 129 successfullTests++;
ashleymills 45:f68fea0831d7 130 _testOutcomes[testIndex] = true;
ashleymills 2:ea883307d02f 131 }
ashleymills 2:ea883307d02f 132 }
ashleymills 2:ea883307d02f 133 return successfullTests;
ashleymills 2:ea883307d02f 134 }
ashleymills 2:ea883307d02f 135
ashleymills 44:6d0ac4747f5b 136 bool TestManager::runTest(int testID) {
ashleymills 44:6d0ac4747f5b 137 VodafoneTestCase* test = constructTest(testID);
ashleymills 33:16126e029d58 138 if(test==NULL) {
ashleymills 37:847f5f86e9ff 139 LOG("Error. Test %d is not in test list! This will be counted as a failure.",testID);
ashleymills 19:26fbed33d4e7 140 return false;
ashleymills 19:26fbed33d4e7 141 }
ashleymills 37:847f5f86e9ff 142
ashleymills 37:847f5f86e9ff 143 LOG("Running test %d...",testID);
ashleymills 44:6d0ac4747f5b 144 if(test->run()) {
ashleymills 37:847f5f86e9ff 145 LOG("...OK");
ashleymills 37:847f5f86e9ff 146 delete test;
ashleymills 37:847f5f86e9ff 147 return true;
ashleymills 37:847f5f86e9ff 148 }
ashleymills 37:847f5f86e9ff 149 LOG("...FAIL");
ashleymills 37:847f5f86e9ff 150 delete test;
ashleymills 37:847f5f86e9ff 151 return false;
ashleymills 4:1f8e079924ba 152 }
ashleymills 4:1f8e079924ba 153
ashleymills 44:6d0ac4747f5b 154 bool TestManager::runTest(int id, int numTimes) {
ashleymills 4:1f8e079924ba 155 for(int i=0; i<numTimes; i++) {
ashleymills 44:6d0ac4747f5b 156 if(!runTest(id))
ashleymills 4:1f8e079924ba 157 return false;
ashleymills 4:1f8e079924ba 158 }
ashleymills 4:1f8e079924ba 159 return true;
ashleymills 2:ea883307d02f 160 }