Vodafone Test Suite

Dependencies:   mbed-rtos mbed HTTPClient VodafoneUSBModem

TestManager.cpp

Committer:
nherriot
Date:
2012-09-10
Revision:
28:c630a04a7198
Parent:
23:408199b5d2cb
Child:
29:c0e6f198db84

File content as of revision 28:c630a04a7198:

#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));

   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));
}

int TestManager::getTestProfileLength(TestProfile profile) {
    if(profile>=0 && profile <TESTS_END) {
      return gTestProfileLengths[profile];
   } else {
      LOG("Test profile out of bounds. Must be between 0 and %d",TESTS_END-1);
      return 0;
   }
}

int TestManager::executeTestProfile(TestProfile profile) {
   if(profile>=0 && profile <TESTS_END) {
      return executeTestList(gTestProfiles[profile], gTestProfileLengths[profile]);
   } else {
      LOG("Test profile out of bounds. Must be between 0 and %d",TESTS_END-1);
      return 0;
   }
}

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;
}