From ca80237191f2f3fca5f42503db4a30628c5dd48c Mon Sep 17 00:00:00 2001 From: Daniel James Date: Wed, 10 May 2017 19:02:47 +0100 Subject: [PATCH] Create fewer classes in merge_exception_tests Will need better error reporting capabilities. Makes RUN_TESTS_QUIET redundant? --- test/exception/merge_exception_tests.cpp | 8 ++++---- test/helpers/test.hpp | 21 +++++++++++++++++++++ 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/test/exception/merge_exception_tests.cpp b/test/exception/merge_exception_tests.cpp index f22f0c36..442e364f 100644 --- a/test/exception/merge_exception_tests.cpp +++ b/test/exception/merge_exception_tests.cpp @@ -62,7 +62,7 @@ using test::generate_collisions; using test::limited_range; // clang-format off -UNORDERED_TEST(merge_exception_test, +UNORDERED_MULTI_TEST(set_merge, merge_exception_test, ((test_set_)(test_multiset_)) ((test_set_)(test_multiset_)) ((0)(10)(100)) @@ -72,7 +72,7 @@ UNORDERED_TEST(merge_exception_test, ((default_generator)(limited_range)) ((default_generator)(limited_range)) ) -UNORDERED_TEST(merge_exception_test, +UNORDERED_MULTI_TEST(map_merge, merge_exception_test, ((test_map_)(test_multimap_)) ((test_map_)(test_multimap_)) ((0)(10)(100)) @@ -83,7 +83,7 @@ UNORDERED_TEST(merge_exception_test, ((default_generator)(limited_range)) ) // Run fewer generate_collisions tests, as they're slow. -UNORDERED_TEST(merge_exception_test, +UNORDERED_MULTI_TEST(set_merge_collisions, merge_exception_test, ((test_set_)(test_multiset_)) ((test_set_)(test_multiset_)) ((10)) @@ -93,7 +93,7 @@ UNORDERED_TEST(merge_exception_test, ((generate_collisions)) ((generate_collisions)) ) -UNORDERED_TEST(merge_exception_test, +UNORDERED_MULTI_TEST(map_merge_collisions, merge_exception_test, ((test_map_)(test_multimap_)) ((test_map_)(test_multimap_)) ((10)) diff --git a/test/helpers/test.hpp b/test/helpers/test.hpp index 92d4cc1a..c65701b6 100644 --- a/test/helpers/test.hpp +++ b/test/helpers/test.hpp @@ -144,4 +144,25 @@ static inline void run_tests(bool quiet = false) #define UNORDERED_TEST_OP_JOIN(s, state, elem) \ BOOST_PP_CAT(state, BOOST_PP_CAT(_, elem)) +#define UNORDERED_MULTI_TEST(name, impl, parameters) \ + UNORDERED_MULTI_TEST_REPEAT(name, impl, 1, parameters) + +#define UNORDERED_MULTI_TEST_REPEAT(name, impl, n, parameters) \ + UNORDERED_AUTO_TEST(name) \ + { \ + BOOST_PP_SEQ_FOR_EACH_PRODUCT( \ + UNORDERED_MULTI_TEST_OP, ((impl))((n))parameters) \ + } + +#define UNORDERED_MULTI_TEST_OP(r, product) \ + UNORDERED_MULTI_TEST_OP2(BOOST_PP_SEQ_ELEM(0, product), \ + BOOST_PP_SEQ_ELEM(1, product), \ + BOOST_PP_SEQ_TAIL(BOOST_PP_SEQ_TAIL(product))) + +#define UNORDERED_MULTI_TEST_OP2(name, n, params) \ + { \ + for (int i = 0; i < n; ++i) \ + name BOOST_PP_SEQ_TO_TUPLE(params); \ + } + #endif