From 4399e8b3600a1d597849ac7005209c6918edadc0 Mon Sep 17 00:00:00 2001 From: Christian Mazakas Date: Wed, 12 Oct 2022 13:39:23 -0700 Subject: [PATCH] Add noexcept tests --- test/Jamfile.v2 | 1 + test/unordered/noexcept_tests.cpp | 51 +++++++++++++++++++++++++++++-- 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 5c15aa0d..9c875f20 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -106,6 +106,7 @@ build_foa fwd_set_test ; build_foa fwd_map_test ; build_foa compile_set ; build_foa compile_map ; +build_foa noexcept_tests ; build_foa constructor_tests ; build_foa copy_tests ; build_foa move_tests ; diff --git a/test/unordered/noexcept_tests.cpp b/test/unordered/noexcept_tests.cpp index bc1207a1..26a189f6 100644 --- a/test/unordered/noexcept_tests.cpp +++ b/test/unordered/noexcept_tests.cpp @@ -5,8 +5,14 @@ // clang-format off #include "../helpers/prefix.hpp" +#ifdef BOOST_UNORDERED_FOA_TESTS +#include +#include +#include +#else #include #include +#endif #include "../helpers/postfix.hpp" // clang-format on @@ -202,6 +208,12 @@ namespace noexcept_tests { UNORDERED_AUTO_TEST (test_noexcept) { if (have_is_nothrow_move) { +#ifdef BOOST_UNORDERED_FOA_TESTS + BOOST_TEST((boost::is_nothrow_move_constructible< + boost::unordered_flat_set >::value)); + BOOST_TEST((boost::is_nothrow_move_constructible< + boost::unordered_flat_map >::value)); +#else BOOST_TEST((boost::is_nothrow_move_constructible< boost::unordered_set >::value)); BOOST_TEST((boost::is_nothrow_move_constructible< @@ -210,19 +222,35 @@ namespace noexcept_tests { boost::unordered_map >::value)); BOOST_TEST((boost::is_nothrow_move_constructible< boost::unordered_multimap >::value)); +#endif } +#ifdef BOOST_UNORDERED_FOA_TESTS + BOOST_TEST( + (!boost::is_nothrow_move_constructible< + boost::unordered_flat_set >::value)); + BOOST_TEST( + (!boost::is_nothrow_move_constructible, equal_to_possible_exception> >::value)); +#else BOOST_TEST((!boost::is_nothrow_move_constructible< boost::unordered_set >::value)); BOOST_TEST( (!boost::is_nothrow_move_constructible, equal_to_possible_exception> >::value)); +#endif } UNORDERED_AUTO_TEST (test_nothrow_move_when_noexcept) { +#ifdef BOOST_UNORDERED_FOA_TESTS + typedef boost::unordered_flat_set + throwing_set; +#else typedef boost::unordered_set throwing_set; +#endif if (have_is_nothrow_move) { BOOST_TEST(boost::is_nothrow_move_constructible::value); @@ -310,8 +338,14 @@ namespace noexcept_tests { } UNORDERED_AUTO_TEST (test_nothrow_swap_when_noexcept) { +#if BOOST_UNORDERED_FOA_TESTS + typedef boost::unordered_flat_set + throwing_set; +#else typedef boost::unordered_set throwing_set; +#endif if (have_is_nothrow_swap) { BOOST_TEST(boost::is_nothrow_swappable::value); @@ -410,6 +444,20 @@ UNORDERED_AUTO_TEST (prelim_allocator_checks) { allocator2 >::type::value); } +using test::default_generator; + +#ifdef BOOST_UNORDERED_FOA_TESTS +boost::unordered_flat_set >* + throwing_set_alloc1; + +boost::unordered_flat_set >* + throwing_set_alloc2; + +UNORDERED_TEST(test_nothrow_move_assign_when_noexcept, + ((throwing_set_alloc1)(throwing_set_alloc2))((default_generator))) +#else boost::unordered_set >* throwing_set_alloc1; @@ -418,9 +466,8 @@ boost::unordered_set >* throwing_set_alloc2; -using test::default_generator; - UNORDERED_TEST(test_nothrow_move_assign_when_noexcept, ((throwing_set_alloc1)(throwing_set_alloc2))((default_generator))) +#endif RUN_TESTS()