Go to the documentation of this file.
5 #define MANAK_SUITE(Name) \
6 ( new manak::ManakSuite(#Name) )
8 #define MANAK_AUTO_SUITE(Name) \
9 static manak::RegisterManakSuite STRING_JOIN(X, STRING_JOIN(invoker, __LINE__))(#Name) \
11 #define MANAK_AUTO_TEST(Name, X) static const size_t Name = 0
13 #define MANAK_AUTO_SUITE_END() \
14 static manak::DeRegisterManakSuite STRING_JOIN(destroy, __LINE__)
20 #define MANAK_ADD_CASE(bench) \
21 class STRING_JOIN(unamed, STRING_JOIN(_, __LINE__)) \
23 static manak::ManakCase* static_temp; \
26 STRING_JOIN(unamed, STRING_JOIN(_, __LINE__))::static_temp = \
27 manak::ManakSuite::GetMasterSuite().GetCurrentSuite()->AddCase(bench)
29 #define _MANAK_CASE_TIS(Type, Name, Library, Function, Tol, Iter, SP) \
30 ( new manak::Type(#Name, #Library, Function, Tol, Iter, SP) )
36 #define _MANAK_AUTO_CASE_TIS(Type, Name, Library, Tol, Iter, SP) \
37 struct STRING_JOIN(Name ## _ ## Library, __LINE__) \
40 static manak::ManakCase* static_temp; \
42 manak::ManakCase* STRING_JOIN(Name ## _ ## Library, __LINE__)::static_temp = \
43 manak::ManakSuite::GetMasterSuite().GetCurrentSuite()-> \
44 AddCase(_MANAK_CASE_TIS(Type, \
47 STRING_JOIN(Name ## _ ## Library, __LINE__)::Run, \
51 void STRING_JOIN(Name ## _ ## Library, __LINE__)::Run()
57 #define _MANAK_CREATE_WITH_TEMPLATE_TIS(Type, Name, Library, Function, Tol, Iter, SP) \
58 ( manak::CTManakCase<manak::Type>(#Name, #Library, Function, Tol, Iter, SP) )
64 #define MANAK_GROUP(Name) \
65 class MG ## _ ## Name \
73 TDCaller<decltype(GetType())>(0); \
76 template<typename... ABCDE> \
77 void InitCaller(ABCDE... abcde) \
79 Manak_Group_Initialize(abcde...); \
82 template<typename abcde> \
83 void TDCaller(manak::utils::manak_group_test<abcde, &abcde::Manak_Group_TearDown>*) \
85 static_cast<abcde*>(this)->Manak_Group_TearDown(); \
91 bool AddManakCase(manak::ManakCase* mc) \
93 cases.push_back(mc); \
97 std::list<manak::ManakCase*> cases; \
99 static MG ## _ ## Name& Global() \
101 static MG ## _ ## Name singleton; \
104 static MG ## _ ## Name GetType() \
112 AddCase<__LINE__, size_t> a; \
115 template<size_t ABCDE, typename ABCDEF> \
120 AddCase<ABCDE + 1, ABCDEF>(); \
125 #define MANAK_GROUP_END() \
126 template<typename ABCDE> \
127 struct AddCase<__LINE__, ABCDE> \
132 void Manak_Group_Initialize
134 #define GDOWN void Manak_Group_TearDown
136 #define MANAK_GROUP_FUNCTION(Name) manak::utils::BindToObject(&decltype(GetType())::Name, &Global())
142 #define MANAK_ADD_GROUP(Name, ...) \
143 struct STRING_JOIN(Manak_unamed, __LINE__ ) \
147 bool STRING_JOIN(Manak_unamed,__LINE__)::value = \
148 manak::ManakSuite::GetMasterSuite().GetCurrentSuite()-> \
149 AddGroup<MG ## _ ## Name>(__VA_ARGS__)
155 #define F_MANAK_ADD_GROUP(X) MANAK_ADD_GROUP(X)
156 #define F_MANAK_GROUP(X) MANAK_GROUP(X)
158 #define MANAK_AUTO_GROUP() \
159 class STRING_JOIN(MG_unamed, __LINE__); \
160 F_MANAK_ADD_GROUP(STRING_JOIN(unamed, __LINE__)); \
161 F_MANAK_GROUP(STRING_JOIN(unamed, __LINE__));
163 #define MANAK_AUTO_GROUP_END() \
170 #define F_MANAK_ADD_TO_GROUP(X) MANAK_ADD_TO_GROUP(X)
172 #define MANAK_ADD_TO_GROUP(case) \
173 void STRING_JOIN(group_caller, __LINE__)() \
175 Global().AddManakCase(case); \
177 template<typename abcde> \
178 struct AddCase<__LINE__, abcde> \
182 manak::utils::BindToObject(&decltype(GetType())::STRING_JOIN(group_caller, __LINE__), &Global())(); \
183 AddCase<__LINE__ + 1, abcde>(); \
187 #define _MANAK_GROUP_CASE_TIS(Type, Name, Library, Function, Tol, Iter, SP) \
188 ( new manak::Type(Name, Library, manak::utils::BindToObject(&decltype(GetType())::Function, &Global()), Tol, Iter, SP) )
194 #define _MANAK_AUTO_GROUP_CASE_TIS(Type, Name, Lib, Tol, Iter, SP) \
195 MANAK_ADD_TO_GROUP(_MANAK_GROUP_CASE_TIS(Type, Name, Lib, STRING_JOIN(manak_auto_fun, __LINE__), Tol, Iter, SP)); \
196 void STRING_JOIN(manak_auto_fun, __LINE__)()
202 #define _MANAK_CREATE_GROUP_WITH_TEMPLATE_TIS(Type, Name, Lib, Fun, Tol, Iter, SP) \
203 ( manak::CTManakCase<manak::Type>(Name, Lib, manak::utils::BindToObject(&decltype(GetType())::Fun, &Global()), Tol, Iter, SP) )