G+S
mo
24.08.0
Geometry + Simulation Modules
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
TestMacros.h
1
#ifndef UNITTEST_TESTMACROS_H
2
#define UNITTEST_TESTMACROS_H
3
4
#include "Config.h"
5
#include "TestSuite.h"
6
#include "ExceptionMacros.h"
7
#include "ExecuteTest.h"
8
#include "AssertException.h"
9
#include "TestDetails.h"
10
#include "MemoryOutStream.h"
11
12
#ifndef UNITTEST_POSIX
13
#define UNITTEST_THROW_SIGNALS_POSIX_ONLY
14
#else
15
#include "Posix/SignalTranslator.h"
16
#endif
17
18
#ifdef TEST
19
#error UnitTest++ redefines TEST
20
#endif
21
22
#ifdef TEST_EX
23
#error UnitTest++ redefines TEST_EX
24
#endif
25
26
#ifdef TEST_FIXTURE_EX
27
#error UnitTest++ redefines TEST_FIXTURE_EX
28
#endif
29
30
#define SUITE(Name) \
31
namespace Suite##Name { \
32
namespace UnitTestSuite { \
33
inline char const* GetSuiteName () { \
34
return #Name ; \
35
} \
36
} \
37
} \
38
namespace Suite##Name
39
40
#define TEST_EX(Name, List) \
41
class Test##Name : public UnitTest::Test \
42
{ \
43
public: \
44
Test##Name() : Test(#Name, UnitTestSuite::GetSuiteName(), __FILE__, __LINE__) {} \
45
private: \
46
virtual void RunImpl() const; \
47
} test##Name##Instance; \
48
\
49
UnitTest::ListAdder adder##Name (List, &test##Name##Instance); \
50
\
51
void Test##Name::RunImpl() const
52
53
54
#define TEST(Name) TEST_EX(Name, UnitTest::Test::GetTestList())
55
56
57
#define TEST_FIXTURE_EX(Fixture, Name, List) \
58
class Fixture##Name##Helper : public Fixture \
59
{ \
60
public: \
61
explicit Fixture##Name##Helper(UnitTest::TestDetails const& details) : m_details(details) {} \
62
void RunImpl(); \
63
UnitTest::TestDetails const& m_details; \
64
private: \
65
Fixture##Name##Helper(Fixture##Name##Helper const&); \
66
Fixture##Name##Helper& operator =(Fixture##Name##Helper const&); \
67
}; \
68
\
69
class Test##Fixture##Name : public UnitTest::Test \
70
{ \
71
public: \
72
Test##Fixture##Name() : Test(#Name, UnitTestSuite::GetSuiteName(), __FILE__, __LINE__) {} \
73
private: \
74
virtual void RunImpl() const; \
75
} test##Fixture##Name##Instance; \
76
\
77
UnitTest::ListAdder adder##Fixture##Name (List, &test##Fixture##Name##Instance); \
78
\
79
void Test##Fixture##Name::RunImpl() const \
80
{ \
81
volatile bool ctorOk = false; \
82
UT_TRY \
83
({ \
84
Fixture##Name##Helper fixtureHelper(m_details); \
85
ctorOk = true; \
86
UnitTest::ExecuteTest(fixtureHelper, m_details, false); \
87
}) \
88
UT_CATCH (UnitTest::AssertException, e, \
89
{ \
90
(void)e; \
91
}) \
92
UT_CATCH (std::exception, e, \
93
{ \
94
UnitTest::MemoryOutStream stream; \
95
stream << "Unhandled exception: " << e.what(); \
96
UnitTest::CurrentTest::Results()->OnTestFailure(m_details, stream.GetText()); \
97
}) \
98
UT_CATCH_ALL \
99
({ \
100
if (ctorOk) \
101
{ \
102
UnitTest::CurrentTest::Results()->OnTestFailure(UnitTest::TestDetails(m_details, __LINE__), \
103
"Unhandled exception while destroying fixture " #Fixture); \
104
} \
105
else \
106
{ \
107
UnitTest::CurrentTest::Results()->OnTestFailure(UnitTest::TestDetails(m_details, __LINE__), \
108
"Unhandled exception while constructing fixture " #Fixture); \
109
} \
110
}) \
111
} \
112
void Fixture##Name##Helper::RunImpl()
113
114
#define TEST_FIXTURE(Fixture,Name) TEST_FIXTURE_EX(Fixture, Name, UnitTest::Test::GetTestList())
115
116
117
#endif
gismo
optional
gsUnitTest
TestMacros.h
Generated on Thu Nov 21 2024 14:52:14 for G+Smo by Doxygen v1.8.5