/extlibs/UnitTest++/source/CheckMacros.h
C++ Header | 122 lines | 105 code | 17 blank | 0 comment | 8 complexity | 878ea94d6e6547828578a7487865e303 MD5 | raw file
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