~s-cecilio/lenmus/v5.3

« back to all changes in this revision

Viewing changes to packages/UnitTest++/src/CheckMacros.h

  • Committer: cecilios
  • Date: 2012-09-11 16:59:18 UTC
  • Revision ID: svn-v4:2587a929-2f0e-0410-ae78-fe6f687d5efe:branches/TRY-5.0:730
Paths: fixed problem with installation folders. Fixed Chinese ISO language code

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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