diff options
Diffstat (limited to 'tests/UnitTest++/src/TestRunner.h')
-rw-r--r-- | tests/UnitTest++/src/TestRunner.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/tests/UnitTest++/src/TestRunner.h b/tests/UnitTest++/src/TestRunner.h new file mode 100644 index 0000000..0798af9 --- /dev/null +++ b/tests/UnitTest++/src/TestRunner.h @@ -0,0 +1,61 @@ +#ifndef UNITTEST_TESTRUNNER_H +#define UNITTEST_TESTRUNNER_H + +#include "Test.h" +#include "TestList.h" +#include "CurrentTest.h" + +namespace UnitTest { + +class TestReporter; +class TestResults; +class Timer; + +int RunAllTests(); + +struct True +{ + bool operator()(const Test* const) const + { + return true; + } +}; + +class TestRunner +{ +public: + explicit TestRunner(TestReporter& reporter); + ~TestRunner(); + + template <class Predicate> + int RunTestsIf(TestList const& list, char const* suiteName, + const Predicate& predicate, int maxTestTimeInMs) const + { + Test* curTest = list.GetHead(); + + while (curTest != 0) + { + if (IsTestInSuite(curTest,suiteName) && predicate(curTest)) + { + RunTest(m_result, curTest, maxTestTimeInMs); + } + + curTest = curTest->next; + } + + return Finish(); + } + +private: + TestReporter* m_reporter; + TestResults* m_result; + Timer* m_timer; + + int Finish() const; + bool IsTestInSuite(const Test* const curTest, char const* suiteName) const; + void RunTest(TestResults* const result, Test* const curTest, int const maxTestTimeInMs) const; +}; + +} + +#endif |