Make sure inserting from a range of types other than the value type is better tested.

[SVN r56562]
This commit is contained in:
Daniel James
2009-10-03 16:42:20 +00:00
parent 788a3661a2
commit ae0c97a77a
2 changed files with 27 additions and 7 deletions

View File

@ -324,10 +324,9 @@ namespace boost { namespace unordered_detail {
do {
// No side effects in this initial code
// Note: can't use get_key as '*i' might not be value_type.
// TODO: Check if std::pair has an appropriate constructor. If not
// that might not be true.
// TODO: Test this line better.
// Note: can't use get_key as '*i' might not be value_type - it could
// be a pair with first_types as key_type without const or a
// different second_type.
key_type const& k = extractor::extract(*i);
std::size_t hash_value = this->hash_function()(k);
bucket_ptr bucket = this->bucket_ptr_from_hash(hash_value);

View File

@ -313,10 +313,12 @@ void map_tests(X*, test::random_generator generator = test::default_generator)
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>
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;
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);
}
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_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;
@ -367,7 +383,12 @@ UNORDERED_TEST(map_tests,
((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))
((default_generator)(generate_collisions))
)