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