Jon Test
C++ Unit Test Tool. Not for production -- sample code only
Loading...
Searching...
No Matches
Assert.h
Go to the documentation of this file.
1#ifndef JON_TEST_ASSERT_H
2#define JON_TEST_ASSERT_H
3
5
16#define jontest__assert2arg(first, second, message, binaryOperator) \
17{ \
18 const auto firstEval = (first); \
19 const auto secondEval = (second); \
20 if(!(firstEval binaryOperator secondEval)) \
21 { \
22 throw JonTest::TestFailure(__FILE__, __LINE__, (message), #first, firstEval, #second, secondEval, #binaryOperator); \
23 } \
24}
25
27#define assertFail(message) throw JonTest::TestFailure(__FILE__, __LINE__, (message))
28
30#define assert(first, message) jontest__assert2arg(first, true, message, ==)
31
33#define assertTrue(first, message) jontest__assert2arg(first, true, message, ==)
34
36#define assertFalse(first, message) jontest__assert2arg(first, false, message, ==)
37
39#define assertNullPtr(first, message) jontest__assert2arg(first, nullptr, message, ==)
40
42#define assertValidPtr(first, message) jontest__assert2arg(first, nullptr, message, !=)
43
45#define assertEqual(first, second, message) jontest__assert2arg(first, second, message, ==)
46
48#define assertNotEqual(first, second, message) jontest__assert2arg(first, second, message, !=)
49
51#define assertLess(first, second, message) jontest__assert2arg(first, second, message, <)
52
54#define assertLessEqual(first, second, message) jontest__assert2arg(first, second, message, <=)
55
57#define assertGreater(first, second, message) jontest__assert2arg(first, second, message, >)
58
60#define assertGreaterEqual(first, second, message) jontest__assert2arg(first, second, message, >=)
61
69#define assertException(expression, expected, message) { \
70 bool passed = false;\
71 try { (expression); passed = true; } \
72 catch (expected& object) { } \
73 if(passed) \
74 { \
75 throw JonTest::TestFailure(__FILE__, __LINE__, (message)); \
76 } \
77}
78
83#define EXPECTED_FAILURE(expression, message) assertException(expression, JonTest::TestFailure, message)
84
85#endif