1*2f083884Ss.makeev_local #include "UnitTest++/UnitTestPP.h"
2*2f083884Ss.makeev_local #include "ScopedCurrentTest.h"
3*2f083884Ss.makeev_local
4*2f083884Ss.makeev_local // These are sample tests that show the different features of the framework
5*2f083884Ss.makeev_local
6*2f083884Ss.makeev_local namespace {
7*2f083884Ss.makeev_local
TEST(ValidCheckSucceeds)8*2f083884Ss.makeev_local TEST(ValidCheckSucceeds)
9*2f083884Ss.makeev_local {
10*2f083884Ss.makeev_local bool const b = true;
11*2f083884Ss.makeev_local CHECK(b);
12*2f083884Ss.makeev_local }
13*2f083884Ss.makeev_local
TEST(CheckWorksWithPointers)14*2f083884Ss.makeev_local TEST(CheckWorksWithPointers)
15*2f083884Ss.makeev_local {
16*2f083884Ss.makeev_local void* p = (void *)0x100;
17*2f083884Ss.makeev_local CHECK(p);
18*2f083884Ss.makeev_local CHECK(p != 0);
19*2f083884Ss.makeev_local }
20*2f083884Ss.makeev_local
TEST(ValidCheckEqualSucceeds)21*2f083884Ss.makeev_local TEST(ValidCheckEqualSucceeds)
22*2f083884Ss.makeev_local {
23*2f083884Ss.makeev_local int const x = 3;
24*2f083884Ss.makeev_local int const y = 3;
25*2f083884Ss.makeev_local CHECK_EQUAL(x, y);
26*2f083884Ss.makeev_local }
27*2f083884Ss.makeev_local
TEST(CheckEqualWorksWithPointers)28*2f083884Ss.makeev_local TEST(CheckEqualWorksWithPointers)
29*2f083884Ss.makeev_local {
30*2f083884Ss.makeev_local void* p = (void *)0;
31*2f083884Ss.makeev_local CHECK_EQUAL((void*)0, p);
32*2f083884Ss.makeev_local }
33*2f083884Ss.makeev_local
TEST(ValidCheckCloseSucceeds)34*2f083884Ss.makeev_local TEST(ValidCheckCloseSucceeds)
35*2f083884Ss.makeev_local {
36*2f083884Ss.makeev_local CHECK_CLOSE(2.0f, 2.001f, 0.01f);
37*2f083884Ss.makeev_local CHECK_CLOSE(2.001f, 2.0f, 0.01f);
38*2f083884Ss.makeev_local }
39*2f083884Ss.makeev_local
TEST(ArrayCloseSucceeds)40*2f083884Ss.makeev_local TEST(ArrayCloseSucceeds)
41*2f083884Ss.makeev_local {
42*2f083884Ss.makeev_local float const a1[] = {1, 2, 3};
43*2f083884Ss.makeev_local float const a2[] = {1, 2.01f, 3};
44*2f083884Ss.makeev_local CHECK_ARRAY_CLOSE(a1, a2, 3, 0.1f);
45*2f083884Ss.makeev_local }
46*2f083884Ss.makeev_local
47*2f083884Ss.makeev_local #ifndef UNITTEST_NO_EXCEPTIONS
48*2f083884Ss.makeev_local
TEST(CheckThrowMacroSucceedsOnCorrectException)49*2f083884Ss.makeev_local TEST(CheckThrowMacroSucceedsOnCorrectException)
50*2f083884Ss.makeev_local {
51*2f083884Ss.makeev_local struct TestException {};
52*2f083884Ss.makeev_local CHECK_THROW(throw TestException(), TestException);
53*2f083884Ss.makeev_local }
54*2f083884Ss.makeev_local
TEST(CheckAssertSucceeds)55*2f083884Ss.makeev_local TEST(CheckAssertSucceeds)
56*2f083884Ss.makeev_local {
57*2f083884Ss.makeev_local CHECK_ASSERT(UnitTest::ReportAssert("desc", "file", 0));
58*2f083884Ss.makeev_local }
59*2f083884Ss.makeev_local
TEST(CheckThrowMacroFailsOnMissingException)60*2f083884Ss.makeev_local TEST(CheckThrowMacroFailsOnMissingException)
61*2f083884Ss.makeev_local {
62*2f083884Ss.makeev_local class NoThrowTest : public UnitTest::Test
63*2f083884Ss.makeev_local {
64*2f083884Ss.makeev_local public:
65*2f083884Ss.makeev_local NoThrowTest() : Test("nothrow") {}
66*2f083884Ss.makeev_local void DontThrow() const
67*2f083884Ss.makeev_local {
68*2f083884Ss.makeev_local }
69*2f083884Ss.makeev_local
70*2f083884Ss.makeev_local virtual void RunImpl() const
71*2f083884Ss.makeev_local {
72*2f083884Ss.makeev_local CHECK_THROW(DontThrow(), int);
73*2f083884Ss.makeev_local }
74*2f083884Ss.makeev_local };
75*2f083884Ss.makeev_local
76*2f083884Ss.makeev_local UnitTest::TestResults results;
77*2f083884Ss.makeev_local {
78*2f083884Ss.makeev_local ScopedCurrentTest scopedResults(results);
79*2f083884Ss.makeev_local
80*2f083884Ss.makeev_local NoThrowTest test;
81*2f083884Ss.makeev_local test.Run();
82*2f083884Ss.makeev_local }
83*2f083884Ss.makeev_local
84*2f083884Ss.makeev_local CHECK_EQUAL(1, results.GetFailureCount());
85*2f083884Ss.makeev_local }
86*2f083884Ss.makeev_local
TEST(CheckThrowMacroFailsOnWrongException)87*2f083884Ss.makeev_local TEST(CheckThrowMacroFailsOnWrongException)
88*2f083884Ss.makeev_local {
89*2f083884Ss.makeev_local class WrongThrowTest : public UnitTest::Test
90*2f083884Ss.makeev_local {
91*2f083884Ss.makeev_local public:
92*2f083884Ss.makeev_local WrongThrowTest() : Test("wrongthrow") {}
93*2f083884Ss.makeev_local virtual void RunImpl() const
94*2f083884Ss.makeev_local {
95*2f083884Ss.makeev_local CHECK_THROW(throw "oops", int);
96*2f083884Ss.makeev_local }
97*2f083884Ss.makeev_local };
98*2f083884Ss.makeev_local
99*2f083884Ss.makeev_local UnitTest::TestResults results;
100*2f083884Ss.makeev_local {
101*2f083884Ss.makeev_local ScopedCurrentTest scopedResults(results);
102*2f083884Ss.makeev_local
103*2f083884Ss.makeev_local WrongThrowTest test;
104*2f083884Ss.makeev_local test.Run();
105*2f083884Ss.makeev_local }
106*2f083884Ss.makeev_local
107*2f083884Ss.makeev_local CHECK_EQUAL(1, results.GetFailureCount());
108*2f083884Ss.makeev_local }
109*2f083884Ss.makeev_local
110*2f083884Ss.makeev_local #endif
111*2f083884Ss.makeev_local
112*2f083884Ss.makeev_local struct SimpleFixture
113*2f083884Ss.makeev_local {
SimpleFixture__anon1e724b6e0111::SimpleFixture114*2f083884Ss.makeev_local SimpleFixture()
115*2f083884Ss.makeev_local {
116*2f083884Ss.makeev_local ++instanceCount;
117*2f083884Ss.makeev_local }
~SimpleFixture__anon1e724b6e0111::SimpleFixture118*2f083884Ss.makeev_local ~SimpleFixture()
119*2f083884Ss.makeev_local {
120*2f083884Ss.makeev_local --instanceCount;
121*2f083884Ss.makeev_local }
122*2f083884Ss.makeev_local
123*2f083884Ss.makeev_local static int instanceCount;
124*2f083884Ss.makeev_local };
125*2f083884Ss.makeev_local
126*2f083884Ss.makeev_local int SimpleFixture::instanceCount = 0;
127*2f083884Ss.makeev_local
TEST_FIXTURE(SimpleFixture,DefaultFixtureCtorIsCalled)128*2f083884Ss.makeev_local TEST_FIXTURE(SimpleFixture, DefaultFixtureCtorIsCalled)
129*2f083884Ss.makeev_local {
130*2f083884Ss.makeev_local CHECK(SimpleFixture::instanceCount > 0);
131*2f083884Ss.makeev_local }
132*2f083884Ss.makeev_local
TEST_FIXTURE(SimpleFixture,OnlyOneFixtureAliveAtATime)133*2f083884Ss.makeev_local TEST_FIXTURE(SimpleFixture, OnlyOneFixtureAliveAtATime)
134*2f083884Ss.makeev_local {
135*2f083884Ss.makeev_local CHECK_EQUAL(1, SimpleFixture::instanceCount);
136*2f083884Ss.makeev_local }
137*2f083884Ss.makeev_local
CheckBool(const bool b)138*2f083884Ss.makeev_local void CheckBool(const bool b)
139*2f083884Ss.makeev_local {
140*2f083884Ss.makeev_local CHECK(b);
141*2f083884Ss.makeev_local }
142*2f083884Ss.makeev_local
TEST(CanCallCHECKOutsideOfTestFunction)143*2f083884Ss.makeev_local TEST(CanCallCHECKOutsideOfTestFunction)
144*2f083884Ss.makeev_local {
145*2f083884Ss.makeev_local CheckBool(true);
146*2f083884Ss.makeev_local }
147*2f083884Ss.makeev_local
148*2f083884Ss.makeev_local }
149