summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/unittest-cpp/UnitTest++/TestRunner.cpp
diff options
context:
space:
mode:
author ImJezze <jezze@gmx.net>2015-05-30 14:57:13 +0200
committer ImJezze <jezze@gmx.net>2015-05-30 14:57:13 +0200
commitd1d9dfc2d4be85cee8c8c990950d72ee6df78e5e (patch)
tree495d4e5a066ee13be131f08437732b3588d43a42 /3rdparty/unittest-cpp/UnitTest++/TestRunner.cpp
parentfe71f92dd24270ae7c5621166b096c665ca0e4f5 (diff)
parent51709eef04f9f0c6d621447c568e170927fa9472 (diff)
Merge pull request #4 from mamedev/master
Sync to base master
Diffstat (limited to '3rdparty/unittest-cpp/UnitTest++/TestRunner.cpp')
-rw-r--r--3rdparty/unittest-cpp/UnitTest++/TestRunner.cpp82
1 files changed, 82 insertions, 0 deletions
diff --git a/3rdparty/unittest-cpp/UnitTest++/TestRunner.cpp b/3rdparty/unittest-cpp/UnitTest++/TestRunner.cpp
new file mode 100644
index 00000000000..a8151e6a8d7
--- /dev/null
+++ b/3rdparty/unittest-cpp/UnitTest++/TestRunner.cpp
@@ -0,0 +1,82 @@
+#include "TestRunner.h"
+#include "TestResults.h"
+#include "TestReporter.h"
+#include "TestReporterStdout.h"
+#include "TimeHelpers.h"
+#include "MemoryOutStream.h"
+
+#include <cstring>
+
+
+namespace UnitTest {
+
+int RunAllTests()
+{
+ TestReporterStdout reporter;
+ TestRunner runner(reporter);
+ return runner.RunTestsIf(Test::GetTestList(), NULL, True(), 0);
+}
+
+
+TestRunner::TestRunner(TestReporter& reporter)
+ : m_reporter(&reporter)
+ , m_result(new TestResults(&reporter))
+ , m_timer(new Timer)
+{
+ m_timer->Start();
+}
+
+TestRunner::~TestRunner()
+{
+ delete m_result;
+ delete m_timer;
+}
+
+TestResults* TestRunner::GetTestResults()
+{
+ return m_result;
+}
+
+int TestRunner::Finish() const
+{
+ float const secondsElapsed = static_cast<float>(m_timer->GetTimeInMs() / 1000.0);
+ m_reporter->ReportSummary(m_result->GetTotalTestCount(),
+ m_result->GetFailedTestCount(),
+ m_result->GetFailureCount(),
+ secondsElapsed);
+
+ return m_result->GetFailureCount();
+}
+
+bool TestRunner::IsTestInSuite(const Test* const curTest, char const* suiteName) const
+{
+ using namespace std;
+ return (suiteName == NULL) || !strcmp(curTest->m_details.suiteName, suiteName);
+}
+
+void TestRunner::RunTest(TestResults* const result, Test* const curTest, int const maxTestTimeInMs) const
+{
+ if (curTest->m_isMockTest == false)
+ CurrentTest::Results() = result;
+
+ Timer testTimer;
+ testTimer.Start();
+
+ result->OnTestStart(curTest->m_details);
+
+ curTest->Run();
+
+ double const testTimeInMs = testTimer.GetTimeInMs();
+ if (maxTestTimeInMs > 0 && testTimeInMs > maxTestTimeInMs && !curTest->m_details.timeConstraintExempt)
+ {
+ MemoryOutStream stream;
+ stream << "Global time constraint failed. Expected under " << maxTestTimeInMs <<
+ "ms but took " << testTimeInMs << "ms.";
+
+ result->OnTestFailure(curTest->m_details, stream.GetText());
+ }
+
+ result->OnTestFinish(curTest->m_details, static_cast< float >(testTimeInMs / 1000.0));
+}
+
+}