diff options
author | 2015-05-30 14:57:13 +0200 | |
---|---|---|
committer | 2015-05-30 14:57:13 +0200 | |
commit | d1d9dfc2d4be85cee8c8c990950d72ee6df78e5e (patch) | |
tree | 495d4e5a066ee13be131f08437732b3588d43a42 /3rdparty/unittest-cpp/UnitTest++/TestRunner.cpp | |
parent | fe71f92dd24270ae7c5621166b096c665ca0e4f5 (diff) | |
parent | 51709eef04f9f0c6d621447c568e170927fa9472 (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.cpp | 82 |
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)); +} + +} |