Vodafone Test Suite
Dependencies: mbed-rtos mbed HTTPClient VodafoneUSBModem
TestManager.cpp
- Committer:
- ashleymills
- Date:
- 2014-01-29
- Revision:
- 74:e52ac9624f7f
- Parent:
- 72:0e8e769fcf76
File content as of revision 74:e52ac9624f7f:
#include "TestManager.h" #include "Tests.h" // adds a test into the master test index void TestManager::addTest(VodafoneTestCase* testCase) { _tests.push_back(testCase); } VodafoneTestCase* TestManager::constructTest(int testID) { switch(testID) { case 0: return (VodafoneTestCase*) new Test00(_modem); case 1: return (VodafoneTestCase*) new Test01(_modem); case 2: return (VodafoneTestCase*) new Test02(_modem); case 3: return (VodafoneTestCase*) new Test03(_modem); case 4: return (VodafoneTestCase*) new Test04(_modem); case 5: return (VodafoneTestCase*) new Test05(_modem); case 6: return (VodafoneTestCase*) new Test06(_modem); case 7: return (VodafoneTestCase*) new Test07(_modem); case 8: return (VodafoneTestCase*) new Test08(_modem); case 9: return (VodafoneTestCase*) new Test09(_modem); case 10: return (VodafoneTestCase*) new Test10(_modem); case 11: return (VodafoneTestCase*) new Test11(_modem); case 12: return (VodafoneTestCase*) new Test12(_modem); case 13: return (VodafoneTestCase*) new Test13(_modem); case 14: return (VodafoneTestCase*) new Test14(_modem); case 15: return (VodafoneTestCase*) new Test15(_modem); case 16: break; case 17: break; case 18: break; case 19: break; case 20: break; case 21: break; case 22: break; case 23: break; case 24: break; case 25: break; case 26: break; case 27: break; case 28: break; case 29: break; case 30: break; case 31: break; case 32: break; case 33: break; case 34: break; case 35: break; case 36: break; case 37: break; case 38: break; case 39: break; case 40: break; case 41: break; case 42: break; case 43: break; case 44: break; case 45: break; case 46: break; case 47: break; case 48: break; case 49: break; case 50: break; case 51: break; case 52: break; case 53: break; case 54: break; case 55: break; case 56: break; case 57: break; case 58: break; case 59: break; default: return NULL; }; return NULL; //< For compiler warning } TestManager::TestManager(VodafoneUSBModem *m) : _modem(m) { _testOutcomes = (bool*)malloc(NUMBER_OF_TESTS*sizeof(bool)); resetTestOutcomes(); } void TestManager::resetTestOutcomes() { for(int i=0; i<NUMBER_OF_TESTS; i++) { _testOutcomes[i] = false; } } int TestManager::getTestProfileLength(TestProfile profile) { if(profile < TESTS_END) { // no test for >= 0 since TestProfile is unsigned return gTestProfileLengths[profile]; } else { LOG("Test profile out of bounds. Must be between 0 and %d",TESTS_END-1); return 0; } } int TestManager::runTestProfile(TestProfile profile) { resetTestOutcomes(); int numPassed = 0; if(profile<TESTS_END) { // no test for >= 0 since TestProfile is unsigned numPassed = runTestList(gTestProfiles[profile], gTestProfileLengths[profile]); } else { LOG("Test profile out of bounds. Must be between 0 and %d",TESTS_END-1); return 0; } int numTests = getTestProfileLength(profile); LOG("%d tests complete: %d passes and %d failures.",numTests,numPassed,numTests-numPassed); LOG("Listing failures:"); listFailures(gTestProfiles[profile], gTestProfileLengths[profile]); return numPassed; } void TestManager::listFailures(const int *list, const int listLen) { for(int i=0; i<listLen; i++) { int testIndex = list[i]; if(_testOutcomes[testIndex]==false) { LOG("Test %d:",testIndex); LOG(gTestDescriptions[testIndex]); } } } int TestManager::runTestList(const int *list, const int listLen) { int successfullTests = 0; LOG("Running %d tests...",listLen); for(int i=0; i<listLen; i++) { int testIndex = list[i]; if(runTest(testIndex)) { successfullTests++; _testOutcomes[testIndex] = true; } } return successfullTests; } bool TestManager::runTest(int testID) { VodafoneTestCase* test = constructTest(testID); if(test==NULL) { LOG("Error. Test %d is not in test list! This will be counted as a failure.",testID); return false; } LOG("Running test %d...",testID); if(test->run()) { LOG("...OK"); delete test; return true; } LOG("...FAIL"); delete test; return false; } bool TestManager::runTest(int id, int numTimes) { for(int i=0; i<numTimes; i++) { if(!runTest(id)) return false; } return true; }