21.02
|
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, size, ...) size 53 #define VARIADIC_SIZE(...) VARIADIC_SIZE_IMPL(__VA_ARGS__, 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_PARAM(OP, NUM, ...) \ 96 CONCAT(JOIN_PARAM, NUM) \ 99 #define MAKE_TYPE_PARAM(i, name) typename T##i 100 #define MAKE_ARG_PARAM(i, name) const T##i &name 101 #define MAKE_TYPE_PARAMS(...) JOIN_PARAM(MAKE_TYPE_PARAM, VARIADIC_SIZE(__VA_ARGS__), __VA_ARGS__) 102 #define MAKE_ARG_PARAMS(...) JOIN_PARAM(MAKE_ARG_PARAM, VARIADIC_SIZE(__VA_ARGS__), __VA_ARGS__) 107 #define TEST_CASE_CONSTRUCTOR(TEST_NAME) \ 108 TEST_NAME() = default; 109 #define DATA_TEST_CASE_CONSTRUCTOR(TEST_NAME, DATASET) \ 110 template <typename D> \ 111 explicit TEST_NAME(D &&data) : DataTestCase{ std::forward<D>(data) } \ 114 #define FIXTURE_SETUP(FIXTURE) \ 115 void do_setup() override \ 119 #define FIXTURE_DATA_SETUP(FIXTURE) \ 120 void do_setup() override \ 122 apply(this, &FIXTURE::setup<As...>, _data); \ 124 #define FIXTURE_RUN(FIXTURE) \ 125 void do_run() override \ 129 #define FIXTURE_SYNC(FIXTURE) \ 130 void do_sync() override \ 134 #define FIXTURE_TEARDOWN(FIXTURE) \ 135 void do_teardown() override \ 137 FIXTURE::teardown(); \ 139 #define TEST_REGISTRAR(TEST_NAME, MODE, STATUS) \ 140 static arm_compute::test::framework::detail::TestCaseRegistrar<TEST_NAME> TEST_NAME##_reg \ 142 #TEST_NAME, MODE, STATUS \ 144 #define DATA_TEST_REGISTRAR(TEST_NAME, MODE, STATUS, DATASET) \ 145 static arm_compute::test::framework::detail::TestCaseRegistrar<TEST_NAME<decltype(DATASET)::type>> TEST_NAME##_reg \ 147 #TEST_NAME, MODE, STATUS, DATASET \ 150 #define TEST_CASE_IMPL(TEST_NAME, MODE, STATUS) \ 151 class TEST_NAME : public arm_compute::test::framework::TestCase \ 154 TEST_CASE_CONSTRUCTOR(TEST_NAME) \ 155 void do_run() override; \ 157 TEST_REGISTRAR(TEST_NAME, MODE, STATUS); \ 158 void TEST_NAME::do_run() 160 #define TEST_CASE(TEST_NAME, MODE) \ 161 TEST_CASE_IMPL(TEST_NAME, MODE, arm_compute::test::framework::TestCaseFactory::Status::ACTIVE) 162 #define EXPECTED_FAILURE_TEST_CASE(TEST_NAME, MODE) \ 163 TEST_CASE_IMPL(TEST_NAME, MODE, arm_compute::test::framework::TestCaseFactory::Status::EXPECTED_FAILURE) 164 #define DISABLED_TEST_CASE(TEST_NAME, MODE) \ 165 TEST_CASE_IMPL(TEST_NAME, MODE, arm_compute::test::framework::TestCaseFactory::Status::DISABLED) 167 #define DATA_TEST_CASE_IMPL(TEST_NAME, MODE, STATUS, DATASET, ...) \ 168 template <typename T> \ 170 template <typename... As> \ 171 class TEST_NAME<std::tuple<As...>> : public arm_compute::test::framework::DataTestCase<decltype(DATASET)::type> \ 174 DATA_TEST_CASE_CONSTRUCTOR(TEST_NAME, DATASET) \ 175 void do_run() override \ 177 arm_compute::test::framework::apply(this, &TEST_NAME::run<As...>, _data); \ 179 template <MAKE_TYPE_PARAMS(__VA_ARGS__)> \ 180 void run(MAKE_ARG_PARAMS(__VA_ARGS__)); \ 182 DATA_TEST_REGISTRAR(TEST_NAME, MODE, STATUS, DATASET); \ 183 template <typename... As> \ 184 template <MAKE_TYPE_PARAMS(__VA_ARGS__)> \ 185 void TEST_NAME<std::tuple<As...>>::run(MAKE_ARG_PARAMS(__VA_ARGS__)) 187 #define DATA_TEST_CASE(TEST_NAME, MODE, DATASET, ...) \ 188 DATA_TEST_CASE_IMPL(TEST_NAME, MODE, arm_compute::test::framework::TestCaseFactory::Status::ACTIVE, DATASET, __VA_ARGS__) 189 #define EXPECTED_FAILURE_DATA_TEST_CASE(TEST_NAME, MODE, DATASET, ...) \ 190 DATA_TEST_CASE_IMPL(TEST_NAME, MODE, arm_compute::test::framework::TestCaseFactory::Status::EXPECTED_FAILURE, DATASET, __VA_ARGS__) 191 #define DISABLED_DATA_TEST_CASE(TEST_NAME, MODE, DATASET, ...) \ 192 DATA_TEST_CASE_IMPL(TEST_NAME, MODE, arm_compute::test::framework::TestCaseFactory::Status::DISABLED, DATASET, __VA_ARGS__) 194 #define FIXTURE_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, STATUS) \ 195 class TEST_NAME : public arm_compute::test::framework::TestCase, public FIXTURE \ 198 TEST_CASE_CONSTRUCTOR(TEST_NAME) \ 199 FIXTURE_SETUP(FIXTURE) \ 200 void do_run() override; \ 201 FIXTURE_TEARDOWN(FIXTURE) \ 203 TEST_REGISTRAR(TEST_NAME, MODE, STATUS); \ 204 void TEST_NAME::do_run() 206 #define FIXTURE_TEST_CASE(TEST_NAME, FIXTURE, MODE) \ 207 FIXTURE_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::ACTIVE) 208 #define EXPECTED_FAILURE_FIXTURE_TEST_CASE(TEST_NAME, FIXTURE, MODE) \ 209 FIXTURE_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::EXPECTED_FAILURE) 210 #define DISABLED_FIXTURE_TEST_CASE(TEST_NAME, FIXTURE, MODE) \ 211 FIXTURE_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::DISABLED) 213 #define FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, STATUS, DATASET) \ 214 template <typename T> \ 216 template <typename... As> \ 217 class TEST_NAME<std::tuple<As...>> : public arm_compute::test::framework::DataTestCase<decltype(DATASET)::type>, public FIXTURE \ 220 DATA_TEST_CASE_CONSTRUCTOR(TEST_NAME, DATASET) \ 221 FIXTURE_DATA_SETUP(FIXTURE) \ 222 void do_run() override; \ 223 FIXTURE_TEARDOWN(FIXTURE) \ 225 DATA_TEST_REGISTRAR(TEST_NAME, MODE, STATUS, DATASET); \ 226 template <typename... As> \ 227 void TEST_NAME<std::tuple<As...>>::do_run() 229 #define FIXTURE_DATA_TEST_CASE(TEST_NAME, FIXTURE, MODE, DATASET) \ 230 FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::ACTIVE, DATASET) 231 #define EXPECTED_FAILURE_FIXTURE_DATA_TEST_CASE(TEST_NAME, FIXTURE, MODE, DATASET) \ 232 FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::EXPECTED_FAILURE, DATASET) 233 #define DISABLED_FIXTURE_DATA_TEST_CASE(TEST_NAME, FIXTURE, MODE, DATASET) \ 234 FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::DISABLED, DATASET) 236 #define REGISTER_FIXTURE_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, STATUS) \ 237 class TEST_NAME : public arm_compute::test::framework::TestCase, public FIXTURE \ 240 TEST_CASE_CONSTRUCTOR(TEST_NAME) \ 241 FIXTURE_SETUP(FIXTURE) \ 242 FIXTURE_RUN(FIXTURE) \ 243 FIXTURE_SYNC(FIXTURE) \ 244 FIXTURE_TEARDOWN(FIXTURE) \ 246 TEST_REGISTRAR(TEST_NAME, MODE, STATUS) 248 #define REGISTER_FIXTURE_TEST_CASE(TEST_NAME, FIXTURE, MODE) \ 249 REGISTER_FIXTURE_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::ACTIVE) 250 #define EXPECTED_FAILURE_REGISTER_FIXTURE_TEST_CASE(TEST_NAME, FIXTURE, MODE) \ 251 REGISTER_FIXTURE_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::EXPECTED_FAILURE) 252 #define DISABLED_REGISTER_FIXTURE_TEST_CASE(TEST_NAME, FIXTURE, MODE) \ 253 REGISTER_FIXTURE_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::DISABLED) 255 #define REGISTER_FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, STATUS, DATASET) \ 256 template <typename T> \ 258 template <typename... As> \ 259 class TEST_NAME<std::tuple<As...>> : public arm_compute::test::framework::DataTestCase<decltype(DATASET)::type>, public FIXTURE \ 262 DATA_TEST_CASE_CONSTRUCTOR(TEST_NAME, DATASET) \ 263 FIXTURE_DATA_SETUP(FIXTURE) \ 264 FIXTURE_RUN(FIXTURE) \ 265 FIXTURE_SYNC(FIXTURE) \ 266 FIXTURE_TEARDOWN(FIXTURE) \ 268 DATA_TEST_REGISTRAR(TEST_NAME, MODE, STATUS, DATASET) 270 #define REGISTER_FIXTURE_DATA_TEST_CASE(TEST_NAME, FIXTURE, MODE, DATASET) \ 271 REGISTER_FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::ACTIVE, DATASET) 272 #define EXPECTED_FAILURE_REGISTER_FIXTURE_DATA_TEST_CASE(TEST_NAME, FIXTURE, MODE, DATASET) \ 273 REGISTER_FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::EXPECTED_FAILURE, DATASET) 274 #define DISABLED_REGISTER_FIXTURE_DATA_TEST_CASE(TEST_NAME, FIXTURE, MODE, DATASET) \ 275 REGISTER_FIXTURE_DATA_TEST_CASE_IMPL(TEST_NAME, FIXTURE, MODE, arm_compute::test::framework::TestCaseFactory::Status::DISABLED, DATASET)