Vodafone Test Suite

Dependencies:   mbed-rtos mbed HTTPClient VodafoneUSBModem

Committer:
ashleymills
Date:
Mon Sep 17 13:28:39 2012 +0000
Revision:
44:6d0ac4747f5b
Refactored names. Privatised virtuals to avoid bugs (bitten).

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ashleymills 44:6d0ac4747f5b 1 #include "TestManager.h"
ashleymills 44:6d0ac4747f5b 2 #include "Tests.h"
ashleymills 44:6d0ac4747f5b 3
ashleymills 44:6d0ac4747f5b 4 // adds a test into the master test index
ashleymills 44:6d0ac4747f5b 5 void TestManager::addTest(VodafoneTestCase* testCase) {
ashleymills 44:6d0ac4747f5b 6 _tests.push_back(testCase);
ashleymills 44:6d0ac4747f5b 7 }
ashleymills 44:6d0ac4747f5b 8
ashleymills 44:6d0ac4747f5b 9 VodafoneTestCase* TestManager::constructTest(int testID) {
ashleymills 44:6d0ac4747f5b 10 switch(testID) {
ashleymills 44:6d0ac4747f5b 11 case 0: break;
ashleymills 44:6d0ac4747f5b 12 case 1: break;
ashleymills 44:6d0ac4747f5b 13 case 2: break;
ashleymills 44:6d0ac4747f5b 14 case 3: break;
ashleymills 44:6d0ac4747f5b 15 case 4: break;
ashleymills 44:6d0ac4747f5b 16 case 5: break;
ashleymills 44:6d0ac4747f5b 17 case 6: break;
ashleymills 44:6d0ac4747f5b 18 case 7: break;
ashleymills 44:6d0ac4747f5b 19 case 8: break;
ashleymills 44:6d0ac4747f5b 20 case 9: break;
ashleymills 44:6d0ac4747f5b 21 case 10: return (VodafoneTestCase*) new Test10(_modem);
ashleymills 44:6d0ac4747f5b 22 case 11: break;
ashleymills 44:6d0ac4747f5b 23 case 12: return (VodafoneTestCase*) new Test12(_modem);
ashleymills 44:6d0ac4747f5b 24 case 13: return (VodafoneTestCase*) new Test13(_modem);
ashleymills 44:6d0ac4747f5b 25 case 14: return (VodafoneTestCase*) new Test14(_modem);
ashleymills 44:6d0ac4747f5b 26 case 15: break;
ashleymills 44:6d0ac4747f5b 27 case 16: return (VodafoneTestCase*) new Test16(_modem);
ashleymills 44:6d0ac4747f5b 28 case 17: break;
ashleymills 44:6d0ac4747f5b 29 case 18: break;
ashleymills 44:6d0ac4747f5b 30 case 19: break;
ashleymills 44:6d0ac4747f5b 31 case 20: break;
ashleymills 44:6d0ac4747f5b 32 case 21: return (VodafoneTestCase*) new Test21(_modem);
ashleymills 44:6d0ac4747f5b 33 case 22: return (VodafoneTestCase*) new Test22(_modem);
ashleymills 44:6d0ac4747f5b 34 case 23: return (VodafoneTestCase*) new Test23(_modem);
ashleymills 44:6d0ac4747f5b 35 case 24: break;
ashleymills 44:6d0ac4747f5b 36 case 25: return (VodafoneTestCase*) new Test25(_modem);
ashleymills 44:6d0ac4747f5b 37 case 26: return (VodafoneTestCase*) new Test26(_modem);
ashleymills 44:6d0ac4747f5b 38 case 27: break;
ashleymills 44:6d0ac4747f5b 39 case 28: break;
ashleymills 44:6d0ac4747f5b 40 case 29: break;
ashleymills 44:6d0ac4747f5b 41 case 30: break;
ashleymills 44:6d0ac4747f5b 42 case 31: break;
ashleymills 44:6d0ac4747f5b 43 case 32: break;
ashleymills 44:6d0ac4747f5b 44 case 33: break;
ashleymills 44:6d0ac4747f5b 45 case 34: break;
ashleymills 44:6d0ac4747f5b 46 case 35: break;
ashleymills 44:6d0ac4747f5b 47 case 36: break;
ashleymills 44:6d0ac4747f5b 48 case 37: break;
ashleymills 44:6d0ac4747f5b 49 case 38: break;
ashleymills 44:6d0ac4747f5b 50 case 39: break;
ashleymills 44:6d0ac4747f5b 51 case 40: break;
ashleymills 44:6d0ac4747f5b 52 case 41: break;
ashleymills 44:6d0ac4747f5b 53 case 42: break;
ashleymills 44:6d0ac4747f5b 54 case 43: break;
ashleymills 44:6d0ac4747f5b 55 case 44: break;
ashleymills 44:6d0ac4747f5b 56 case 45: break;
ashleymills 44:6d0ac4747f5b 57 case 46: break;
ashleymills 44:6d0ac4747f5b 58 case 47: break;
ashleymills 44:6d0ac4747f5b 59 case 48: break;
ashleymills 44:6d0ac4747f5b 60 case 49: break;
ashleymills 44:6d0ac4747f5b 61 case 50: return (VodafoneTestCase*) new Test50(_modem);
ashleymills 44:6d0ac4747f5b 62 case 51: break;
ashleymills 44:6d0ac4747f5b 63 case 52: break;
ashleymills 44:6d0ac4747f5b 64 case 53: break;
ashleymills 44:6d0ac4747f5b 65 case 54: break;
ashleymills 44:6d0ac4747f5b 66 case 55: break;
ashleymills 44:6d0ac4747f5b 67 case 56: return (VodafoneTestCase*) new Test56(_modem);
ashleymills 44:6d0ac4747f5b 68 case 57: break;
ashleymills 44:6d0ac4747f5b 69 case 58: break;
ashleymills 44:6d0ac4747f5b 70 case 59: break;
ashleymills 44:6d0ac4747f5b 71 default: return NULL;
ashleymills 44:6d0ac4747f5b 72 };
ashleymills 44:6d0ac4747f5b 73 return NULL; //< For compiler warning
ashleymills 44:6d0ac4747f5b 74 }
ashleymills 44:6d0ac4747f5b 75
ashleymills 44:6d0ac4747f5b 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 44:6d0ac4747f5b 79 }
ashleymills 44:6d0ac4747f5b 80
ashleymills 44:6d0ac4747f5b 81 void TestManager::resetTestOutcomes() {
ashleymills 44:6d0ac4747f5b 82 for(int i=0; i<NUMBER_OF_TESTS; i++) {
ashleymills 44:6d0ac4747f5b 83 _testOutcomes[i] = false;
ashleymills 44:6d0ac4747f5b 84 }
ashleymills 44:6d0ac4747f5b 85 }
ashleymills 44:6d0ac4747f5b 86
ashleymills 44:6d0ac4747f5b 87 int TestManager::getTestProfileLength(TestProfile profile) {
ashleymills 44:6d0ac4747f5b 88 if(profile < TESTS_END) { // no test for >= 0 since TestProfile is unsigned
ashleymills 44:6d0ac4747f5b 89 return gTestProfileLengths[profile];
ashleymills 44:6d0ac4747f5b 90 } else {
ashleymills 44:6d0ac4747f5b 91 LOG("Test profile out of bounds. Must be between 0 and %d",TESTS_END-1);
ashleymills 44:6d0ac4747f5b 92 return 0;
ashleymills 44:6d0ac4747f5b 93 }
ashleymills 44:6d0ac4747f5b 94 }
ashleymills 44:6d0ac4747f5b 95
ashleymills 44:6d0ac4747f5b 96 int TestManager::executeTestProfile(TestProfile profile) {
ashleymills 44:6d0ac4747f5b 97 //resetTestOutcomes();
ashleymills 44:6d0ac4747f5b 98 int numPassed = 0;
ashleymills 44:6d0ac4747f5b 99 if(profile<TESTS_END) { // no test for >= 0 since TestProfile is unsigned
ashleymills 44:6d0ac4747f5b 100 numPassed = executeTestList(gTestProfiles[profile], gTestProfileLengths[profile]);
ashleymills 44:6d0ac4747f5b 101 } else {
ashleymills 44:6d0ac4747f5b 102 LOG("Test profile out of bounds. Must be between 0 and %d",TESTS_END-1);
ashleymills 44:6d0ac4747f5b 103 return 0;
ashleymills 44:6d0ac4747f5b 104 }
ashleymills 44:6d0ac4747f5b 105 int numTests = getTestProfileLength(profile);
ashleymills 44:6d0ac4747f5b 106 LOG("%d tests complete: %d passes and %d failures.",numTests,numPassed,numTests-numPassed);
ashleymills 44:6d0ac4747f5b 107 LOG("Listing failures:");
ashleymills 44:6d0ac4747f5b 108 listFailures(gTestProfiles[profile], gTestProfileLengths[profile]);
ashleymills 44:6d0ac4747f5b 109 return numPassed;
ashleymills 44:6d0ac4747f5b 110 }
ashleymills 44:6d0ac4747f5b 111
ashleymills 44:6d0ac4747f5b 112 void TestManager::listFailures(const int *list, const int listLen) {
ashleymills 44:6d0ac4747f5b 113 for(int i=0; i<listLen; i++) {
ashleymills 44:6d0ac4747f5b 114 int testIndex = list[i];
ashleymills 44:6d0ac4747f5b 115
ashleymills 44:6d0ac4747f5b 116 if(_testOutcomes[testIndex]==false) {
ashleymills 44:6d0ac4747f5b 117 LOG("Test %d:",testIndex);
ashleymills 44:6d0ac4747f5b 118 //LOG(gTestDescriptions[testIndex]);
ashleymills 44:6d0ac4747f5b 119 }
ashleymills 44:6d0ac4747f5b 120 }
ashleymills 44:6d0ac4747f5b 121 }
ashleymills 44:6d0ac4747f5b 122
ashleymills 44:6d0ac4747f5b 123 /*
ashleymills 44:6d0ac4747f5b 124 VodafoneTestCase* TestManager::getTest(int index) {
ashleymills 44:6d0ac4747f5b 125 for(int i=0; i<_tests.size(); i++) {
ashleymills 44:6d0ac4747f5b 126 if(index==_tests[i]->_testCaseNumber)
ashleymills 44:6d0ac4747f5b 127 return _tests[i];
ashleymills 44:6d0ac4747f5b 128 }
ashleymills 44:6d0ac4747f5b 129 return NULL;
ashleymills 44:6d0ac4747f5b 130 }
ashleymills 44:6d0ac4747f5b 131 */
ashleymills 44:6d0ac4747f5b 132
ashleymills 44:6d0ac4747f5b 133 int TestManager::executeTestList(const int *list, const int listLen) {
ashleymills 44:6d0ac4747f5b 134 int successfullTests = 0;
ashleymills 44:6d0ac4747f5b 135 LOG("Running %d tests...",listLen);
ashleymills 44:6d0ac4747f5b 136 for(int i=0; i<listLen; i++) {
ashleymills 44:6d0ac4747f5b 137 int testIndex = list[i];
ashleymills 44:6d0ac4747f5b 138 if(executeTest(testIndex)) {
ashleymills 44:6d0ac4747f5b 139 successfullTests++;
ashleymills 44:6d0ac4747f5b 140 }
ashleymills 44:6d0ac4747f5b 141 }
ashleymills 44:6d0ac4747f5b 142 return successfullTests;
ashleymills 44:6d0ac4747f5b 143 }
ashleymills 44:6d0ac4747f5b 144
ashleymills 44:6d0ac4747f5b 145 bool TestManager::executeTest(int testID) {
ashleymills 44:6d0ac4747f5b 146 VodafoneTestCase* test = constructTest(testID);//getTest(testID);
ashleymills 44:6d0ac4747f5b 147 if(test==NULL) {
ashleymills 44:6d0ac4747f5b 148 LOG("Error. Test %d is not in test list! This will be counted as a failure.",testID);
ashleymills 44:6d0ac4747f5b 149 return false;
ashleymills 44:6d0ac4747f5b 150 }
ashleymills 44:6d0ac4747f5b 151
ashleymills 44:6d0ac4747f5b 152 LOG("Running test %d...",testID);
ashleymills 44:6d0ac4747f5b 153 if(test->execute()) {
ashleymills 44:6d0ac4747f5b 154 LOG("...OK");
ashleymills 44:6d0ac4747f5b 155 delete test;
ashleymills 44:6d0ac4747f5b 156 return true;
ashleymills 44:6d0ac4747f5b 157 }
ashleymills 44:6d0ac4747f5b 158 LOG("...FAIL");
ashleymills 44:6d0ac4747f5b 159 delete test;
ashleymills 44:6d0ac4747f5b 160 return false;
ashleymills 44:6d0ac4747f5b 161 }
ashleymills 44:6d0ac4747f5b 162
ashleymills 44:6d0ac4747f5b 163 bool TestManager::executeTest(int id, int numTimes) {
ashleymills 44:6d0ac4747f5b 164 for(int i=0; i<numTimes; i++) {
ashleymills 44:6d0ac4747f5b 165 if(!executeTest(id))
ashleymills 44:6d0ac4747f5b 166 return false;
ashleymills 44:6d0ac4747f5b 167 }
ashleymills 44:6d0ac4747f5b 168 return true;
ashleymills 44:6d0ac4747f5b 169 }