diff options
author | Adam Domurad <[email protected]> | 2012-11-21 12:37:38 -0500 |
---|---|---|
committer | Adam Domurad <[email protected]> | 2012-11-21 12:37:38 -0500 |
commit | 47e24eece15121c917a30166037cbb072bb6a443 (patch) | |
tree | fe7730603d16164711ff8db7b9dea283888aae90 /tests/UnitTest++/src/TestRunner.h | |
parent | 86bfc5f740524bdd7f341f9e1b90e39369ad7e8f (diff) |
Add UnitTest++ source code into ITW, without integration.
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 |