RepeatedTest.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:1k
源码类别:

模拟服务器

开发平台:

C/C++

  1. #ifndef CPPUNIT_REPEATEDTEST_H
  2. #define CPPUNIT_REPEATEDTEST_H
  3. #ifndef CPPUNIT_GUARDS_H
  4. #include "Guards.h"
  5. #endif
  6. #ifndef CPPUNIT_TESTDECORATOR_H
  7. #include "TestDecorator.h"
  8. #endif
  9. class Test;
  10. class TestResult;
  11. /*
  12.  * A decorator that runs a test repeatedly.
  13.  * Does not assume ownership of the test it decorates
  14.  *
  15.  */
  16. class RepeatedTest : public TestDecorator 
  17. {
  18.     REFERENCEOBJECT (RepeatedTest)
  19. public:
  20.                         RepeatedTest (Test *test, int timesRepeat)
  21.                             : TestDecorator (test), m_timesRepeat (timesRepeat) {}
  22.     int                 countTestCases ();
  23.     std::string         toString ();
  24.     void                run (TestResult *result);
  25. private:
  26.     const int           m_timesRepeat;
  27. };
  28. // Counts the number of test cases that will be run by this test.
  29. inline RepeatedTest::countTestCases ()
  30. { return TestDecorator::countTestCases () * m_timesRepeat; }
  31. // Returns the name of the test instance. 
  32. inline std::string RepeatedTest::toString ()
  33. { return TestDecorator::toString () + " (repeated)"; }
  34. // Runs a repeated test
  35. inline void RepeatedTest::run (TestResult *result)
  36. {
  37.     for (int n = 0; n < m_timesRepeat; n++) {
  38.         if (result->shouldStop ())
  39.             break;
  40.         TestDecorator::run (result);
  41.     }
  42. }
  43. #endif