forked from boostorg/unordered
Make sure inserting from a range of types other than the value type is better tested.
[SVN r56562]
This commit is contained in:
@ -324,10 +324,9 @@ namespace boost { namespace unordered_detail {
|
|||||||
|
|
||||||
do {
|
do {
|
||||||
// No side effects in this initial code
|
// No side effects in this initial code
|
||||||
// Note: can't use get_key as '*i' might not be value_type.
|
// Note: can't use get_key as '*i' might not be value_type - it could
|
||||||
// TODO: Check if std::pair has an appropriate constructor. If not
|
// be a pair with first_types as key_type without const or a
|
||||||
// that might not be true.
|
// different second_type.
|
||||||
// TODO: Test this line better.
|
|
||||||
key_type const& k = extractor::extract(*i);
|
key_type const& k = extractor::extract(*i);
|
||||||
std::size_t hash_value = this->hash_function()(k);
|
std::size_t hash_value = this->hash_function()(k);
|
||||||
bucket_ptr bucket = this->bucket_ptr_from_hash(hash_value);
|
bucket_ptr bucket = this->bucket_ptr_from_hash(hash_value);
|
||||||
|
@ -313,10 +313,12 @@ void map_tests(X*, test::random_generator generator = test::default_generator)
|
|||||||
test::check_equivalent_keys(x);
|
test::check_equivalent_keys(x);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Some tests for when the range's value type doesn't match the container's value type.
|
||||||
|
|
||||||
template <class X>
|
template <class X>
|
||||||
void associative_insert_range_test(X*, test::random_generator generator = test::default_generator)
|
void map_insert_range_test1(X*, test::random_generator generator = test::default_generator)
|
||||||
{
|
{
|
||||||
std::cerr<<"associative_insert_range_test\n";
|
std::cerr<<"map_insert_range_test1\n";
|
||||||
|
|
||||||
typedef test::list<std::pair<BOOST_DEDUCED_TYPENAME X::key_type, BOOST_DEDUCED_TYPENAME X::mapped_type> > list;
|
typedef test::list<std::pair<BOOST_DEDUCED_TYPENAME X::key_type, BOOST_DEDUCED_TYPENAME X::mapped_type> > list;
|
||||||
test::random_values<X> v(1000, generator);
|
test::random_values<X> v(1000, generator);
|
||||||
@ -327,6 +329,20 @@ void associative_insert_range_test(X*, test::random_generator generator = test::
|
|||||||
test::check_equivalent_keys(x);
|
test::check_equivalent_keys(x);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <class X>
|
||||||
|
void map_insert_range_test2(X*, test::random_generator generator = test::default_generator)
|
||||||
|
{
|
||||||
|
std::cerr<<"map_insert_range_test2\n";
|
||||||
|
|
||||||
|
typedef test::list<std::pair<BOOST_DEDUCED_TYPENAME X::key_type const, int> > list;
|
||||||
|
test::random_values<boost::unordered_map<BOOST_DEDUCED_TYPENAME X::key_type, int> > v(1000, generator);
|
||||||
|
list l(v.begin(), v.end());
|
||||||
|
|
||||||
|
X x; x.insert(l.begin(), l.end());
|
||||||
|
|
||||||
|
test::check_equivalent_keys(x);
|
||||||
|
}
|
||||||
|
|
||||||
boost::unordered_set<test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_set;
|
boost::unordered_set<test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_set;
|
||||||
boost::unordered_multiset<test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_multiset;
|
boost::unordered_multiset<test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_multiset;
|
||||||
boost::unordered_map<test::object, test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_map;
|
boost::unordered_map<test::object, test::object, test::hash, test::equal_to, test::allocator<test::object> >* test_map;
|
||||||
@ -367,7 +383,12 @@ UNORDERED_TEST(map_tests,
|
|||||||
((default_generator)(generate_collisions))
|
((default_generator)(generate_collisions))
|
||||||
)
|
)
|
||||||
|
|
||||||
UNORDERED_TEST(associative_insert_range_test,
|
UNORDERED_TEST(map_insert_range_test1,
|
||||||
|
((test_map)(test_multimap))
|
||||||
|
((default_generator)(generate_collisions))
|
||||||
|
)
|
||||||
|
|
||||||
|
UNORDERED_TEST(map_insert_range_test2,
|
||||||
((test_map)(test_multimap))
|
((test_map)(test_multimap))
|
||||||
((default_generator)(generate_collisions))
|
((default_generator)(generate_collisions))
|
||||||
)
|
)
|
||||||
|
Reference in New Issue
Block a user