1*2f083884Ss.makeev_local #include "UnitTest++/UnitTestPP.h"
2*2f083884Ss.makeev_local #include "UnitTest++/CompositeTestReporter.h"
3*2f083884Ss.makeev_local
4*2f083884Ss.makeev_local using namespace UnitTest;
5*2f083884Ss.makeev_local
6*2f083884Ss.makeev_local namespace {
7*2f083884Ss.makeev_local
TEST(ZeroReportersByDefault)8*2f083884Ss.makeev_local TEST(ZeroReportersByDefault)
9*2f083884Ss.makeev_local {
10*2f083884Ss.makeev_local CHECK_EQUAL(0, CompositeTestReporter().GetReporterCount());
11*2f083884Ss.makeev_local }
12*2f083884Ss.makeev_local
13*2f083884Ss.makeev_local struct MockReporter : TestReporter
14*2f083884Ss.makeev_local {
MockReporter__anon961a29b40111::MockReporter15*2f083884Ss.makeev_local MockReporter()
16*2f083884Ss.makeev_local : testStartCalled(false)
17*2f083884Ss.makeev_local , testStartDetails(NULL)
18*2f083884Ss.makeev_local , failureCalled(false)
19*2f083884Ss.makeev_local , failureDetails(NULL)
20*2f083884Ss.makeev_local , failureStr(NULL)
21*2f083884Ss.makeev_local , testFinishCalled(false)
22*2f083884Ss.makeev_local , testFinishDetails(NULL)
23*2f083884Ss.makeev_local , testFinishSecondsElapsed(-1.0f)
24*2f083884Ss.makeev_local , summaryCalled(false)
25*2f083884Ss.makeev_local , summaryTotalTestCount(-1)
26*2f083884Ss.makeev_local , summaryFailureCount(-1)
27*2f083884Ss.makeev_local , summarySecondsElapsed(-1.0f)
28*2f083884Ss.makeev_local {
29*2f083884Ss.makeev_local }
30*2f083884Ss.makeev_local
ReportTestStart__anon961a29b40111::MockReporter31*2f083884Ss.makeev_local virtual void ReportTestStart(TestDetails const& test)
32*2f083884Ss.makeev_local {
33*2f083884Ss.makeev_local testStartCalled = true;
34*2f083884Ss.makeev_local testStartDetails = &test;
35*2f083884Ss.makeev_local }
36*2f083884Ss.makeev_local
ReportFailure__anon961a29b40111::MockReporter37*2f083884Ss.makeev_local virtual void ReportFailure(TestDetails const& test, char const* failure)
38*2f083884Ss.makeev_local {
39*2f083884Ss.makeev_local failureCalled = true;
40*2f083884Ss.makeev_local failureDetails = &test;
41*2f083884Ss.makeev_local failureStr = failure;
42*2f083884Ss.makeev_local }
43*2f083884Ss.makeev_local
ReportTestFinish__anon961a29b40111::MockReporter44*2f083884Ss.makeev_local virtual void ReportTestFinish(TestDetails const& test, float secondsElapsed)
45*2f083884Ss.makeev_local {
46*2f083884Ss.makeev_local testFinishCalled = true;
47*2f083884Ss.makeev_local testFinishDetails = &test;
48*2f083884Ss.makeev_local testFinishSecondsElapsed = secondsElapsed;
49*2f083884Ss.makeev_local }
50*2f083884Ss.makeev_local
ReportSummary__anon961a29b40111::MockReporter51*2f083884Ss.makeev_local virtual void ReportSummary(int totalTestCount,
52*2f083884Ss.makeev_local int failedTestCount,
53*2f083884Ss.makeev_local int failureCount,
54*2f083884Ss.makeev_local float secondsElapsed)
55*2f083884Ss.makeev_local {
56*2f083884Ss.makeev_local summaryCalled = true;
57*2f083884Ss.makeev_local summaryTotalTestCount = totalTestCount;
58*2f083884Ss.makeev_local summaryFailedTestCount = failedTestCount;
59*2f083884Ss.makeev_local summaryFailureCount = failureCount;
60*2f083884Ss.makeev_local summarySecondsElapsed = secondsElapsed;
61*2f083884Ss.makeev_local }
62*2f083884Ss.makeev_local
63*2f083884Ss.makeev_local bool testStartCalled;
64*2f083884Ss.makeev_local TestDetails const* testStartDetails;
65*2f083884Ss.makeev_local
66*2f083884Ss.makeev_local bool failureCalled;
67*2f083884Ss.makeev_local TestDetails const* failureDetails;
68*2f083884Ss.makeev_local const char* failureStr;
69*2f083884Ss.makeev_local
70*2f083884Ss.makeev_local bool testFinishCalled;
71*2f083884Ss.makeev_local TestDetails const* testFinishDetails;
72*2f083884Ss.makeev_local float testFinishSecondsElapsed;
73*2f083884Ss.makeev_local
74*2f083884Ss.makeev_local bool summaryCalled;
75*2f083884Ss.makeev_local int summaryTotalTestCount;
76*2f083884Ss.makeev_local int summaryFailedTestCount;
77*2f083884Ss.makeev_local int summaryFailureCount;
78*2f083884Ss.makeev_local float summarySecondsElapsed;
79*2f083884Ss.makeev_local };
80*2f083884Ss.makeev_local
TEST(AddReporter)81*2f083884Ss.makeev_local TEST(AddReporter)
82*2f083884Ss.makeev_local {
83*2f083884Ss.makeev_local MockReporter r;
84*2f083884Ss.makeev_local CompositeTestReporter c;
85*2f083884Ss.makeev_local
86*2f083884Ss.makeev_local CHECK(c.AddReporter(&r));
87*2f083884Ss.makeev_local CHECK_EQUAL(1, c.GetReporterCount());
88*2f083884Ss.makeev_local }
89*2f083884Ss.makeev_local
TEST(RemoveReporter)90*2f083884Ss.makeev_local TEST(RemoveReporter)
91*2f083884Ss.makeev_local {
92*2f083884Ss.makeev_local MockReporter r;
93*2f083884Ss.makeev_local CompositeTestReporter c;
94*2f083884Ss.makeev_local
95*2f083884Ss.makeev_local c.AddReporter(&r);
96*2f083884Ss.makeev_local CHECK(c.RemoveReporter(&r));
97*2f083884Ss.makeev_local CHECK_EQUAL(0, c.GetReporterCount());
98*2f083884Ss.makeev_local }
99*2f083884Ss.makeev_local
100*2f083884Ss.makeev_local struct Fixture
101*2f083884Ss.makeev_local {
Fixture__anon961a29b40111::Fixture102*2f083884Ss.makeev_local Fixture()
103*2f083884Ss.makeev_local {
104*2f083884Ss.makeev_local c.AddReporter(&r0);
105*2f083884Ss.makeev_local c.AddReporter(&r1);
106*2f083884Ss.makeev_local }
107*2f083884Ss.makeev_local
108*2f083884Ss.makeev_local MockReporter r0, r1;
109*2f083884Ss.makeev_local CompositeTestReporter c;
110*2f083884Ss.makeev_local };
111*2f083884Ss.makeev_local
TEST_FIXTURE(Fixture,ReportTestStartCallsReportTestStartOnAllAggregates)112*2f083884Ss.makeev_local TEST_FIXTURE(Fixture, ReportTestStartCallsReportTestStartOnAllAggregates)
113*2f083884Ss.makeev_local {
114*2f083884Ss.makeev_local TestDetails t("", "", "", 0);
115*2f083884Ss.makeev_local c.ReportTestStart(t);
116*2f083884Ss.makeev_local
117*2f083884Ss.makeev_local CHECK(r0.testStartCalled);
118*2f083884Ss.makeev_local CHECK_EQUAL(&t, r0.testStartDetails);
119*2f083884Ss.makeev_local CHECK(r1.testStartCalled);
120*2f083884Ss.makeev_local CHECK_EQUAL(&t, r1.testStartDetails);
121*2f083884Ss.makeev_local }
122*2f083884Ss.makeev_local
TEST_FIXTURE(Fixture,ReportFailureCallsReportFailureOnAllAggregates)123*2f083884Ss.makeev_local TEST_FIXTURE(Fixture, ReportFailureCallsReportFailureOnAllAggregates)
124*2f083884Ss.makeev_local {
125*2f083884Ss.makeev_local TestDetails t("", "", "", 0);
126*2f083884Ss.makeev_local const char* failStr = "fail";
127*2f083884Ss.makeev_local c.ReportFailure(t, failStr);
128*2f083884Ss.makeev_local
129*2f083884Ss.makeev_local CHECK(r0.failureCalled);
130*2f083884Ss.makeev_local CHECK_EQUAL(&t, r0.failureDetails);
131*2f083884Ss.makeev_local CHECK_EQUAL(failStr, r0.failureStr);
132*2f083884Ss.makeev_local
133*2f083884Ss.makeev_local CHECK(r1.failureCalled);
134*2f083884Ss.makeev_local CHECK_EQUAL(&t, r1.failureDetails);
135*2f083884Ss.makeev_local CHECK_EQUAL(failStr, r1.failureStr);
136*2f083884Ss.makeev_local }
137*2f083884Ss.makeev_local
TEST_FIXTURE(Fixture,ReportTestFinishCallsReportTestFinishOnAllAggregates)138*2f083884Ss.makeev_local TEST_FIXTURE(Fixture, ReportTestFinishCallsReportTestFinishOnAllAggregates)
139*2f083884Ss.makeev_local {
140*2f083884Ss.makeev_local TestDetails t("", "", "", 0);
141*2f083884Ss.makeev_local const float s = 1.2345f;
142*2f083884Ss.makeev_local c.ReportTestFinish(t, s);
143*2f083884Ss.makeev_local
144*2f083884Ss.makeev_local CHECK(r0.testFinishCalled);
145*2f083884Ss.makeev_local CHECK_EQUAL(&t, r0.testFinishDetails);
146*2f083884Ss.makeev_local CHECK_CLOSE(s, r0.testFinishSecondsElapsed, 0.00001f);
147*2f083884Ss.makeev_local
148*2f083884Ss.makeev_local CHECK(r1.testFinishCalled);
149*2f083884Ss.makeev_local CHECK_EQUAL(&t, r1.testFinishDetails);
150*2f083884Ss.makeev_local CHECK_CLOSE(s, r1.testFinishSecondsElapsed, 0.00001f);
151*2f083884Ss.makeev_local }
152*2f083884Ss.makeev_local
TEST_FIXTURE(Fixture,ReportSummaryCallsReportSummaryOnAllAggregates)153*2f083884Ss.makeev_local TEST_FIXTURE(Fixture, ReportSummaryCallsReportSummaryOnAllAggregates)
154*2f083884Ss.makeev_local {
155*2f083884Ss.makeev_local TestDetails t("", "", "", 0);
156*2f083884Ss.makeev_local const int testCount = 3;
157*2f083884Ss.makeev_local const int failedTestCount = 4;
158*2f083884Ss.makeev_local const int failureCount = 5;
159*2f083884Ss.makeev_local const float secondsElapsed = 3.14159f;
160*2f083884Ss.makeev_local
161*2f083884Ss.makeev_local c.ReportSummary(testCount, failedTestCount, failureCount, secondsElapsed);
162*2f083884Ss.makeev_local
163*2f083884Ss.makeev_local CHECK(r0.summaryCalled);
164*2f083884Ss.makeev_local CHECK_EQUAL(testCount, r0.summaryTotalTestCount);
165*2f083884Ss.makeev_local CHECK_EQUAL(failedTestCount, r0.summaryFailedTestCount);
166*2f083884Ss.makeev_local CHECK_EQUAL(failureCount, r0.summaryFailureCount);
167*2f083884Ss.makeev_local CHECK_CLOSE(secondsElapsed, r0.summarySecondsElapsed, 0.00001f);
168*2f083884Ss.makeev_local
169*2f083884Ss.makeev_local CHECK(r1.summaryCalled);
170*2f083884Ss.makeev_local CHECK_EQUAL(testCount, r1.summaryTotalTestCount);
171*2f083884Ss.makeev_local CHECK_EQUAL(failedTestCount, r1.summaryFailedTestCount);
172*2f083884Ss.makeev_local CHECK_EQUAL(failureCount, r1.summaryFailureCount);
173*2f083884Ss.makeev_local CHECK_CLOSE(secondsElapsed, r1.summarySecondsElapsed, 0.00001f);
174*2f083884Ss.makeev_local }
175*2f083884Ss.makeev_local
176*2f083884Ss.makeev_local }
177