Vodafone Test Suite

Dependencies:   mbed-rtos mbed HTTPClient VodafoneUSBModem

TestManager.cpp

Committer:
ashleymills
Date:
2012-09-04
Revision:
20:18373fb68ad7
Parent:
19:26fbed33d4e7
Child:
22:5b1feecf2aeb

File content as of revision 20:18373fb68ad7:

#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<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<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<50; i++) {
      _tests.push_back(NULL);
   }
   _tests.push_back((VodafoneTestCase*)new Test50(_modem,50));
}

int TestManager::executeTestList(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];
      LOG("Running test %d...",testIndex);
      if(testIndex>=_tests.size()) {
         LOG("Test out of bounds. Test index must be betweeen 0 and %d!",_tests.size());
         continue;
      }
      
      VodafoneTestCase* test = _tests[list[i]];
      if(test==NULL) {
         LOG("NULL test!  This will be counted as a failure.");
         continue;
      }
      
      if(test->run()) {
         LOG("...OK");
         successfullTests++;
      } else {
         LOG("...FAIL");
      }
   }
   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.");
      return false;
   }
   
   return _tests[id]->run();
}


bool TestManager::runTest(int id, int numTimes) {
   for(int i=0; i<numTimes; i++) {
      if(!runTest(id))
         return false;
   }
   return true;
}