G+S
mo
24.08.0
Geometry + Simulation Modules
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
CheckMacros.h
1
#ifndef UNITTEST_CHECKMACROS_H
2
#define UNITTEST_CHECKMACROS_H
3
4
#include "HelperMacros.h"
5
#include "ExceptionMacros.h"
6
#include "Checks.h"
7
#include "AssertException.h"
8
#include "MemoryOutStream.h"
9
#include "TestDetails.h"
10
#include "CurrentTest.h"
11
#include "ReportAssertImpl.h"
12
13
#ifdef CHECK
14
#error UnitTest++ redefines CHECK
15
#endif
16
17
#ifdef CHECK_EQUAL
18
#error UnitTest++ redefines CHECK_EQUAL
19
#endif
20
21
#ifdef CHECK_CLOSE
22
#error UnitTest++ redefines CHECK_CLOSE
23
#endif
24
25
#ifdef CHECK_ARRAY_EQUAL
26
#error UnitTest++ redefines CHECK_ARRAY_EQUAL
27
#endif
28
29
#ifdef CHECK_ARRAY_CLOSE
30
#error UnitTest++ redefines CHECK_ARRAY_CLOSE
31
#endif
32
33
#ifdef CHECK_ARRAY2D_CLOSE
34
#error UnitTest++ redefines CHECK_ARRAY2D_CLOSE
35
#endif
36
37
#define CHECK(value) \
38
UNITTEST_MULTILINE_MACRO_BEGIN \
39
UT_TRY \
40
({ \
41
if (!UnitTest::Check(value)) \
42
UnitTest::CurrentTest::Results()->OnTestFailure(UnitTest::TestDetails(*UnitTest::CurrentTest::Details(), __LINE__), #value); \
43
}) \
44
UT_CATCH (std::exception, e, \
45
{ \
46
UnitTest::MemoryOutStream message; \
47
message << "Unhandled exception (" << e.what() << ") in CHECK(" #value ")"; \
48
UnitTest::CurrentTest::Results()->OnTestFailure(UnitTest::TestDetails(*UnitTest::CurrentTest::Details(), __LINE__), \
49
message.GetText()); \
50
}) \
51
UT_CATCH_ALL \
52
({ \
53
UnitTest::CurrentTest::Results()->OnTestFailure(UnitTest::TestDetails(*UnitTest::CurrentTest::Details(), __LINE__), \
54
"Unhandled exception in CHECK(" #value ")"); \
55
}) \
56
UNITTEST_MULTILINE_MACRO_END
57
58
#define CHECK_EQUAL(expected, actual) \
59
UNITTEST_MULTILINE_MACRO_BEGIN \
60
UT_TRY \
61
({ \
62
UnitTest::CheckEqual(*UnitTest::CurrentTest::Results(), expected, actual, UnitTest::TestDetails(*UnitTest::CurrentTest::Details(), __LINE__)); \
63
}) \
64
UT_CATCH (std::exception, e, \
65
{ \
66
UnitTest::MemoryOutStream message; \
67
message << "Unhandled exception (" << e.what() << ") in CHECK_EQUAL(" #expected ", " #actual ")"; \
68
UnitTest::CurrentTest::Results()->OnTestFailure(UnitTest::TestDetails(*UnitTest::CurrentTest::Details(), __LINE__), \
69
message.GetText()); \
70
}) \
71
UT_CATCH_ALL \
72
({ \
73
UnitTest::CurrentTest::Results()->OnTestFailure(UnitTest::TestDetails(*UnitTest::CurrentTest::Details(), __LINE__), \
74
"Unhandled exception in CHECK_EQUAL(" #expected ", " #actual ")"); \
75
}) \
76
UNITTEST_MULTILINE_MACRO_END
77
78
#define CHECK_CLOSE(expected, actual, tolerance) \
79
UNITTEST_MULTILINE_MACRO_BEGIN \
80
UT_TRY \
81
({ \
82
UnitTest::CheckClose(*UnitTest::CurrentTest::Results(), expected, actual, tolerance, UnitTest::TestDetails(*UnitTest::CurrentTest::Details(), __LINE__)); \
83
}) \
84
UT_CATCH (std::exception, e, \
85
{ \
86
UnitTest::MemoryOutStream message; \
87
message << "Unhandled exception (" << e.what() << ") in CHECK_CLOSE(" #expected ", " #actual ")"; \
88
UnitTest::CurrentTest::Results()->OnTestFailure(UnitTest::TestDetails(*UnitTest::CurrentTest::Details(), __LINE__), \
89
message.GetText()); \
90
}) \
91
UT_CATCH_ALL \
92
({ \
93
UnitTest::CurrentTest::Results()->OnTestFailure(UnitTest::TestDetails(*UnitTest::CurrentTest::Details(), __LINE__), \
94
"Unhandled exception in CHECK_CLOSE(" #expected ", " #actual ")"); \
95
}) \
96
UNITTEST_MULTILINE_MACRO_END
97
98
#define CHECK_ARRAY_EQUAL(expected, actual, count) \
99
UNITTEST_MULTILINE_MACRO_BEGIN \
100
UT_TRY \
101
({ \
102
UnitTest::CheckArrayEqual(*UnitTest::CurrentTest::Results(), expected, actual, count, UnitTest::TestDetails(*UnitTest::CurrentTest::Details(), __LINE__)); \
103
}) \
104
UT_CATCH (std::exception, e, \
105
{ \
106
UnitTest::MemoryOutStream message; \
107
message << "Unhandled exception (" << e.what() << ") in CHECK_ARRAY_EQUAL(" #expected ", " #actual ")"; \
108
UnitTest::CurrentTest::Results()->OnTestFailure(UnitTest::TestDetails(*UnitTest::CurrentTest::Details(), __LINE__), \
109
message.GetText()); \
110
}) \
111
UT_CATCH_ALL \
112
({ \
113
UnitTest::CurrentTest::Results()->OnTestFailure(UnitTest::TestDetails(*UnitTest::CurrentTest::Details(), __LINE__), \
114
"Unhandled exception in CHECK_ARRAY_EQUAL(" #expected ", " #actual ")"); \
115
}) \
116
UNITTEST_MULTILINE_MACRO_END
117
118
#define CHECK_ARRAY_CLOSE(expected, actual, count, tolerance) \
119
UNITTEST_MULTILINE_MACRO_BEGIN \
120
UT_TRY \
121
({ \
122
UnitTest::CheckArrayClose(*UnitTest::CurrentTest::Results(), expected, actual, count, tolerance, UnitTest::TestDetails(*UnitTest::CurrentTest::Details(), __LINE__)); \
123
}) \
124
UT_CATCH (std::exception, e, \
125
{ \
126
UnitTest::MemoryOutStream message; \
127
message << "Unhandled exception (" << e.what() << ") in CHECK_ARRAY_CLOSE(" #expected ", " #actual ")"; \
128
UnitTest::CurrentTest::Results()->OnTestFailure(UnitTest::TestDetails(*UnitTest::CurrentTest::Details(), __LINE__), \
129
message.GetText()); \
130
}) \
131
UT_CATCH_ALL \
132
({ \
133
UnitTest::CurrentTest::Results()->OnTestFailure(UnitTest::TestDetails(*UnitTest::CurrentTest::Details(), __LINE__), \
134
"Unhandled exception in CHECK_ARRAY_CLOSE(" #expected ", " #actual ")"); \
135
}) \
136
UNITTEST_MULTILINE_MACRO_END
137
138
#define CHECK_ARRAY2D_CLOSE(expected, actual, rows, columns, tolerance) \
139
UNITTEST_MULTILINE_MACRO_BEGIN \
140
UT_TRY \
141
({ \
142
UnitTest::CheckArray2DClose(*UnitTest::CurrentTest::Results(), expected, actual, rows, columns, tolerance, UnitTest::TestDetails(*UnitTest::CurrentTest::Details(), __LINE__)); \
143
}) \
144
UT_CATCH (std::exception, e, \
145
{ \
146
UnitTest::MemoryOutStream message; \
147
message << "Unhandled exception (" << e.what() << ") in CHECK_ARRAY2D_CLOSE(" #expected ", " #actual ")"; \
148
UnitTest::CurrentTest::Results()->OnTestFailure(UnitTest::TestDetails(*UnitTest::CurrentTest::Details(), __LINE__), \
149
message.GetText()); \
150
}) \
151
UT_CATCH_ALL \
152
({ \
153
UnitTest::CurrentTest::Results()->OnTestFailure(UnitTest::TestDetails(*UnitTest::CurrentTest::Details(), __LINE__), \
154
"Unhandled exception in CHECK_ARRAY2D_CLOSE(" #expected ", " #actual ")"); \
155
}) \
156
UNITTEST_MULTILINE_MACRO_END
157
158
159
// CHECK_THROW and CHECK_ASSERT only exist when UNITTEST_NO_EXCEPTIONS isn't defined (see config.h)
160
#ifndef UNITTEST_NO_EXCEPTIONS
161
#define CHECK_THROW(expression, ExpectedExceptionType) \
162
UNITTEST_MULTILINE_MACRO_BEGIN \
163
bool caught_ = false; \
164
try { expression; } \
165
catch (ExpectedExceptionType const&) { caught_ = true; } \
166
catch (...) {} \
167
if (!caught_) \
168
UnitTest::CurrentTest::Results()->OnTestFailure(UnitTest::TestDetails(*UnitTest::CurrentTest::Details(), __LINE__), "Expected exception: \"" #ExpectedExceptionType "\" not thrown"); \
169
UNITTEST_MULTILINE_MACRO_END
170
171
172
#define CHECK_ASSERT(expression) \
173
UNITTEST_MULTILINE_MACRO_BEGIN \
174
UnitTest::Detail::ExpectAssert(true); \
175
CHECK_THROW(expression, UnitTest::AssertException); \
176
UnitTest::Detail::ExpectAssert(false); \
177
UNITTEST_MULTILINE_MACRO_END
178
#endif
179
#endif
gismo
optional
gsUnitTest
CheckMacros.h
Generated on Thu Nov 21 2024 14:52:14 for G+Smo by Doxygen v1.8.5