Vodafone Test Suite

Dependencies:   mbed-rtos mbed HTTPClient VodafoneUSBModem

Committer:
ashleymills
Date:
Tue Sep 18 15:38:54 2012 +0000
Revision:
45:f68fea0831d7
Parent:
44:6d0ac4747f5b
Child:
60:7efce4a3c26f
Framework now prints out description of failed tests. Put in placeholders for all test descriptions. Started working on Test08.

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 45:f68fea0831d7 11 case 0: break;
ashleymills 45:f68fea0831d7 12 case 1: break;
ashleymills 45:f68fea0831d7 13 case 2: break;
ashleymills 45:f68fea0831d7 14 case 3: break;
ashleymills 45:f68fea0831d7 15 case 4: break;
ashleymills 45:f68fea0831d7 16 case 5: break;
ashleymills 45:f68fea0831d7 17 case 6: break;
ashleymills 45:f68fea0831d7 18 case 7: break;
ashleymills 45:f68fea0831d7 19 case 8: return (VodafoneTestCase*) new Test08(_modem);
ashleymills 45:f68fea0831d7 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 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 }