PageRenderTime 71ms CodeModel.GetById 51ms app.highlight 3ms RepoModel.GetById 11ms app.codeStats 0ms

/extlibs/UnitTest++/source/CheckMacros.h

https://bitbucket.org/hugoruscitti/pilascpp
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