fix broken tests
diff --git a/tests/TestTestRunner.cpp b/tests/TestTestRunner.cpp
index fa05356..8a69241 100644
--- a/tests/TestTestRunner.cpp
+++ b/tests/TestTestRunner.cpp
@@ -1,328 +1,314 @@
-#include "UnitTest++/UnitTestPP.h"
+#include "../UnitTest++.h"
#include "RecordingReporter.h"
-#include "UnitTest++/ReportAssert.h"
-#include "UnitTest++/TestList.h"
-#include "UnitTest++/TimeHelpers.h"
-#include "UnitTest++/TimeConstraint.h"
-#include "UnitTest++/ReportAssertImpl.h"
+#include "../ReportAssert.h"
+#include "../TestList.h"
+#include "../TimeHelpers.h"
+#include "../TimeConstraint.h"
using namespace UnitTest;
namespace
{
-
-struct TestRunnerFixture
-{
- TestRunnerFixture()
- : runner(reporter)
- {
- s_testRunnerFixtureTestResults = runner.GetTestResults();
- }
-
- static TestResults* s_testRunnerFixtureTestResults;
-
- RecordingReporter reporter;
- TestList list;
- TestRunner runner;
-};
-
-TestResults* TestRunnerFixture::s_testRunnerFixtureTestResults = NULL;
-
-struct MockTest : public Test
-{
- MockTest(char const* testName, bool const success_, bool const assert_, int const count_ = 1)
+
+ struct MockTest : public Test
+ {
+ MockTest(char const* testName, bool const success_, bool const assert_, int const count_ = 1)
: Test(testName)
, success(success_)
, asserted(assert_)
, count(count_)
- {
- m_isMockTest = true;
- }
-
- virtual void RunImpl() const
- {
- TestResults* testResults = TestRunnerFixture::s_testRunnerFixtureTestResults;
-
- for (int i=0; i < count; ++i)
{
- if (asserted)
- Detail::ReportAssertEx(testResults, &m_details, "desc", "file", 0);
- else if (!success)
- testResults->OnTestFailure(m_details, "message");
}
- }
-
- bool const success;
- bool const asserted;
- int const count;
-};
-
-TEST_FIXTURE(TestRunnerFixture, TestStartIsReportedCorrectly)
-{
- MockTest test("goodtest", true, false);
- list.Add(&test);
-
- runner.RunTestsIf(list, NULL, True(), 0);
- CHECK_EQUAL(1, reporter.testRunCount);
- CHECK_EQUAL("goodtest", reporter.lastStartedTest);
-}
-
-TEST_FIXTURE(TestRunnerFixture, TestFinishIsReportedCorrectly)
-{
- MockTest test("goodtest", true, false);
- list.Add(&test);
-
- runner.RunTestsIf(list, NULL, True(), 0);
- CHECK_EQUAL(1, reporter.testFinishedCount);
- CHECK_EQUAL("goodtest", reporter.lastFinishedTest);
-}
-
-class SlowTest : public Test
-{
-public:
- SlowTest() : Test("slow", "somesuite", "filename", 123) {}
- virtual void RunImpl() const
+
+ virtual void RunImpl() const
+ {
+ TestResults& testResults_ = *CurrentTest::Results();
+ for (int i=0; i < count; ++i)
+ {
+ if (asserted)
+ ReportAssert("desc", "file", 0);
+ else if (!success)
+ testResults_.OnTestFailure(m_details, "message");
+ }
+ }
+
+ bool const success;
+ bool const asserted;
+ int const count;
+ };
+
+ struct FixtureBase {
+ explicit FixtureBase() : runner(reporter) { }
+ template <class Predicate>
+ int RunTestsIf(TestList const& list, char const* suiteName,
+ const Predicate& predicate, int maxTestTimeInMs)
+ {
+ TestResults* oldResults = CurrentTest::Results();
+ const TestDetails* oldDetails = CurrentTest::Details();
+ int result = runner.RunTestsIf(list, suiteName, predicate, maxTestTimeInMs);
+ CurrentTest::Results() = oldResults;
+ CurrentTest::Details() = oldDetails;
+ return result;
+ }
+ TestRunner runner;
+ RecordingReporter reporter;
+ };
+
+ struct TestRunnerFixture : public FixtureBase
{
- TimeHelpers::SleepMs(20);
- }
-};
-
-TEST_FIXTURE(TestRunnerFixture, TestFinishIsCalledWithCorrectTime)
-{
- SlowTest test;
- list.Add(&test);
-
- runner.RunTestsIf(list, NULL, True(), 0);
- CHECK(reporter.lastFinishedTestTime >= 0.005f && reporter.lastFinishedTestTime <= 0.050f);
-}
-
-TEST_FIXTURE(TestRunnerFixture, FailureCountIsZeroWhenNoTestsAreRun)
-{
- CHECK_EQUAL(0, runner.RunTestsIf(list, NULL, True(), 0));
- CHECK_EQUAL(0, reporter.testRunCount);
- CHECK_EQUAL(0, reporter.testFailedCount);
-}
-
-TEST_FIXTURE(TestRunnerFixture, CallsReportFailureOncePerFailingTest)
-{
- MockTest test1("test", false, false);
- list.Add(&test1);
- MockTest test2("test", true, false);
- list.Add(&test2);
- MockTest test3("test", false, false);
- list.Add(&test3);
-
- CHECK_EQUAL(2, runner.RunTestsIf(list, NULL, True(), 0));
- CHECK_EQUAL(2, reporter.testFailedCount);
-}
-
-TEST_FIXTURE(TestRunnerFixture, TestsThatAssertAreReportedAsFailing)
-{
- MockTest test("test", true, true);
- list.Add(&test);
-
- runner.RunTestsIf(list, NULL, True(), 0);
- CHECK_EQUAL(1, reporter.testFailedCount);
-}
-
-TEST_FIXTURE(TestRunnerFixture, AssertingTestAbortsAsSoonAsAssertIsHit)
-{
- MockTest test("test", false, true, 3);
- list.Add(&test);
- runner.RunTestsIf(list, NULL, True(), 0);
- CHECK_EQUAL(1, reporter.summaryFailureCount);
-}
-
-TEST_FIXTURE(TestRunnerFixture, ReporterNotifiedOfTestCount)
-{
- MockTest test1("test", true, false);
- MockTest test2("test", true, false);
- MockTest test3("test", true, false);
- list.Add(&test1);
- list.Add(&test2);
- list.Add(&test3);
-
- runner.RunTestsIf(list, NULL, True(), 0);
- CHECK_EQUAL(3, reporter.summaryTotalTestCount);
-}
-
-TEST_FIXTURE(TestRunnerFixture, ReporterNotifiedOfFailedTests)
-{
- MockTest test1("test", false, false, 2);
- MockTest test2("test", true, false);
- MockTest test3("test", false, false, 3);
- list.Add(&test1);
- list.Add(&test2);
- list.Add(&test3);
-
- runner.RunTestsIf(list, NULL, True(), 0);
- CHECK_EQUAL(2, reporter.summaryFailedTestCount);
-}
-
-TEST_FIXTURE(TestRunnerFixture, ReporterNotifiedOfFailures)
-{
- MockTest test1("test", false, false, 2);
- MockTest test2("test", true, false);
- MockTest test3("test", false, false, 3);
- list.Add(&test1);
- list.Add(&test2);
- list.Add(&test3);
-
- runner.RunTestsIf(list, NULL, True(), 0);
- CHECK_EQUAL(5, reporter.summaryFailureCount);
-}
-
-TEST_FIXTURE(TestRunnerFixture, SlowTestPassesForHighTimeThreshold)
-{
- SlowTest test;
- list.Add(&test);
-
- runner.RunTestsIf(list, NULL, True(), 0);
- CHECK_EQUAL(0, reporter.testFailedCount);
-}
-
-TEST_FIXTURE(TestRunnerFixture, SlowTestFailsForLowTimeThreshold)
-{
- SlowTest test;
- list.Add(&test);
-
- runner.RunTestsIf(list, NULL, True(), 3);
- CHECK_EQUAL(1, reporter.testFailedCount);
-}
-
-TEST_FIXTURE(TestRunnerFixture, SlowTestHasCorrectFailureInformation)
-{
- SlowTest test;
- list.Add(&test);
-
- runner.RunTestsIf(list, NULL, True(), 3);
-
- using namespace std;
-
- CHECK_EQUAL(test.m_details.testName, reporter.lastFailedTest);
- CHECK(strstr(test.m_details.filename, reporter.lastFailedFile));
- CHECK_EQUAL(test.m_details.lineNumber, reporter.lastFailedLine);
-
- CHECK(strstr(reporter.lastFailedMessage, "Global time constraint failed"));
- CHECK(strstr(reporter.lastFailedMessage, "3ms"));
-}
-
-
-namespace SlowTestHelper
-{
- TestRunnerFixture testRunnerFixture;
-
- TEST_EX(SlowExemptedTest, testRunnerFixture.list)
+ TestList list;
+ };
+
+ TEST_FIXTURE(TestRunnerFixture, TestStartIsReportedCorrectly)
{
- UNITTEST_TIME_CONSTRAINT_EXEMPT();
- TimeHelpers::SleepMs(20);
+ MockTest test("goodtest", true, false);
+ list.Add(&test);
+
+ RunTestsIf(list, NULL, True(), 0);
+ CHECK_EQUAL(1, reporter.testRunCount);
+ CHECK_EQUAL("goodtest", reporter.lastStartedTest);
}
- class Fixture {};
-
- TEST_FIXTURE_EX(Fixture, SlowExemptedTest, testRunnerFixture.list)
+ TEST_FIXTURE(TestRunnerFixture, TestFinishIsReportedCorrectly)
{
- UNITTEST_TIME_CONSTRAINT_EXEMPT();
- TimeHelpers::SleepMs(20);
+ MockTest test("goodtest", true, false);
+ list.Add(&test);
+
+ RunTestsIf(list, NULL, True(), 0);
+ CHECK_EQUAL(1, reporter.testFinishedCount);
+ CHECK_EQUAL("goodtest", reporter.lastFinishedTest);
}
-}
-
-TEST(SlowTestsWithTimeExemptionPass)
-{
- SlowTestHelper::testRunnerFixture.runner.RunTestsIf(SlowTestHelper::testRunnerFixture.list, NULL, True(), 3);
- CHECK_EQUAL(0, SlowTestHelper::testRunnerFixture.reporter.testFailedCount);
-}
-
-struct TestSuiteFixture
-{
- TestSuiteFixture()
+
+ class SlowTest : public Test
+ {
+ public:
+ SlowTest() : Test("slow", "somesuite", "filename", 123) {}
+ virtual void RunImpl() const
+ {
+ TimeHelpers::SleepMs(20);
+ }
+ };
+
+ TEST_FIXTURE(TestRunnerFixture, TestFinishIsCalledWithCorrectTime)
+ {
+ SlowTest test;
+ list.Add(&test);
+
+ RunTestsIf(list, NULL, True(), 0);
+ CHECK(reporter.lastFinishedTestTime >= 0.005f && reporter.lastFinishedTestTime <= 0.050f);
+ }
+
+ TEST_FIXTURE(TestRunnerFixture, FailureCountIsZeroWhenNoTestsAreRun)
+ {
+ CHECK_EQUAL(0, RunTestsIf(list, NULL, True(), 0));
+ CHECK_EQUAL(0, reporter.testRunCount);
+ CHECK_EQUAL(0, reporter.testFailedCount);
+ }
+
+ TEST_FIXTURE(TestRunnerFixture, CallsReportFailureOncePerFailingTest)
+ {
+ MockTest test1("test", false, false);
+ list.Add(&test1);
+ MockTest test2("test", true, false);
+ list.Add(&test2);
+ MockTest test3("test", false, false);
+ list.Add(&test3);
+
+ CHECK_EQUAL(2, RunTestsIf(list, NULL, True(), 0));
+ CHECK_EQUAL(2, reporter.testFailedCount);
+ }
+
+ TEST_FIXTURE(TestRunnerFixture, TestsThatAssertAreReportedAsFailing)
+ {
+ MockTest test("test", true, true);
+ list.Add(&test);
+
+ RunTestsIf(list, NULL, True(), 0);
+ CHECK_EQUAL(1, reporter.testFailedCount);
+ }
+
+
+ TEST_FIXTURE(TestRunnerFixture, ReporterNotifiedOfTestCount)
+ {
+ MockTest test1("test", true, false);
+ MockTest test2("test", true, false);
+ MockTest test3("test", true, false);
+ list.Add(&test1);
+ list.Add(&test2);
+ list.Add(&test3);
+
+ RunTestsIf(list, NULL, True(), 0);
+ CHECK_EQUAL(3, reporter.summaryTotalTestCount);
+ }
+
+ TEST_FIXTURE(TestRunnerFixture, ReporterNotifiedOfFailedTests)
+ {
+ MockTest test1("test", false, false, 2);
+ MockTest test2("test", true, false);
+ MockTest test3("test", false, false, 3);
+ list.Add(&test1);
+ list.Add(&test2);
+ list.Add(&test3);
+
+ RunTestsIf(list, NULL, True(), 0);
+ CHECK_EQUAL(2, reporter.summaryFailedTestCount);
+ }
+
+ TEST_FIXTURE(TestRunnerFixture, ReporterNotifiedOfFailures)
+ {
+ MockTest test1("test", false, false, 2);
+ MockTest test2("test", true, false);
+ MockTest test3("test", false, false, 3);
+ list.Add(&test1);
+ list.Add(&test2);
+ list.Add(&test3);
+
+ RunTestsIf(list, NULL, True(), 0);
+ CHECK_EQUAL(5, reporter.summaryFailureCount);
+ }
+
+ TEST_FIXTURE(TestRunnerFixture, SlowTestPassesForHighTimeThreshold)
+ {
+ SlowTest test;
+ list.Add(&test);
+
+ RunTestsIf(list, NULL, True(), 0);
+ CHECK_EQUAL(0, reporter.testFailedCount);
+ }
+
+ TEST_FIXTURE(TestRunnerFixture, SlowTestFailsForLowTimeThreshold)
+ {
+ SlowTest test;
+ list.Add(&test);
+
+ RunTestsIf(list, NULL, True(), 3);
+ CHECK_EQUAL(1, reporter.testFailedCount);
+ }
+
+ TEST_FIXTURE(TestRunnerFixture, SlowTestHasCorrectFailureInformation)
+ {
+ SlowTest test;
+ list.Add(&test);
+
+ RunTestsIf(list, NULL, True(), 3);
+
+ using namespace std;
+
+ CHECK_EQUAL(test.m_details.testName, reporter.lastFailedTest);
+ CHECK(strstr(test.m_details.filename, reporter.lastFailedFile));
+ CHECK_EQUAL(test.m_details.lineNumber, reporter.lastFailedLine);
+
+ CHECK(strstr(reporter.lastFailedMessage, "Global time constraint failed"));
+ CHECK(strstr(reporter.lastFailedMessage, "3ms"));
+ }
+
+ TEST_FIXTURE(TestRunnerFixture, SlowTestWithTimeExemptionPasses)
+ {
+ class SlowExemptedTest : public Test
+ {
+ public:
+ SlowExemptedTest() : Test("slowexempted", "", 0) {}
+ virtual void RunImpl() const
+ {
+ UNITTEST_TIME_CONSTRAINT_EXEMPT();
+ TimeHelpers::SleepMs(20);
+ }
+ };
+
+ SlowExemptedTest test;
+ list.Add(&test);
+
+ RunTestsIf(list, NULL, True(), 3);
+ CHECK_EQUAL(0, reporter.testFailedCount);
+ }
+
+ struct TestSuiteFixture : FixtureBase
+ {
+ TestSuiteFixture()
: test1("TestInDefaultSuite")
, test2("TestInOtherSuite", "OtherSuite")
, test3("SecondTestInDefaultSuite")
- , runner(reporter)
- {
- list.Add(&test1);
- list.Add(&test2);
- }
-
- Test test1;
- Test test2;
- Test test3;
- RecordingReporter reporter;
- TestList list;
- TestRunner runner;
-};
-
-TEST_FIXTURE(TestSuiteFixture, TestRunnerRunsAllSuitesIfNullSuiteIsPassed)
-{
- runner.RunTestsIf(list, NULL, True(), 0);
- CHECK_EQUAL(2, reporter.summaryTotalTestCount);
-}
-
-TEST_FIXTURE(TestSuiteFixture,TestRunnerRunsOnlySpecifiedSuite)
-{
- runner.RunTestsIf(list, "OtherSuite", True(), 0);
- CHECK_EQUAL(1, reporter.summaryTotalTestCount);
- CHECK_EQUAL("TestInOtherSuite", reporter.lastFinishedTest);
-}
-
-struct RunTestIfNameIs
-{
- RunTestIfNameIs(char const* name_)
- : name(name_)
- {
- }
-
- bool operator()(const Test* const test) const
- {
- using namespace std;
- return (0 == strcmp(test->m_details.testName, name));
- }
-
- char const* name;
-};
-
-TEST(TestMockPredicateBehavesCorrectly)
-{
- RunTestIfNameIs predicate("pass");
-
- Test pass("pass");
- Test fail("fail");
-
- CHECK(predicate(&pass));
- CHECK(!predicate(&fail));
-}
-
-TEST_FIXTURE(TestRunnerFixture, TestRunnerRunsTestsThatPassPredicate)
-{
- Test should_run("goodtest");
- list.Add(&should_run);
-
- Test should_not_run("badtest");
- list.Add(&should_not_run);
-
- runner.RunTestsIf(list, NULL, RunTestIfNameIs("goodtest"), 0);
- CHECK_EQUAL(1, reporter.testRunCount);
- CHECK_EQUAL("goodtest", reporter.lastStartedTest);
-}
-
-TEST_FIXTURE(TestRunnerFixture, TestRunnerOnlyRunsTestsInSpecifiedSuiteAndThatPassPredicate)
-{
- Test runningTest1("goodtest", "suite");
- Test skippedTest2("goodtest");
- Test skippedTest3("badtest", "suite");
- Test skippedTest4("badtest");
+ {
+ list.Add(&test1);
+ list.Add(&test2);
+ }
+
+ Test test1;
+ Test test2;
+ Test test3;
+ TestList list;
+ };
- list.Add(&runningTest1);
- list.Add(&skippedTest2);
- list.Add(&skippedTest3);
- list.Add(&skippedTest4);
-
- runner.RunTestsIf(list, "suite", RunTestIfNameIs("goodtest"), 0);
-
- CHECK_EQUAL(1, reporter.testRunCount);
- CHECK_EQUAL("goodtest", reporter.lastStartedTest);
- CHECK_EQUAL("suite", reporter.lastStartedSuite);
-}
-
-}
+ TEST_FIXTURE(TestSuiteFixture, TestRunnerRunsAllSuitesIfNullSuiteIsPassed)
+ {
+ RunTestsIf(list, NULL, True(), 0);
+ CHECK_EQUAL(2, reporter.summaryTotalTestCount);
+ }
+
+ TEST_FIXTURE(TestSuiteFixture,TestRunnerRunsOnlySpecifiedSuite)
+ {
+ RunTestsIf(list, "OtherSuite", True(), 0);
+ CHECK_EQUAL(1, reporter.summaryTotalTestCount);
+ CHECK_EQUAL("TestInOtherSuite", reporter.lastFinishedTest);
+ }
+
+ struct RunTestIfNameIs
+ {
+ RunTestIfNameIs(char const* name_)
+ : name(name_)
+ {
+ }
+
+ bool operator()(const Test* const test) const
+ {
+ using namespace std;
+ return (0 == strcmp(test->m_details.testName, name));
+ }
+
+ char const* name;
+ };
+
+ TEST(TestMockPredicateBehavesCorrectly)
+ {
+ RunTestIfNameIs predicate("pass");
+
+ Test pass("pass");
+ Test fail("fail");
+
+ CHECK(predicate(&pass));
+ CHECK(!predicate(&fail));
+ }
+
+ TEST_FIXTURE(TestRunnerFixture, TestRunnerRunsTestsThatPassPredicate)
+ {
+ Test should_run("goodtest");
+ list.Add(&should_run);
+
+ Test should_not_run("badtest");
+ list.Add(&should_not_run);
+
+ RunTestsIf(list, NULL, RunTestIfNameIs("goodtest"), 0);
+ CHECK_EQUAL(1, reporter.testRunCount);
+ CHECK_EQUAL("goodtest", reporter.lastStartedTest);
+ }
+
+ TEST_FIXTURE(TestRunnerFixture, TestRunnerOnlyRunsTestsInSpecifiedSuiteAndThatPassPredicate)
+ {
+ Test runningTest1("goodtest", "suite");
+ Test skippedTest2("goodtest");
+ Test skippedTest3("badtest", "suite");
+ Test skippedTest4("badtest");
+
+ list.Add(&runningTest1);
+ list.Add(&skippedTest2);
+ list.Add(&skippedTest3);
+ list.Add(&skippedTest4);
+
+ RunTestsIf(list, "suite", RunTestIfNameIs("goodtest"), 0);
+
+ CHECK_EQUAL(1, reporter.testRunCount);
+ CHECK_EQUAL("goodtest", reporter.lastStartedTest);
+ CHECK_EQUAL("suite", reporter.lastStartedSuite);
+ }
+
+}
\ No newline at end of file