Vodafone Test Suite

Dependencies:   mbed-rtos mbed HTTPClient VodafoneUSBModem

Committer:
ashleymills
Date:
Thu Sep 13 10:05:31 2012 +0000
Revision:
33:16126e029d58
Parent:
31:9231acdde9ff
Parent:
32:8ff0b67bb58c
Child:
35:6867af70c51c
Changed test framework.

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 32:8ff0b67bb58c 9 TestManager::TestManager(VodafoneUSBModem *m) : _modem(m) {
ashleymills 32:8ff0b67bb58c 10 // using direct array indexing instead of searching each time
ashleymills 32:8ff0b67bb58c 11 // dummy tests are inserted by the addTest function
ashleymills 33:16126e029d58 12 addTest((VodafoneTestCase*)new Test10(_modem));
ashleymills 33:16126e029d58 13 addTest((VodafoneTestCase*)new Test12(_modem));
ashleymills 33:16126e029d58 14 addTest((VodafoneTestCase*)new Test13(_modem));
ashleymills 33:16126e029d58 15 addTest((VodafoneTestCase*)new Test16(_modem));
ashleymills 33:16126e029d58 16 addTest((VodafoneTestCase*)new Test21(_modem));
ashleymills 33:16126e029d58 17 addTest((VodafoneTestCase*)new Test22(_modem));
ashleymills 33:16126e029d58 18 addTest((VodafoneTestCase*)new Test23(_modem));
ashleymills 33:16126e029d58 19 addTest((VodafoneTestCase*)new Test25(_modem));
ashleymills 33:16126e029d58 20 addTest((VodafoneTestCase*)new Test26(_modem));
ashleymills 33:16126e029d58 21 addTest((VodafoneTestCase*)new Test50(_modem));
ashleymills 33:16126e029d58 22 addTest((VodafoneTestCase*)new Test56(_modem));
ashleymills 2:ea883307d02f 23 }
ashleymills 2:ea883307d02f 24
ashleymills 22:5b1feecf2aeb 25 int TestManager::getTestProfileLength(TestProfile profile) {
ashleymills 26:9eefab9e28df 26 if(profile < TESTS_END) { // no test for >= 0 since TestProfile is unsigned
ashleymills 22:5b1feecf2aeb 27 return gTestProfileLengths[profile];
ashleymills 22:5b1feecf2aeb 28 } else {
ashleymills 22:5b1feecf2aeb 29 LOG("Test profile out of bounds. Must be between 0 and %d",TESTS_END-1);
ashleymills 22:5b1feecf2aeb 30 return 0;
ashleymills 22:5b1feecf2aeb 31 }
ashleymills 22:5b1feecf2aeb 32 }
ashleymills 22:5b1feecf2aeb 33
ashleymills 22:5b1feecf2aeb 34 int TestManager::executeTestProfile(TestProfile profile) {
ashleymills 24:8f0f9551122a 35 int numPassed = 0;
ashleymills 32:8ff0b67bb58c 36 if(profile<TESTS_END) { // no test for >= 0 since TestProfile is unsigned
ashleymills 24:8f0f9551122a 37 numPassed = executeTestList(gTestProfiles[profile], gTestProfileLengths[profile]);
ashleymills 22:5b1feecf2aeb 38 } else {
ashleymills 22:5b1feecf2aeb 39 LOG("Test profile out of bounds. Must be between 0 and %d",TESTS_END-1);
ashleymills 22:5b1feecf2aeb 40 return 0;
ashleymills 22:5b1feecf2aeb 41 }
ashleymills 24:8f0f9551122a 42 int numTests = getTestProfileLength(profile);
ashleymills 24:8f0f9551122a 43 LOG("%d tests complete: %d passes and %d failures.",numTests,numPassed,numTests-numPassed);
ashleymills 27:0297dbc3252b 44 LOG("Listing failures:");
ashleymills 27:0297dbc3252b 45 listFailures(gTestProfiles[profile], gTestProfileLengths[profile]);
ashleymills 24:8f0f9551122a 46 return numPassed;
ashleymills 22:5b1feecf2aeb 47 }
ashleymills 22:5b1feecf2aeb 48
ashleymills 27:0297dbc3252b 49 void TestManager::listFailures(const int *list, const int listLen) {
ashleymills 27:0297dbc3252b 50 int successfullTests = 0;
ashleymills 27:0297dbc3252b 51 for(int i=0; i<listLen; i++) {
ashleymills 27:0297dbc3252b 52 int testIndex = list[i];
ashleymills 33:16126e029d58 53 VodafoneTestCase* test = getTest(testIndex);
ashleymills 33:16126e029d58 54 if(test==NULL) {
ashleymills 33:16126e029d58 55 LOG("ERROR: Test %d is not in test list!.",testIndex);
ashleymills 27:0297dbc3252b 56 continue;
ashleymills 27:0297dbc3252b 57 }
ashleymills 27:0297dbc3252b 58
ashleymills 27:0297dbc3252b 59 if(test->_lastRunOutcome==false) {
ashleymills 33:16126e029d58 60 LOG("Test %d:",test->_testCaseNumber);
ashleymills 33:16126e029d58 61 LOG(test->_description);
ashleymills 27:0297dbc3252b 62 }
ashleymills 27:0297dbc3252b 63 }
ashleymills 22:5b1feecf2aeb 64 }
ashleymills 22:5b1feecf2aeb 65
ashleymills 32:8ff0b67bb58c 66 VodafoneTestCase* TestManager::getTest(int index) {
ashleymills 32:8ff0b67bb58c 67 for(int i=0; i<_tests.size(); i++) {
ashleymills 32:8ff0b67bb58c 68 if(index==_tests[i]->_testCaseNumber)
ashleymills 32:8ff0b67bb58c 69 return _tests[i];
ashleymills 32:8ff0b67bb58c 70 }
ashleymills 32:8ff0b67bb58c 71 return NULL;
ashleymills 32:8ff0b67bb58c 72 }
ashleymills 32:8ff0b67bb58c 73
ashleymills 19:26fbed33d4e7 74 int TestManager::executeTestList(const int *list, const int listLen) {
ashleymills 2:ea883307d02f 75 int successfullTests = 0;
ashleymills 19:26fbed33d4e7 76 LOG("Running %d tests...",listLen);
ashleymills 19:26fbed33d4e7 77 for(int i=0; i<listLen; i++) {
ashleymills 19:26fbed33d4e7 78 int testIndex = list[i];
ashleymills 33:16126e029d58 79 VodafoneTestCase* test = getTest(testIndex);
ashleymills 33:16126e029d58 80 if(test==NULL) {
ashleymills 33:16126e029d58 81 LOG("Error. Test %d is not in test list! This will be counted as a failure.",testIndex);
ashleymills 19:26fbed33d4e7 82 continue;
ashleymills 19:26fbed33d4e7 83 }
ashleymills 19:26fbed33d4e7 84
ashleymills 33:16126e029d58 85 LOG("Running test %d...",testIndex);
ashleymills 33:16126e029d58 86 if(test->execute()) {
ashleymills 2:ea883307d02f 87 LOG("...OK");
ashleymills 2:ea883307d02f 88 successfullTests++;
ashleymills 2:ea883307d02f 89 } else {
ashleymills 2:ea883307d02f 90 LOG("...FAIL");
ashleymills 2:ea883307d02f 91 }
ashleymills 2:ea883307d02f 92 }
ashleymills 2:ea883307d02f 93 return successfullTests;
ashleymills 2:ea883307d02f 94 }
ashleymills 2:ea883307d02f 95
ashleymills 33:16126e029d58 96 bool TestManager::executeTest(int id) {
ashleymills 33:16126e029d58 97 VodafoneTestCase* test = getTest(id);
ashleymills 33:16126e029d58 98 if(test==NULL) {
ashleymills 33:16126e029d58 99 LOG("Error. Test %d is not in test list! This will be counted as a failure.",id);
ashleymills 19:26fbed33d4e7 100 return false;
ashleymills 19:26fbed33d4e7 101 }
ashleymills 19:26fbed33d4e7 102
ashleymills 33:16126e029d58 103 return _tests[id]->execute();
ashleymills 4:1f8e079924ba 104 }
ashleymills 4:1f8e079924ba 105
ashleymills 4:1f8e079924ba 106
ashleymills 33:16126e029d58 107 bool TestManager::executeTest(int id, int numTimes) {
ashleymills 4:1f8e079924ba 108 for(int i=0; i<numTimes; i++) {
ashleymills 33:16126e029d58 109 if(!executeTest(id))
ashleymills 4:1f8e079924ba 110 return false;
ashleymills 4:1f8e079924ba 111 }
ashleymills 4:1f8e079924ba 112 return true;
ashleymills 2:ea883307d02f 113 }