Create fewer classes in merge_exception_tests

Will need better error reporting capabilities. Makes RUN_TESTS_QUIET
redundant?
This commit is contained in:
Daniel James 2017-05-10 19:02:47 +01:00
parent b95ef6de04
commit ca80237191
2 changed files with 25 additions and 4 deletions

View File

@ -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))

View File

@ -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