| #include "UnitTest++/UnitTestPP.h" |
| #include "UnitTest++/CompositeTestReporter.h" |
| |
| using namespace UnitTest; |
| |
| namespace { |
| |
| TEST(ZeroReportersByDefault) |
| { |
| CHECK_EQUAL(0, CompositeTestReporter().GetReporterCount()); |
| } |
| |
| struct MockReporter : TestReporter |
| { |
| MockReporter() |
| : testStartCalled(false) |
| , testStartDetails(NULL) |
| , failureCalled(false) |
| , failureDetails(NULL) |
| , failureStr(NULL) |
| , testFinishCalled(false) |
| , testFinishDetails(NULL) |
| , testFinishSecondsElapsed(-1.0f) |
| , summaryCalled(false) |
| , summaryTotalTestCount(-1) |
| , summaryFailureCount(-1) |
| , summarySecondsElapsed(-1.0f) |
| { |
| } |
| |
| virtual void ReportTestStart(TestDetails const& test) |
| { |
| testStartCalled = true; |
| testStartDetails = &test; |
| } |
| |
| virtual void ReportFailure(TestDetails const& test, char const* failure) |
| { |
| failureCalled = true; |
| failureDetails = &test; |
| failureStr = failure; |
| } |
| |
| virtual void ReportTestFinish(TestDetails const& test, float secondsElapsed) |
| { |
| testFinishCalled = true; |
| testFinishDetails = &test; |
| testFinishSecondsElapsed = secondsElapsed; |
| } |
| |
| virtual void ReportSummary(int totalTestCount, |
| int failedTestCount, |
| int failureCount, |
| float secondsElapsed) |
| { |
| summaryCalled = true; |
| summaryTotalTestCount = totalTestCount; |
| summaryFailedTestCount = failedTestCount; |
| summaryFailureCount = failureCount; |
| summarySecondsElapsed = secondsElapsed; |
| } |
| |
| bool testStartCalled; |
| TestDetails const* testStartDetails; |
| |
| bool failureCalled; |
| TestDetails const* failureDetails; |
| const char* failureStr; |
| |
| bool testFinishCalled; |
| TestDetails const* testFinishDetails; |
| float testFinishSecondsElapsed; |
| |
| bool summaryCalled; |
| int summaryTotalTestCount; |
| int summaryFailedTestCount; |
| int summaryFailureCount; |
| float summarySecondsElapsed; |
| }; |
| |
| TEST(AddReporter) |
| { |
| MockReporter r; |
| CompositeTestReporter c; |
| |
| CHECK(c.AddReporter(&r)); |
| CHECK_EQUAL(1, c.GetReporterCount()); |
| } |
| |
| TEST(RemoveReporter) |
| { |
| MockReporter r; |
| CompositeTestReporter c; |
| |
| c.AddReporter(&r); |
| CHECK(c.RemoveReporter(&r)); |
| CHECK_EQUAL(0, c.GetReporterCount()); |
| } |
| |
| struct Fixture |
| { |
| Fixture() |
| { |
| c.AddReporter(&r0); |
| c.AddReporter(&r1); |
| } |
| |
| MockReporter r0, r1; |
| CompositeTestReporter c; |
| }; |
| |
| TEST_FIXTURE(Fixture, ReportTestStartCallsReportTestStartOnAllAggregates) |
| { |
| TestDetails t("", "", "", 0); |
| c.ReportTestStart(t); |
| |
| CHECK(r0.testStartCalled); |
| CHECK_EQUAL(&t, r0.testStartDetails); |
| CHECK(r1.testStartCalled); |
| CHECK_EQUAL(&t, r1.testStartDetails); |
| } |
| |
| TEST_FIXTURE(Fixture, ReportFailureCallsReportFailureOnAllAggregates) |
| { |
| TestDetails t("", "", "", 0); |
| const char* failStr = "fail"; |
| c.ReportFailure(t, failStr); |
| |
| CHECK(r0.failureCalled); |
| CHECK_EQUAL(&t, r0.failureDetails); |
| CHECK_EQUAL(failStr, r0.failureStr); |
| |
| CHECK(r1.failureCalled); |
| CHECK_EQUAL(&t, r1.failureDetails); |
| CHECK_EQUAL(failStr, r1.failureStr); |
| } |
| |
| TEST_FIXTURE(Fixture, ReportTestFinishCallsReportTestFinishOnAllAggregates) |
| { |
| TestDetails t("", "", "", 0); |
| const float s = 1.2345f; |
| c.ReportTestFinish(t, s); |
| |
| CHECK(r0.testFinishCalled); |
| CHECK_EQUAL(&t, r0.testFinishDetails); |
| CHECK_CLOSE(s, r0.testFinishSecondsElapsed, 0.00001f); |
| |
| CHECK(r1.testFinishCalled); |
| CHECK_EQUAL(&t, r1.testFinishDetails); |
| CHECK_CLOSE(s, r1.testFinishSecondsElapsed, 0.00001f); |
| } |
| |
| TEST_FIXTURE(Fixture, ReportSummaryCallsReportSummaryOnAllAggregates) |
| { |
| TestDetails t("", "", "", 0); |
| const int testCount = 3; |
| const int failedTestCount = 4; |
| const int failureCount = 5; |
| const float secondsElapsed = 3.14159f; |
| |
| c.ReportSummary(testCount, failedTestCount, failureCount, secondsElapsed); |
| |
| CHECK(r0.summaryCalled); |
| CHECK_EQUAL(testCount, r0.summaryTotalTestCount); |
| CHECK_EQUAL(failedTestCount, r0.summaryFailedTestCount); |
| CHECK_EQUAL(failureCount, r0.summaryFailureCount); |
| CHECK_CLOSE(secondsElapsed, r0.summarySecondsElapsed, 0.00001f); |
| |
| CHECK(r1.summaryCalled); |
| CHECK_EQUAL(testCount, r1.summaryTotalTestCount); |
| CHECK_EQUAL(failedTestCount, r1.summaryFailedTestCount); |
| CHECK_EQUAL(failureCount, r1.summaryFailureCount); |
| CHECK_CLOSE(secondsElapsed, r1.summarySecondsElapsed, 0.00001f); |
| } |
| |
| } |