23.11
|
Go to the documentation of this file.
24 #ifndef ARM_COMPUTE_TEST_FRAMEWORK_MACROS
25 #define ARM_COMPUTE_TEST_FRAMEWORK_MACROS
34 #define TEST_SUITE(SUITE_NAME) \
35 namespace SUITE_NAME##Suite \
37 static arm_compute::test::framework::detail::TestSuiteRegistrar SUITE_NAME##Suite_reg{ #SUITE_NAME };
39 #define TEST_SUITE_END() \
40 static arm_compute::test::framework::detail::TestSuiteRegistrar Suite_end; \
50 #define CONCAT(ARG0, ARG1) ARG0##ARG1
52 #define VARIADIC_SIZE_IMPL(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, size, ...) size
53 #define VARIADIC_SIZE(...) VARIADIC_SIZE_IMPL(__VA_ARGS__, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0)
55 #define JOIN_PARAM1(OP, param) OP(0, param)
56 #define JOIN_PARAM2(OP, param, ...) \
58 , JOIN_PARAM1(OP, __VA_ARGS__)
59 #define JOIN_PARAM3(OP, param, ...) \
61 , JOIN_PARAM2(OP, __VA_ARGS__)
62 #define JOIN_PARAM4(OP, param, ...) \
64 , JOIN_PARAM3(OP, __VA_ARGS__)
65 #define JOIN_PARAM5(OP, param, ...) \
67 , JOIN_PARAM4(OP, __VA_ARGS__)
68 #define JOIN_PARAM6(OP, param, ...) \
70 , JOIN_PARAM5(OP, __VA_ARGS__)
71 #define JOIN_PARAM7(OP, param, ...) \
73 , JOIN_PARAM6(OP, __VA_ARGS__)
74 #define JOIN_PARAM8(OP, param, ...) \
76 , JOIN_PARAM7(OP, __VA_ARGS__)
77 #define JOIN_PARAM9(OP, param, ...) \
79 , JOIN_PARAM8(OP, __VA_ARGS__)
80 #define JOIN_PARAM10(OP, param, ...) \
82 , JOIN_PARAM9(OP, __VA_ARGS__)
83 #define JOIN_PARAM11(OP, param, ...) \
85 , JOIN_PARAM10(OP, __VA_ARGS__)
86 #define JOIN_PARAM12(OP, param, ...) \
88 , JOIN_PARAM11(OP, __VA_ARGS__)
89 #define JOIN_PARAM13(OP, param, ...) \
91 , JOIN_PARAM12(OP, __VA_ARGS__)
92 #define JOIN_PARAM14(OP, param, ...) \
94 , JOIN_PARAM13(OP, __VA_ARGS__)
95 #define JOIN_PARAM15(OP, param, ...) \
97 , JOIN_PARAM14(OP, __VA_ARGS__)
98 #define JOIN_PARAM16(OP, param, ...) \
100 , JOIN_PARAM15(OP, __VA_ARGS__)
101 #define JOIN_PARAM(OP, NUM, ...) \
102 CONCAT(JOIN_PARAM, NUM) \
105 #define MAKE_TYPE_PARAM(i, name) typename T##i
106 #define MAKE_ARG_PARAM(i, name) const T##i &name
107 #define MAKE_TYPE_PARAMS(...) JOIN_PARAM(MAKE_TYPE_PARAM, VARIADIC_SIZE(__VA_ARGS__), __VA_ARGS__)
108 #define MAKE_ARG_PARAMS(...) JOIN_PARAM(MAKE_ARG_PARAM, VARIADIC_SIZE(__VA_ARGS__), __VA_ARGS__)
113 #define TEST_CASE_CONSTRUCTOR(TEST_NAME) \
114 TEST_NAME() = default;
115 #define DATA_TEST_CASE_CONSTRUCTOR(TEST_NAME, DATASET) \
116 template <typename D> \
117 explicit TEST_NAME(D &&data) : DataTestCase{ std::forward<D>(data) } \
120 #define FIXTURE_SETUP(FIXTURE) \
121 void do_setup() override \
123 framework::Framework::get().set_new_fixture_call(false); \
126 #define FIXTURE_DATA_SETUP(FIXTURE) \
127 void do_setup() override \
129 framework::Framework::get().set_new_fixture_call(false); \
130 apply(this, &FIXTURE::setup, _data); \
132 #define FIXTURE_DATA_SETUP_NEW(FIXTURE) \
133 void do_setup() override \
135 framework::Framework::get().set_new_fixture_call(true); \
136 apply(this, &FIXTURE::setup, _data); \
137 configure_target(); \
138 if(!framework::Framework::get().configure_only()) \
140 allocate_and_run_target(); \
141 compute_reference(); \
144 #define FIXTURE_RUN(FIXTURE) \
145 void do_run() override \
149 #define FIXTURE_SYNC(FIXTURE) \
150 void do_sync() override \
154 #define FIXTURE_TEARDOWN(FIXTURE) \
155 void do_teardown() override \
157 FIXTURE::teardown(); \
159 #define TEST_REGISTRAR(TEST_NAME, MODE, STATUS) \
160 static arm_compute::test::framework::detail::TestCaseRegistrar<TEST_NAME> TEST_NAME##_reg \
162 #TEST_NAME, MODE, STATUS \
164 #define DATA_TEST_REGISTRAR(TEST_NAME, MODE, STATUS, DATASET) \
165 static arm_compute::test::framework::detail::TestCaseRegistrar<TEST_NAME<decltype(DATASET)::type>> TEST_NAME##_reg \
167 #TEST_NAME, MODE, STATUS, DATASET \
170 #define TEST_CASE_IMPL(TEST_NAME, MODE, STATUS) \
171 class TEST_NAME : public arm_compute::test::framework::TestCase \
174 TEST_CASE_CONSTRUCTOR(TEST_NAME) \
175 void do_run() override; \
177 TEST_REGISTRAR(TEST_NAME, MODE, STATUS); \
178 void TEST_NAME::do_run()
180 #define TEST_CASE(TEST_NAME, MODE) \
181 TEST_CASE_IMPL(TEST_NAME, MODE, arm_compute::test::framework::TestCaseFactory::Status::ACTIVE)
182 #define EXPECTED_FAILURE_TEST_CASE(TEST_NAME, MODE) \
183 TEST_CASE_IMPL(TEST_NAME, MODE, arm_compute::test::framework::TestCaseFactory::Status::EXPECTED_FAILURE)
184 #define DISABLED_TEST_CASE(TEST_NAME, MODE) \
185 TEST_CASE_IMPL(TEST_NAME, MODE, arm_compute::test::framework::TestCaseFactory::Status::DISABLED)
187 #define DATA_TEST_CASE_IMPL(TEST_NAME, MODE, STATUS, DATASET, ...) \
188 template <typename T> \
190 template <typename... As> \
191 class TEST_NAME<std::tuple<As...>> : public arm_compute::test::framework::DataTestCase<decltype(DATASET)::type> \
194 DATA_TEST_CASE_CONSTRUCTOR(TEST_NAME, DATASET) \
195 void do_run() override \
197 arm_compute::test::framework::apply(this, &TEST_NAME::run<As...>, _data); \
199 template <MAKE_TYPE_PARAMS(__VA_ARGS__)> \
200 void run(MAKE_ARG_PARAMS(__VA_ARGS__)); \
202 DATA_TEST_REGISTRAR(TEST_NAME, MODE, STATUS, DATASET); \
203 template <typename... As> \
204 template <MAKE_TYPE_PARAMS(__VA_ARGS__)> \
205 void TEST_NAME<std::tuple<As...>>::run(MAKE_ARG_PARAMS(__VA_ARGS__))
207 #define DATA_TEST_CASE(TEST_NAME, MODE, DATASET, ...) \
208 DATA_TEST_CASE_IMPL(TEST_NAME, MODE, arm_compute::test::framework::TestCaseFactory::Status::ACTIVE, DATASET, __VA_ARGS__)
209 #define EXPECTED_FAILURE_DATA_TEST_CASE(TEST_NAME, MODE, DATASET, ...) \
210 DATA_TEST_CASE_IMPL(TEST_NAME, MODE, arm_compute::test::framework::TestCaseFactory::Status::EXPECTED_FAILURE, DATASET, __VA_ARGS__)
211 #define DISABLED_DATA_TEST_CASE(TEST_NAME, MODE, DATASET, ...) \
212 DATA_TEST_CASE_IMPL(TEST_NAME, MODE, arm_compute::test::framework::TestCaseFactory::Status::DISABLED, DATASET, __VA_ARGS__)
214 #define FIXTURE_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, STATUS) \
215 class TEST_NAME : public arm_compute::test::framework::TestCase, public FIXTURE \
218 TEST_CASE_CONSTRUCTOR(TEST_NAME) \
219 FIXTURE_SETUP(FIXTURE) \
220 void do_run() override; \
221 FIXTURE_TEARDOWN(FIXTURE) \
223 TEST_REGISTRAR(TEST_NAME, MODE, STATUS); \
224 void TEST_NAME::do_run()
226 #define FIXTURE_TEST_CASE(TEST_NAME, FIXTURE, MODE) \
227 FIXTURE_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::ACTIVE)
228 #define EXPECTED_FAILURE_FIXTURE_TEST_CASE(TEST_NAME, FIXTURE, MODE) \
229 FIXTURE_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::EXPECTED_FAILURE)
230 #define DISABLED_FIXTURE_TEST_CASE(TEST_NAME, FIXTURE, MODE) \
231 FIXTURE_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::DISABLED)
233 #define EMPTY_BODY_FIXTURE_TEST_CASE(TEST_NAME, FIXTURE, MODE) \
234 FIXTURE_TEST_CASE(TEST_NAME, FIXTURE, MODE) \
238 #define FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, STATUS, DATASET) \
239 template <typename T> \
241 template <typename... As> \
242 class TEST_NAME<std::tuple<As...>> : public arm_compute::test::framework::DataTestCase<decltype(DATASET)::type>, public FIXTURE \
245 DATA_TEST_CASE_CONSTRUCTOR(TEST_NAME, DATASET) \
246 FIXTURE_DATA_SETUP(FIXTURE) \
247 void do_run() override; \
248 FIXTURE_TEARDOWN(FIXTURE) \
250 DATA_TEST_REGISTRAR(TEST_NAME, MODE, STATUS, DATASET); \
251 template <typename... As> \
252 void TEST_NAME<std::tuple<As...>>::do_run()
254 #define FIXTURE_DATA_TEST_CASE(TEST_NAME, FIXTURE, MODE, DATASET) \
255 FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::ACTIVE, DATASET)
256 #define EXPECTED_FAILURE_FIXTURE_DATA_TEST_CASE(TEST_NAME, FIXTURE, MODE, DATASET) \
257 FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::EXPECTED_FAILURE, DATASET)
258 #define DISABLED_FIXTURE_DATA_TEST_CASE(TEST_NAME, FIXTURE, MODE, DATASET) \
259 FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::DISABLED, DATASET)
261 #define FIXTURE_DATA_TEST_CASE_NEW_IMPL(TEST_NAME, FIXTURE, MODE, STATUS, DATASET) \
262 template <typename T> \
264 template <typename... As> \
265 class TEST_NAME<std::tuple<As...>> : public arm_compute::test::framework::DataTestCase<decltype(DATASET)::type>, public FIXTURE \
268 DATA_TEST_CASE_CONSTRUCTOR(TEST_NAME, DATASET) \
269 FIXTURE_DATA_SETUP_NEW(FIXTURE) \
270 void do_run() override; \
271 FIXTURE_TEARDOWN(FIXTURE) \
273 DATA_TEST_REGISTRAR(TEST_NAME, MODE, STATUS, DATASET); \
274 template <typename... As> \
275 void TEST_NAME<std::tuple<As...>>::do_run()
277 #define FIXTURE_DATA_TEST_CASE_NEW(TEST_NAME, FIXTURE, MODE, DATASET) \
278 FIXTURE_DATA_TEST_CASE_NEW_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::ACTIVE, DATASET)
279 #define EXPECTED_FAILURE_FIXTURE_DATA_TEST_CASE_NEW(TEST_NAME, FIXTURE, MODE, DATASET) \
280 FIXTURE_DATA_TEST_CASE_NEW_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::EXPECTED_FAILURE, DATASET)
281 #define DISABLED_FIXTURE_DATA_TEST_CASE_NEW(TEST_NAME, FIXTURE, MODE, DATASET) \
282 FIXTURE_DATA_TEST_CASE_NEW_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::DISABLED, DATASET)
284 #define REGISTER_FIXTURE_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, STATUS) \
285 class TEST_NAME : public arm_compute::test::framework::TestCase, public FIXTURE \
288 TEST_CASE_CONSTRUCTOR(TEST_NAME) \
289 FIXTURE_SETUP(FIXTURE) \
290 FIXTURE_RUN(FIXTURE) \
291 FIXTURE_SYNC(FIXTURE) \
292 FIXTURE_TEARDOWN(FIXTURE) \
294 TEST_REGISTRAR(TEST_NAME, MODE, STATUS)
296 #define REGISTER_FIXTURE_TEST_CASE(TEST_NAME, FIXTURE, MODE) \
297 REGISTER_FIXTURE_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::ACTIVE)
298 #define EXPECTED_FAILURE_REGISTER_FIXTURE_TEST_CASE(TEST_NAME, FIXTURE, MODE) \
299 REGISTER_FIXTURE_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::EXPECTED_FAILURE)
300 #define DISABLED_REGISTER_FIXTURE_TEST_CASE(TEST_NAME, FIXTURE, MODE) \
301 REGISTER_FIXTURE_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::DISABLED)
303 #define REGISTER_FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, STATUS, DATASET) \
304 template <typename T> \
306 template <typename... As> \
307 class TEST_NAME<std::tuple<As...>> : public arm_compute::test::framework::DataTestCase<decltype(DATASET)::type>, public FIXTURE \
310 DATA_TEST_CASE_CONSTRUCTOR(TEST_NAME, DATASET) \
311 FIXTURE_DATA_SETUP(FIXTURE) \
312 FIXTURE_RUN(FIXTURE) \
313 FIXTURE_SYNC(FIXTURE) \
314 FIXTURE_TEARDOWN(FIXTURE) \
316 DATA_TEST_REGISTRAR(TEST_NAME, MODE, STATUS, DATASET)
318 #define REGISTER_FIXTURE_DATA_TEST_CASE(TEST_NAME, FIXTURE, MODE, DATASET) \
319 REGISTER_FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::ACTIVE, DATASET)
320 #define EXPECTED_FAILURE_REGISTER_FIXTURE_DATA_TEST_CASE(TEST_NAME, FIXTURE, MODE, DATASET) \
321 REGISTER_FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::EXPECTED_FAILURE, DATASET)
322 #define DISABLED_REGISTER_FIXTURE_DATA_TEST_CASE(TEST_NAME, FIXTURE, MODE, DATASET) \
323 REGISTER_FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::DISABLED, DATASET)