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