root/library/tests/unittest-cpp/CheckMacros.h @ 1128

Revision 706, 4.3 kB (checked in by smidl, 15 years ago)

eol-native

  • Property svn:eol-style set to native
Line 
1#ifndef UNITTEST_CHECKMACROS_H
2#define UNITTEST_CHECKMACROS_H
3
4#include "Checks.h"
5#include "AssertException.h"
6#include "MemoryOutStream.h"
7#include "TestDetails.h"
8#include "CurrentTest.h"
9
10#ifdef CHECK
11#error UnitTest++ redefines CHECK
12#endif
13
14#ifdef CHECK_EQUAL
15#error UnitTest++ redefines CHECK_EQUAL
16#endif
17
18#ifdef CHECK_CLOSE
19#error UnitTest++ redefines CHECK_CLOSE
20#endif
21
22#ifdef CHECK_ARRAY_EQUAL
23#error UnitTest++ redefines CHECK_ARRAY_EQUAL
24#endif
25
26#ifdef CHECK_ARRAY_CLOSE
27#error UnitTest++ redefines CHECK_ARRAY_CLOSE
28#endif
29
30#ifdef CHECK_ARRAY2D_CLOSE
31#error UnitTest++ redefines CHECK_ARRAY2D_CLOSE
32#endif
33
34#define CHECK(value) \
35    do \
36    { \
37        try { \
38            if (!UnitTest::Check(value)) \
39                UnitTest::CurrentTest::Results()->OnTestFailure(UnitTest::TestDetails(*UnitTest::CurrentTest::Details(), __LINE__), #value); \
40        } \
41        catch (...) { \
42            UnitTest::CurrentTest::Results()->OnTestFailure(UnitTest::TestDetails(*UnitTest::CurrentTest::Details(), __LINE__), \
43                    "Unhandled exception in CHECK(" #value ")"); \
44        } \
45    } while (0)
46
47#define CHECK_EQUAL(expected, actual) \
48    do \
49    { \
50        try { \
51            UnitTest::CheckEqual(*UnitTest::CurrentTest::Results(), expected, actual, UnitTest::TestDetails(*UnitTest::CurrentTest::Details(), __LINE__)); \
52        } \
53        catch (...) { \
54            UnitTest::CurrentTest::Results()->OnTestFailure(UnitTest::TestDetails(*UnitTest::CurrentTest::Details(), __LINE__), \
55                    "Unhandled exception in CHECK_EQUAL(" #expected ", " #actual ")"); \
56        } \
57    } while (0)
58
59#define CHECK_CLOSE(expected, actual, tolerance) \
60    do \
61    { \
62        try { \
63            UnitTest::CheckClose(*UnitTest::CurrentTest::Results(), expected, actual, tolerance, UnitTest::TestDetails(*UnitTest::CurrentTest::Details(), __LINE__)); \
64        } \
65        catch (...) { \
66            UnitTest::CurrentTest::Results()->OnTestFailure(UnitTest::TestDetails(*UnitTest::CurrentTest::Details(), __LINE__), \
67                    "Unhandled exception in CHECK_CLOSE(" #expected ", " #actual ")"); \
68        } \
69    } while (0)
70
71#define CHECK_ARRAY_EQUAL(expected, actual, count) \
72    do \
73    { \
74        try { \
75            UnitTest::CheckArrayEqual(*UnitTest::CurrentTest::Results(), expected, actual, count, UnitTest::TestDetails(*UnitTest::CurrentTest::Details(), __LINE__)); \
76        } \
77        catch (...) { \
78            UnitTest::CurrentTest::Results()->OnTestFailure(UnitTest::TestDetails(*UnitTest::CurrentTest::Details(), __LINE__), \
79                    "Unhandled exception in CHECK_ARRAY_EQUAL(" #expected ", " #actual ")"); \
80        } \
81    } while (0)
82
83#define CHECK_ARRAY_CLOSE(expected, actual, count, tolerance) \
84    do \
85    { \
86        try { \
87            UnitTest::CheckArrayClose(*UnitTest::CurrentTest::Results(), expected, actual, count, tolerance, UnitTest::TestDetails(*UnitTest::CurrentTest::Details(), __LINE__)); \
88        } \
89        catch (...) { \
90            UnitTest::CurrentTest::Results()->OnTestFailure(UnitTest::TestDetails(*UnitTest::CurrentTest::Details(), __LINE__), \
91                    "Unhandled exception in CHECK_ARRAY_CLOSE(" #expected ", " #actual ")"); \
92        } \
93    } while (0)
94
95#define CHECK_ARRAY2D_CLOSE(expected, actual, rows, columns, tolerance) \
96    do \
97    { \
98        try { \
99            UnitTest::CheckArray2DClose(*UnitTest::CurrentTest::Results(), expected, actual, rows, columns, tolerance, UnitTest::TestDetails(*UnitTest::CurrentTest::Details(), __LINE__)); \
100        } \
101        catch (...) { \
102            UnitTest::CurrentTest::Results()->OnTestFailure(UnitTest::TestDetails(*UnitTest::CurrentTest::Details(), __LINE__), \
103                    "Unhandled exception in CHECK_ARRAY_CLOSE(" #expected ", " #actual ")"); \
104        } \
105    } while (0)
106
107
108#define CHECK_THROW(expression, ExpectedExceptionType) \
109    do \
110    { \
111        bool caught_ = false; \
112        try { expression; } \
113        catch (ExpectedExceptionType const&) { caught_ = true; } \
114        catch (...) {} \
115        if (!caught_) \
116            UnitTest::CurrentTest::Results()->OnTestFailure(UnitTest::TestDetails(*UnitTest::CurrentTest::Details(), __LINE__), "Expected exception: \"" #ExpectedExceptionType "\" not thrown"); \
117    } while(0)
118
119#define CHECK_ASSERT(expression) \
120    CHECK_THROW(expression, UnitTest::AssertException);
121
122#endif
Note: See TracBrowser for help on using the browser.