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, size, ...) size 53 #define VARIADIC_SIZE(...) VARIADIC_SIZE_IMPL(__VA_ARGS__, 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_PARAM(OP, NUM, ...) \ 84 CONCAT(JOIN_PARAM, NUM) \ 87 #define MAKE_TYPE_PARAM(i, name) typename T##i 88 #define MAKE_ARG_PARAM(i, name) const T##i &name 89 #define MAKE_TYPE_PARAMS(...) JOIN_PARAM(MAKE_TYPE_PARAM, VARIADIC_SIZE(__VA_ARGS__), __VA_ARGS__) 90 #define MAKE_ARG_PARAMS(...) JOIN_PARAM(MAKE_ARG_PARAM, VARIADIC_SIZE(__VA_ARGS__), __VA_ARGS__) 95 #define TEST_CASE_CONSTRUCTOR(TEST_NAME) \ 96 TEST_NAME() = default; 97 #define DATA_TEST_CASE_CONSTRUCTOR(TEST_NAME, DATASET) \ 98 template <typename D> \ 99 explicit TEST_NAME(D &&data) : DataTestCase{ std::forward<D>(data) } \ 102 #define FIXTURE_SETUP(FIXTURE) \ 103 void do_setup() override \ 107 #define FIXTURE_DATA_SETUP(FIXTURE) \ 108 void do_setup() override \ 110 apply(this, &FIXTURE::setup<As...>, _data); \ 112 #define FIXTURE_RUN(FIXTURE) \ 113 void do_run() override \ 117 #define FIXTURE_SYNC(FIXTURE) \ 118 void do_sync() override \ 122 #define FIXTURE_TEARDOWN(FIXTURE) \ 123 void do_teardown() override \ 125 FIXTURE::teardown(); \ 127 #define TEST_REGISTRAR(TEST_NAME, MODE, STATUS) \ 128 static arm_compute::test::framework::detail::TestCaseRegistrar<TEST_NAME> TEST_NAME##_reg \ 130 #TEST_NAME, MODE, STATUS \ 132 #define DATA_TEST_REGISTRAR(TEST_NAME, MODE, STATUS, DATASET) \ 133 static arm_compute::test::framework::detail::TestCaseRegistrar<TEST_NAME<decltype(DATASET)::type>> TEST_NAME##_reg \ 135 #TEST_NAME, MODE, STATUS, DATASET \ 138 #define TEST_CASE_IMPL(TEST_NAME, MODE, STATUS) \ 139 class TEST_NAME : public arm_compute::test::framework::TestCase \ 142 TEST_CASE_CONSTRUCTOR(TEST_NAME) \ 143 void do_run() override; \ 145 TEST_REGISTRAR(TEST_NAME, MODE, STATUS); \ 146 void TEST_NAME::do_run() 148 #define TEST_CASE(TEST_NAME, MODE) \ 149 TEST_CASE_IMPL(TEST_NAME, MODE, arm_compute::test::framework::TestCaseFactory::Status::ACTIVE) 150 #define EXPECTED_FAILURE_TEST_CASE(TEST_NAME, MODE) \ 151 TEST_CASE_IMPL(TEST_NAME, MODE, arm_compute::test::framework::TestCaseFactory::Status::EXPECTED_FAILURE) 152 #define DISABLED_TEST_CASE(TEST_NAME, MODE) \ 153 TEST_CASE_IMPL(TEST_NAME, MODE, arm_compute::test::framework::TestCaseFactory::Status::DISABLED) 155 #define DATA_TEST_CASE_IMPL(TEST_NAME, MODE, STATUS, DATASET, ...) \ 156 template <typename T> \ 158 template <typename... As> \ 159 class TEST_NAME<std::tuple<As...>> : public arm_compute::test::framework::DataTestCase<decltype(DATASET)::type> \ 162 DATA_TEST_CASE_CONSTRUCTOR(TEST_NAME, DATASET) \ 163 void do_run() override \ 165 arm_compute::test::framework::apply(this, &TEST_NAME::run<As...>, _data); \ 167 template <MAKE_TYPE_PARAMS(__VA_ARGS__)> \ 168 void run(MAKE_ARG_PARAMS(__VA_ARGS__)); \ 170 DATA_TEST_REGISTRAR(TEST_NAME, MODE, STATUS, DATASET); \ 171 template <typename... As> \ 172 template <MAKE_TYPE_PARAMS(__VA_ARGS__)> \ 173 void TEST_NAME<std::tuple<As...>>::run(MAKE_ARG_PARAMS(__VA_ARGS__)) 175 #define DATA_TEST_CASE(TEST_NAME, MODE, DATASET, ...) \ 176 DATA_TEST_CASE_IMPL(TEST_NAME, MODE, arm_compute::test::framework::TestCaseFactory::Status::ACTIVE, DATASET, __VA_ARGS__) 177 #define EXPECTED_FAILURE_DATA_TEST_CASE(TEST_NAME, MODE, DATASET, ...) \ 178 DATA_TEST_CASE_IMPL(TEST_NAME, MODE, arm_compute::test::framework::TestCaseFactory::Status::EXPECTED_FAILURE, DATASET, __VA_ARGS__) 179 #define DISABLED_DATA_TEST_CASE(TEST_NAME, MODE, DATASET, ...) \ 180 DATA_TEST_CASE_IMPL(TEST_NAME, MODE, arm_compute::test::framework::TestCaseFactory::Status::DISABLED, DATASET, __VA_ARGS__) 182 #define FIXTURE_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, STATUS) \ 183 class TEST_NAME : public arm_compute::test::framework::TestCase, public FIXTURE \ 186 TEST_CASE_CONSTRUCTOR(TEST_NAME) \ 187 FIXTURE_SETUP(FIXTURE) \ 188 void do_run() override; \ 189 FIXTURE_TEARDOWN(FIXTURE) \ 191 TEST_REGISTRAR(TEST_NAME, MODE, STATUS); \ 192 void TEST_NAME::do_run() 194 #define FIXTURE_TEST_CASE(TEST_NAME, FIXTURE, MODE) \ 195 FIXTURE_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::ACTIVE) 196 #define EXPECTED_FAILURE_FIXTURE_TEST_CASE(TEST_NAME, FIXTURE, MODE) \ 197 FIXTURE_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::EXPECTED_FAILURE) 198 #define DISABLED_FIXTURE_TEST_CASE(TEST_NAME, FIXTURE, MODE) \ 199 FIXTURE_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::DISABLED) 201 #define FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, STATUS, DATASET) \ 202 template <typename T> \ 204 template <typename... As> \ 205 class TEST_NAME<std::tuple<As...>> : public arm_compute::test::framework::DataTestCase<decltype(DATASET)::type>, public FIXTURE \ 208 DATA_TEST_CASE_CONSTRUCTOR(TEST_NAME, DATASET) \ 209 FIXTURE_DATA_SETUP(FIXTURE) \ 210 void do_run() override; \ 211 FIXTURE_TEARDOWN(FIXTURE) \ 213 DATA_TEST_REGISTRAR(TEST_NAME, MODE, STATUS, DATASET); \ 214 template <typename... As> \ 215 void TEST_NAME<std::tuple<As...>>::do_run() 217 #define FIXTURE_DATA_TEST_CASE(TEST_NAME, FIXTURE, MODE, DATASET) \ 218 FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::ACTIVE, DATASET) 219 #define EXPECTED_FAILURE_FIXTURE_DATA_TEST_CASE(TEST_NAME, FIXTURE, MODE, DATASET) \ 220 FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::EXPECTED_FAILURE, DATASET) 221 #define DISABLED_FIXTURE_DATA_TEST_CASE(TEST_NAME, FIXTURE, MODE, DATASET) \ 222 FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::DISABLED, DATASET) 224 #define REGISTER_FIXTURE_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, STATUS) \ 225 class TEST_NAME : public arm_compute::test::framework::TestCase, public FIXTURE \ 228 TEST_CASE_CONSTRUCTOR(TEST_NAME) \ 229 FIXTURE_SETUP(FIXTURE) \ 230 FIXTURE_RUN(FIXTURE) \ 231 FIXTURE_SYNC(FIXTURE) \ 232 FIXTURE_TEARDOWN(FIXTURE) \ 234 TEST_REGISTRAR(TEST_NAME, MODE, STATUS) 236 #define REGISTER_FIXTURE_TEST_CASE(TEST_NAME, FIXTURE, MODE) \ 237 REGISTER_FIXTURE_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::ACTIVE) 238 #define EXPECTED_FAILURE_REGISTER_FIXTURE_TEST_CASE(TEST_NAME, FIXTURE, MODE) \ 239 REGISTER_FIXTURE_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::EXPECTED_FAILURE) 240 #define DISABLED_REGISTER_FIXTURE_TEST_CASE(TEST_NAME, FIXTURE, MODE) \ 241 REGISTER_FIXTURE_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::DISABLED) 243 #define REGISTER_FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, STATUS, DATASET) \ 244 template <typename T> \ 246 template <typename... As> \ 247 class TEST_NAME<std::tuple<As...>> : public arm_compute::test::framework::DataTestCase<decltype(DATASET)::type>, public FIXTURE \ 250 DATA_TEST_CASE_CONSTRUCTOR(TEST_NAME, DATASET) \ 251 FIXTURE_DATA_SETUP(FIXTURE) \ 252 FIXTURE_RUN(FIXTURE) \ 253 FIXTURE_SYNC(FIXTURE) \ 254 FIXTURE_TEARDOWN(FIXTURE) \ 256 DATA_TEST_REGISTRAR(TEST_NAME, MODE, STATUS, DATASET) 258 #define REGISTER_FIXTURE_DATA_TEST_CASE(TEST_NAME, FIXTURE, MODE, DATASET) \ 259 REGISTER_FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::ACTIVE, DATASET) 260 #define EXPECTED_FAILURE_REGISTER_FIXTURE_DATA_TEST_CASE(TEST_NAME, FIXTURE, MODE, DATASET) \ 261 REGISTER_FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::EXPECTED_FAILURE, DATASET) 262 #define DISABLED_REGISTER_FIXTURE_DATA_TEST_CASE(TEST_NAME, FIXTURE, MODE, DATASET) \ 263 REGISTER_FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::DISABLED, DATASET)