From 4de1be89112260f96864398e3384144a081cc32f Mon Sep 17 00:00:00 2001 From: Christian Mazakas Date: Tue, 18 Oct 2022 15:53:40 -0700 Subject: [PATCH] Add the rest of the exception tests sans swap --- test/Jamfile.v2 | 6 ++ test/exception/insert_exception_tests.cpp | 76 +++++++++++++++++++++-- test/exception/merge_exception_tests.cpp | 52 ++++++++++++++-- 3 files changed, 126 insertions(+), 8 deletions(-) diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 58204e16..fa593e24 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -136,3 +136,9 @@ build_foa scary_tests ; run exception/constructor_exception_tests.cpp : : : 98:no 03:no 0x:no BOOST_UNORDERED_FOA_TESTS : foa_constructor_exception_tests ; run exception/copy_exception_tests.cpp : : : 98:no 03:no 0x:no BOOST_UNORDERED_FOA_TESTS : foa_copy_exception_tests ; +run exception/assign_exception_tests.cpp : : : 98:no 03:no 0x:no BOOST_UNORDERED_FOA_TESTS : foa_assign_exception_tests ; +run exception/move_assign_exception_tests.cpp : : : 98:no 03:no 0x:no BOOST_UNORDERED_FOA_TESTS : foa_move_assign_exception_tests ; +run exception/insert_exception_tests.cpp : : : 98:no 03:no 0x:no BOOST_UNORDERED_FOA_TESTS : foa_insert_exception_tests ; +run exception/erase_exception_tests.cpp : : : 98:no 03:no 0x:no BOOST_UNORDERED_FOA_TESTS : foa_erase_exception_tests ; +run exception/rehash_exception_tests.cpp : : : 98:no 03:no 0x:no BOOST_UNORDERED_FOA_TESTS : foa_rehash_exception_tests ; +run exception/merge_exception_tests.cpp : : : 98:no 03:no 0x:no BOOST_UNORDERED_FOA_TESTS : foa_merge_exception_tests ; diff --git a/test/exception/insert_exception_tests.cpp b/test/exception/insert_exception_tests.cpp index 0f98e0c4..eee11183 100644 --- a/test/exception/insert_exception_tests.cpp +++ b/test/exception/insert_exception_tests.cpp @@ -221,16 +221,41 @@ struct emplace_lvalue_pos_type } emplace_lvalue_pos; // Run the exception tests in various combinations. +using test::default_generator; +using test::limited_range; +using test::generate_collisions; +#ifdef BOOST_UNORDERED_FOA_TESTS +test_set* test_set_; +test_map* test_map_; + +// clang-format off +UNORDERED_TEST(insert_exception_test, + ((test_set_)(test_map_)) + ((insert_lvalue)(insert_lvalue_begin)(insert_lvalue_end) + (insert_lvalue_pos)(insert_single_item_range) + (emplace_lvalue)(emplace_lvalue_begin)(emplace_lvalue_end) + (emplace_lvalue_pos) + ) + ((default_generator)(limited_range)(generate_collisions)) +) + +UNORDERED_TEST(insert_rehash_exception_test, + ((test_set_)(test_map_)) + ((insert_lvalue)(insert_lvalue_begin)(insert_lvalue_end) + (insert_lvalue_pos)(insert_single_item_range) + (emplace_lvalue)(emplace_lvalue_begin)(emplace_lvalue_end) + (emplace_lvalue_pos) + ) + ((default_generator)(limited_range)(generate_collisions)) +) +// clang-format on +#else test_set* test_set_; test_multiset* test_multiset_; test_map* test_map_; test_multimap* test_multimap_; -using test::default_generator; -using test::limited_range; -using test::generate_collisions; - // clang-format off UNORDERED_TEST(insert_exception_test, ((test_set_)(test_multiset_)(test_map_)(test_multimap_)) @@ -252,6 +277,7 @@ UNORDERED_TEST(insert_rehash_exception_test, ((default_generator)(limited_range)(generate_collisions)) ) // clang-format on +#endif // Repeat insert tests with pairs @@ -259,8 +285,13 @@ struct pair_emplace_type : inserter_base { template void operator()(T& x, Iterator it) { +#ifdef BOOST_UNORDERED_FOA_TESTS + x.emplace(std::piecewise_construct, std::make_tuple(it->first), + std::make_tuple(it->second)); +#else x.emplace(boost::unordered::piecewise_construct, boost::make_tuple(it->first), boost::make_tuple(it->second)); +#endif } } pair_emplace; @@ -268,12 +299,34 @@ struct pair_emplace2_type : inserter_base { template void operator()(T& x, Iterator it) { +#ifdef BOOST_UNORDERED_FOA_TESTS + x.emplace_hint(x.begin(), std::piecewise_construct, + std::make_tuple(it->first), + std::make_tuple(it->second.tag1_, it->second.tag2_)); +#else x.emplace_hint(x.begin(), boost::unordered::piecewise_construct, boost::make_tuple(it->first), boost::make_tuple(it->second.tag1_, it->second.tag2_)); +#endif } } pair_emplace2; +#ifdef BOOST_UNORDERED_FOA_TESTS +test_pair_set* test_pair_set_; + +// clang-format off +UNORDERED_TEST(insert_exception_test, + ((test_pair_set_)(test_map_)) + ((pair_emplace)(pair_emplace2)) + ((default_generator)(limited_range)(generate_collisions)) +) +UNORDERED_TEST(insert_rehash_exception_test, + ((test_pair_set_)(test_map_)) + ((pair_emplace)(pair_emplace2)) + ((default_generator)(limited_range)(generate_collisions)) +) +// clang-format on +#else test_pair_set* test_pair_set_; test_pair_multiset* test_pair_multiset_; @@ -289,6 +342,7 @@ UNORDERED_TEST(insert_rehash_exception_test, ((default_generator)(limited_range)(generate_collisions)) ) // clang-format on +#endif // Test inserting using operator[] @@ -401,6 +455,19 @@ void insert_range_rehash_exception_test(T*, test::random_generator gen) } } +#ifdef BOOST_UNORDERED_FOA_TESTS +// clang-format off +UNORDERED_TEST(insert_range_exception_test, + ((test_set_)(test_map_)) + ((default_generator)(limited_range)(generate_collisions)) +) + +UNORDERED_TEST(insert_range_rehash_exception_test, + ((test_set_)(test_map_)) + ((default_generator)(limited_range)(generate_collisions)) +) +// clang-format on +#else // clang-format off UNORDERED_TEST(insert_range_exception_test, ((test_set_)(test_multiset_)(test_map_)(test_multimap_)) @@ -412,5 +479,6 @@ UNORDERED_TEST(insert_range_rehash_exception_test, ((default_generator)(limited_range)(generate_collisions)) ) // clang-format on +#endif RUN_TESTS() diff --git a/test/exception/merge_exception_tests.cpp b/test/exception/merge_exception_tests.cpp index 2cf7faf4..a6a7afc7 100644 --- a/test/exception/merge_exception_tests.cpp +++ b/test/exception/merge_exception_tests.cpp @@ -52,6 +52,53 @@ void merge_exception_test(T1 const*, T2 const*, std::size_t count12, int tag12, EXCEPTION_LOOP(merge_exception_test(x, y)) } +using test::default_generator; +using test::generate_collisions; +using test::limited_range; + +#ifdef BOOST_UNORDERED_FOA_TESTS +boost::unordered_flat_set >* test_set_; +boost::unordered_flat_map >* test_map_; + +// clang-format off +UNORDERED_MULTI_TEST(set_merge, merge_exception_test, + ((test_set_)) + ((test_set_)) + ((0x0000)(0x6400)(0x0064)(0x0a64)(0x3232)) + ((0x0000)(0x0001)(0x0102)) + ((default_generator)(limited_range)) + ((default_generator)(limited_range)) +) +UNORDERED_MULTI_TEST(map_merge, merge_exception_test, + ((test_map_)) + ((test_map_)) + ((0x0000)(0x6400)(0x0064)(0x0a64)(0x3232)) + ((0x0101)(0x0200)(0x0201)) + ((default_generator)(limited_range)) + ((default_generator)(limited_range)) +) +// Run fewer generate_collisions tests, as they're slow. +UNORDERED_MULTI_TEST(set_merge_collisions, merge_exception_test, + ((test_set_)) + ((test_set_)) + ((0x0a0a)) + ((0x0202)(0x0100)(0x0201)) + ((generate_collisions)) + ((generate_collisions)) +) +UNORDERED_MULTI_TEST(map_merge_collisions, merge_exception_test, + ((test_map_)) + ((test_map_)) + ((0x0a0a)) + ((0x0000)(0x0002)(0x0102)) + ((generate_collisions)) + ((generate_collisions)) +) +#else boost::unordered_set >* test_set_; @@ -65,10 +112,6 @@ boost::unordered_multimap >* test_multimap_; -using test::default_generator; -using test::generate_collisions; -using test::limited_range; - // clang-format off UNORDERED_MULTI_TEST(set_merge, merge_exception_test, ((test_set_)(test_multiset_)) @@ -104,5 +147,6 @@ UNORDERED_MULTI_TEST(map_merge_collisions, merge_exception_test, ((generate_collisions)) ) // clang-format on +#endif RUN_TESTS_QUIET()