Vodafone Test Suite

Dependencies:   mbed-rtos mbed HTTPClient VodafoneUSBModem

Revision:
33:16126e029d58
Parent:
31:9231acdde9ff
Parent:
32:8ff0b67bb58c
Child:
35:6867af70c51c
--- a/TestManager.cpp	Wed Sep 12 16:55:00 2012 +0000
+++ b/TestManager.cpp	Thu Sep 13 10:05:31 2012 +0000
@@ -1,36 +1,25 @@
 #include "TestManager.h"
 #include "Tests.h"
-TestManager::TestManager(VodafoneUSBModem *m) : _modem(m) {
-   // using direct array indexing instead of searching each time, so need to put in dummy tests
-   for(int i=0; i<10; i++) {  _tests.push_back(NULL); }
-   
-   _tests.push_back((VodafoneTestCase*)new Test10(_modem,10));
-   
-   for(int i=11; i<12; i++) {  _tests.push_back(NULL); }
-   _tests.push_back((VodafoneTestCase*)new Test12(_modem,12));
-   _tests.push_back((VodafoneTestCase*)new Test13(_modem,13));
-   
-   for(int i=14; i<16; i++) { _tests.push_back(NULL); }
-   _tests.push_back((VodafoneTestCase*)new Test16(_modem,16));
+
+// adds a test into the master test index
+void TestManager::addTest(VodafoneTestCase* testCase) {
+   _tests.push_back(testCase);
+}
 
-   for(int i=17; i<21; i++) { _tests.push_back(NULL); }
-   
-   _tests.push_back((VodafoneTestCase*)new Test21(_modem,21));
-   _tests.push_back((VodafoneTestCase*)new Test22(_modem,22));
-   _tests.push_back((VodafoneTestCase*)new Test23(_modem,23));
-   
-   for(int i=24; i<25; i++) { _tests.push_back(NULL); }
-   
-   _tests.push_back((VodafoneTestCase*)new Test25(_modem,25));
-   _tests.push_back((VodafoneTestCase*)new Test26(_modem,26));
-   
-   for(int i=27; i<50; i++) { _tests.push_back(NULL); }
-   
-   _tests.push_back((VodafoneTestCase*)new Test50(_modem,50));
-   
-   for(int i=51; i<56; i++) { _tests.push_back(NULL); }
-   
-   _tests.push_back((VodafoneTestCase*)new Test56(_modem,56));
+TestManager::TestManager(VodafoneUSBModem *m) : _modem(m) {
+   // using direct array indexing instead of searching each time
+   // dummy tests are inserted by the addTest function
+   addTest((VodafoneTestCase*)new Test10(_modem));
+   addTest((VodafoneTestCase*)new Test12(_modem));
+   addTest((VodafoneTestCase*)new Test13(_modem));
+   addTest((VodafoneTestCase*)new Test16(_modem));
+   addTest((VodafoneTestCase*)new Test21(_modem));
+   addTest((VodafoneTestCase*)new Test22(_modem));
+   addTest((VodafoneTestCase*)new Test23(_modem));
+   addTest((VodafoneTestCase*)new Test25(_modem));
+   addTest((VodafoneTestCase*)new Test26(_modem));
+   addTest((VodafoneTestCase*)new Test50(_modem));
+   addTest((VodafoneTestCase*)new Test56(_modem));
 }
 
 int TestManager::getTestProfileLength(TestProfile profile) {
@@ -43,11 +32,9 @@
 }
 
 int TestManager::executeTestProfile(TestProfile profile) {
-
    int numPassed = 0;
-   if(profile <TESTS_END) { // no test for >= 0 since TestProfile is unsigned
+   if(profile<TESTS_END) { // no test for >= 0 since TestProfile is unsigned
       numPassed = executeTestList(gTestProfiles[profile], gTestProfileLengths[profile]);
-
    } else {
       LOG("Test profile out of bounds. Must be between 0 and %d",TESTS_END-1);
       return 0;
@@ -63,39 +50,40 @@
    int successfullTests = 0;
    for(int i=0; i<listLen; i++) {
       int testIndex = list[i];
-      if(testIndex>=_tests.size()) {
-         LOG("Test out of bounds... Test index must be betweeen 0 and %d!",_tests.size());
+      VodafoneTestCase* test = getTest(testIndex);
+      if(test==NULL) {
+         LOG("ERROR: Test %d is not in test list!.",testIndex);
          continue;
       }
       
-      VodafoneTestCase* test = _tests[list[i]];
       if(test->_lastRunOutcome==false) {
-         LOG("Test %d:",list[i]);
-         LOG(gTestDescriptions[list[i]]);
+         LOG("Test %d:",test->_testCaseNumber);
+         LOG(test->_description);
       }
    }
 }
 
+VodafoneTestCase* TestManager::getTest(int index) {
+   for(int i=0; i<_tests.size(); i++) {
+      if(index==_tests[i]->_testCaseNumber)
+        return _tests[i];
+   }
+   return NULL;
+}
+
 int TestManager::executeTestList(const int *list, const int listLen) {
-   LOG("The executeTestList is: %d", list);
-   LOG("The executeTestListLength is: %d", listLen);
    int successfullTests = 0;
    LOG("Running %d tests...",listLen);
    for(int i=0; i<listLen; i++) {
       int testIndex = list[i];
-      LOG("Running test %d...",testIndex);
-      if(testIndex>=_tests.size()) {
-         LOG("Test out of bounds. Test index must be betweeen 0 and %d!",_tests.size());
+      VodafoneTestCase* test = getTest(testIndex);
+      if(test==NULL) {
+         LOG("Error. Test %d is not in test list! This will be counted as a failure.",testIndex);
          continue;
       }
       
-      VodafoneTestCase* test = _tests[list[i]];
-      if(test==NULL) {
-         LOG("NULL test!  This will be counted as a failure.");
-         continue;
-      }
-      
-      if(test->run()) {
+      LOG("Running test %d...",testIndex);
+      if(test->execute()) {
          LOG("...OK");
          successfullTests++;
       } else {
@@ -105,23 +93,20 @@
    return successfullTests;
 }
 
-bool TestManager::runTest(int id) {
-   if(id<0||id>=_tests.size()) {
-      LOG("Test ID must be between 0 and %d",_tests.size());
-      return false;
-   }
-   if(_tests[id]==NULL) {
-      LOG("NULL test!  This will be counted as a failure.");
+bool TestManager::executeTest(int id) {
+   VodafoneTestCase* test = getTest(id);
+   if(test==NULL) {
+      LOG("Error. Test %d is not in test list! This will be counted as a failure.",id);
       return false;
    }
    
-   return _tests[id]->run();
+   return _tests[id]->execute();
 }
 
 
-bool TestManager::runTest(int id, int numTimes) {
+bool TestManager::executeTest(int id, int numTimes) {
    for(int i=0; i<numTimes; i++) {
-      if(!runTest(id))
+      if(!executeTest(id))
          return false;
    }
    return true;