Add insert_hint_tests

This commit is contained in:
Christian Mazakas
2022-10-05 13:30:59 -07:00
parent 7501eefd87
commit a3c6235f3a
4 changed files with 24 additions and 5 deletions

View File

@ -14,6 +14,7 @@
#include <boost/unordered/unordered_flat_map_fwd.hpp>
#include <boost/core/allocator_access.hpp>
#include <boost/functional/hash.hpp>
#include <initializer_list>
#include <iterator>
@ -33,8 +34,7 @@ namespace boost {
static Key const& extract(init_type const& kv) { return kv.first; }
static Key const& extract(value_type const& kv) { return kv.first; }
template<typename F>
static void move_parts_to(value_type& x,F f)
template <typename F> static void move_parts_to(value_type& x, F f)
{
// TODO: we probably need to launder here
f(std::move(const_cast<Key&>(x.first)), std::move(x.second));

View File

@ -14,6 +14,7 @@
#include <boost/unordered/unordered_flat_set_fwd.hpp>
#include <boost/core/allocator_access.hpp>
#include <boost/functional/hash.hpp>
#include <initializer_list>
#include <iterator>
@ -32,8 +33,10 @@ namespace boost {
using value_type = Key;
static Key const& extract(value_type const& key) { return key; }
template<typename F>
static void move_parts_to(value_type& x,F f) { f(std::move(x)); }
template <typename F> static void move_parts_to(value_type& x, F f)
{
f(std::move(x));
}
};
using table_type = detail::foa::table<set_types, Hash, KeyEqual,

View File

@ -107,5 +107,6 @@ build_foa copy_tests ;
build_foa move_tests ;
build_foa assign_tests ;
build_foa insert_tests ;
build_foa insert_hint_tests ;
build_foa erase_tests ;
build_foa find_tests ;

View File

@ -5,8 +5,14 @@
// clang-format off
#include "../helpers/prefix.hpp"
#ifdef BOOST_UNORDERED_FOA_TESTS
#include <boost/unordered/detail/implementation.hpp>
#include <boost/unordered_flat_set.hpp>
#include <boost/unordered_flat_map.hpp>
#else
#include <boost/unordered_set.hpp>
#include <boost/unordered_map.hpp>
#endif
#include "../helpers/postfix.hpp"
// clang-format on
@ -17,6 +23,7 @@
#include <set>
namespace insert_hint {
#ifndef BOOST_UNORDERED_FOA_TESTS
UNORDERED_AUTO_TEST (insert_hint_empty) {
typedef boost::unordered_multiset<int> container;
container x;
@ -90,9 +97,13 @@ namespace insert_hint {
}
}
}
#endif
UNORDERED_AUTO_TEST (insert_hint_unique) {
#ifdef BOOST_UNORDERED_FOA_TESTS
typedef boost::unordered_flat_set<int> container;
#else
typedef boost::unordered_set<int> container;
#endif
container x;
x.insert(x.cbegin(), 10);
BOOST_TEST_EQ(x.size(), 1u);
@ -101,7 +112,11 @@ namespace insert_hint {
}
UNORDERED_AUTO_TEST (insert_hint_unique_single) {
#ifdef BOOST_UNORDERED_FOA_TESTS
typedef boost::unordered_flat_set<int> container;
#else
typedef boost::unordered_set<int> container;
#endif
container x;
x.insert(10);