From bf6643844b6435c0f0caaf38b671487199a7f5ca Mon Sep 17 00:00:00 2001 From: Christian Mazakas Date: Tue, 4 Oct 2022 14:51:03 -0700 Subject: [PATCH] Add foa_move_tests --- test/Jamfile.v2 | 1 + test/unordered/move_tests.cpp | 91 +++++++++++++++++++++++++++++++++-- 2 files changed, 88 insertions(+), 4 deletions(-) diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 7e267e07..1d4e1423 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -99,6 +99,7 @@ run quick.cpp ; run unordered/constructor_tests.cpp : : : 98:no 03:no 11:no BOOST_UNORDERED_FOA_TESTS : foa_constructor_tests ; run unordered/copy_tests.cpp : : : 98:no 03:no 11:no BOOST_UNORDERED_FOA_TESTS : foa_copy_tests ; +run unordered/move_tests.cpp : : : 98:no 03:no 11:no BOOST_UNORDERED_FOA_TESTS : foa_move_tests ; run unordered/assign_tests.cpp : : : 98:no 03:no 11:no BOOST_UNORDERED_FOA_TESTS : foa_assign_tests ; run unordered/insert_tests.cpp : : : 98:no 03:no 11:no BOOST_UNORDERED_FOA_TESTS : foa_insert_tests ; run unordered/erase_tests.cpp : : : 98:no 03:no 11:no BOOST_UNORDERED_FOA_TESTS : foa_erase_tests ; diff --git a/test/unordered/move_tests.cpp b/test/unordered/move_tests.cpp index 66b8e264..31b78f81 100644 --- a/test/unordered/move_tests.cpp +++ b/test/unordered/move_tests.cpp @@ -5,8 +5,13 @@ // clang-format off #include "../helpers/prefix.hpp" +#ifdef BOOST_UNORDERED_FOA_TESTS +#include +#include +#else #include #include +#endif #include "../helpers/postfix.hpp" // clang-format on @@ -71,7 +76,11 @@ namespace move_tests { BOOST_TEST(test::equivalent(y.hash_function(), hf)); BOOST_TEST(test::equivalent(y.key_eq(), eq)); BOOST_TEST(test::equivalent(y.get_allocator(), al)); +#ifdef BOOST_UNORDERED_FOA_TESTS + BOOST_TEST(y.max_load_factor() == 0.875); +#else BOOST_TEST(y.max_load_factor() == 1.0); +#endif test::check_equivalent_keys(y); #if defined(BOOST_UNORDERED_USE_MOVE) || \ !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) @@ -146,7 +155,11 @@ namespace move_tests { BOOST_TEST(test::equivalent(y.hash_function(), hf)); BOOST_TEST(test::equivalent(y.key_eq(), eq)); BOOST_TEST(test::equivalent(y.get_allocator(), al)); +#ifdef BOOST_UNORDERED_FOA_TESTS + BOOST_TEST(y.max_load_factor() == 0.875); +#else BOOST_TEST(y.max_load_factor() == 0.5); // Not necessarily required. +#endif test::check_equivalent_keys(y); } @@ -162,7 +175,11 @@ namespace move_tests { BOOST_TEST(test::equivalent(y.hash_function(), hf)); BOOST_TEST(test::equivalent(y.key_eq(), eq)); BOOST_TEST(test::equivalent(y.get_allocator(), al2)); +#ifdef BOOST_UNORDERED_FOA_TESTS + BOOST_TEST(y.max_load_factor() == 0.875); +#else BOOST_TEST(y.max_load_factor() == 2.0); // Not necessarily required. +#endif test::check_equivalent_keys(y); } @@ -192,7 +209,11 @@ namespace move_tests { BOOST_TEST(test::equivalent(y.hash_function(), hf)); BOOST_TEST(test::equivalent(y.key_eq(), eq)); BOOST_TEST(test::equivalent(y.get_allocator(), al)); +#ifdef BOOST_UNORDERED_FOA_TESTS + BOOST_TEST(y.max_load_factor() == 0.875); +#else BOOST_TEST(y.max_load_factor() == 1.0); // Not necessarily required. +#endif test::check_equivalent_keys(y); } } @@ -215,7 +236,11 @@ namespace move_tests { BOOST_TEST(y.empty()); test::check_container(y, v2); test::check_equivalent_keys(y); +#ifdef BOOST_UNORDERED_FOA_TESTS + BOOST_TEST(y.max_load_factor() == 0.875); +#else BOOST_TEST(y.max_load_factor() == 2.0); +#endif #if defined(BOOST_HAS_NRVO) if (BOOST_UNORDERED_TEST_MOVING @@ -240,7 +265,11 @@ namespace move_tests { #endif test::check_container(y, v); test::check_equivalent_keys(y); +#ifdef BOOST_UNORDERED_FOA_TESTS + BOOST_TEST(y.max_load_factor() == 0.875); +#else BOOST_TEST(y.max_load_factor() == 0.5); +#endif #if defined(BOOST_HAS_NRVO) if (BOOST_UNORDERED_TEST_MOVING @@ -268,7 +297,11 @@ namespace move_tests { #endif test::check_container(y, v); test::check_equivalent_keys(y); +#ifdef BOOST_UNORDERED_FOA_TESTS + BOOST_TEST(y.max_load_factor() == 0.875); +#else BOOST_TEST(y.max_load_factor() == 0.25); +#endif if (BOOST_UNORDERED_TEST_MOVING ? (bool)allocator_type::is_propagate_on_move @@ -296,7 +329,11 @@ namespace move_tests { } test::check_container(y, v); test::check_equivalent_keys(y); +#ifdef BOOST_UNORDERED_FOA_TESTS + BOOST_TEST(y.max_load_factor() == 0.875); +#else BOOST_TEST(y.max_load_factor() == 0.25); +#endif if (BOOST_UNORDERED_TEST_MOVING ? (bool)allocator_type::is_propagate_on_move @@ -332,7 +369,11 @@ namespace move_tests { test::check_container(y, v2); test::check_equivalent_keys(y); +#ifdef BOOST_UNORDERED_FOA_TESTS + BOOST_TEST(y.max_load_factor() == 0.875); +#else BOOST_TEST(y.max_load_factor() == 0.5); +#endif if (BOOST_UNORDERED_TEST_MOVING ? (bool)allocator_type::is_propagate_on_move @@ -344,6 +385,51 @@ namespace move_tests { } } + using test::default_generator; + using test::generate_collisions; + using test::limited_range; + +#ifdef BOOST_UNORDERED_FOA_TESTS + boost::unordered_flat_map > >* + test_map_std_alloc; + + boost::unordered_flat_set >* test_set; + boost::unordered_flat_map > >* test_map; + + boost::unordered_flat_set >* + test_set_prop_move; + boost::unordered_flat_map, + test::propagate_move> >* test_map_prop_move; + + boost::unordered_flat_set >* + test_set_no_prop_move; + boost::unordered_flat_map, + test::no_propagate_move> >* test_map_no_prop_move; + + UNORDERED_TEST(move_construct_tests1, + ((test_map_std_alloc)(test_set)(test_map)(test_set_prop_move)(test_map_prop_move)(test_set_no_prop_move)(test_map_no_prop_move))( + (default_generator)(generate_collisions)(limited_range))) + UNORDERED_TEST(move_assign_tests1, + ((test_map_std_alloc)(test_set)(test_map)(test_set_prop_move)(test_map_prop_move)(test_set_no_prop_move)(test_map_no_prop_move))( + (default_generator)(generate_collisions)(limited_range))) + UNORDERED_TEST(move_construct_tests2, + ((test_set)(test_map)(test_set_prop_move)(test_map_prop_move)(test_set_no_prop_move)(test_map_no_prop_move))( + (default_generator)(generate_collisions)(limited_range))) + UNORDERED_TEST(move_assign_tests2, + ((test_set)(test_map)(test_set_prop_move)(test_map_prop_move)(test_set_no_prop_move)(test_map_no_prop_move))( + (default_generator)(generate_collisions)(limited_range))) +#else boost::unordered_map > >* test_map_std_alloc; @@ -387,10 +473,6 @@ namespace move_tests { test::cxx11_allocator, test::no_propagate_move> >* test_multimap_no_prop_move; - using test::default_generator; - using test::generate_collisions; - using test::limited_range; - UNORDERED_TEST(move_construct_tests1, ((test_map_std_alloc)(test_set)(test_multiset)(test_map)(test_multimap)( test_set_prop_move)(test_multiset_prop_move)(test_map_prop_move)( @@ -417,6 +499,7 @@ namespace move_tests { test_set_no_prop_move)(test_multiset_no_prop_move)(test_map_no_prop_move)( test_multimap_no_prop_move))( (default_generator)(generate_collisions)(limited_range))) +#endif } RUN_TESTS()