aboutsummaryrefslogtreecommitdiffstats
path: root/tests/UnitTest++/src/TestRunner.h
diff options
context:
space:
mode:
authorAdam Domurad <[email protected]>2012-11-21 12:37:38 -0500
committerAdam Domurad <[email protected]>2012-11-21 12:37:38 -0500
commit47e24eece15121c917a30166037cbb072bb6a443 (patch)
treefe7730603d16164711ff8db7b9dea283888aae90 /tests/UnitTest++/src/TestRunner.h
parent86bfc5f740524bdd7f341f9e1b90e39369ad7e8f (diff)
Add UnitTest++ source code into ITW, without integration.
Diffstat (limited to 'tests/UnitTest++/src/TestRunner.h')
-rw-r--r--tests/UnitTest++/src/TestRunner.h61
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