Unordered: Fix some errors in the equality tests.

[SVN r71363]
This commit is contained in:
Daniel James
2011-04-17 21:27:38 +00:00
parent e8714d79b2
commit b1912055a9
3 changed files with 18 additions and 17 deletions

View File

@ -98,8 +98,8 @@ namespace boost { namespace unordered { namespace detail {
{
value_type const& v = node::get_value(n1);
if (find(start, n1, v)) continue;
std::size_t matches = count(n2, end2, v);
if (!matches or matches != 1 + count(n1->next_, end1, v))
std::size_t matches = count_equal(n2, end2, v);
if (!matches or matches != 1 + count_equal(n1->next_, end1, v))
return false;
}
@ -114,7 +114,7 @@ namespace boost { namespace unordered { namespace detail {
return false;
}
static std::size_t count(node_ptr n, node_ptr end, value_type const& v)
static std::size_t count_equal(node_ptr n, node_ptr end, value_type const& v)
{
std::size_t count = 0;
for(;n != end; n = n->next_)

View File

@ -68,16 +68,17 @@ UNORDERED_AUTO_TEST(test0)
}
UNORDERED_AUTO_TEST(equality_tests) {
typedef std::pair<test::minimal::assignable const,
typedef std::pair<
test::minimal::copy_constructible_equality_comparable const,
test::minimal::copy_constructible> value_type;
boost::unordered_map<int, int> int_map;
boost::unordered_map<
test::minimal::assignable,
test::minimal::copy_constructible_equality_comparable,
test::minimal::hash<test::minimal::assignable>,
test::minimal::equal_to<test::minimal::assignable>,
test::minimal::copy_constructible_equality_comparable,
test::minimal::hash<test::minimal::copy_constructible_equality_comparable>,
test::minimal::equal_to<test::minimal::copy_constructible_equality_comparable>,
test::minimal::allocator<value_type> > map;
equality_test(int_map);
@ -86,10 +87,10 @@ UNORDERED_AUTO_TEST(equality_tests) {
boost::unordered_multimap<int, int> int_multimap;
boost::unordered_multimap<
test::minimal::assignable,
test::minimal::copy_constructible_equality_comparable,
test::minimal::hash<test::minimal::assignable>,
test::minimal::equal_to<test::minimal::assignable>,
test::minimal::copy_constructible_equality_comparable,
test::minimal::hash<test::minimal::copy_constructible_equality_comparable>,
test::minimal::equal_to<test::minimal::copy_constructible_equality_comparable>,
test::minimal::allocator<value_type> > multimap;
equality_test(int_multimap);

View File

@ -56,14 +56,14 @@ UNORDERED_AUTO_TEST(test0)
}
UNORDERED_AUTO_TEST(equality_tests) {
typedef test::minimal::assignable value_type;
typedef test::minimal::copy_constructible_equality_comparable value_type;
boost::unordered_set<int> int_set;
boost::unordered_set<
test::minimal::assignable,
test::minimal::hash<test::minimal::assignable>,
test::minimal::equal_to<test::minimal::assignable>,
test::minimal::copy_constructible_equality_comparable,
test::minimal::hash<test::minimal::copy_constructible_equality_comparable>,
test::minimal::equal_to<test::minimal::copy_constructible_equality_comparable>,
test::minimal::allocator<value_type> > set;
equality_test(int_set);
@ -72,9 +72,9 @@ UNORDERED_AUTO_TEST(equality_tests) {
boost::unordered_multiset<int> int_multiset;
boost::unordered_multiset<
test::minimal::assignable,
test::minimal::hash<test::minimal::assignable>,
test::minimal::equal_to<test::minimal::assignable>,
test::minimal::copy_constructible_equality_comparable,
test::minimal::hash<test::minimal::copy_constructible_equality_comparable>,
test::minimal::equal_to<test::minimal::copy_constructible_equality_comparable>,
test::minimal::allocator<value_type> > multiset;
equality_test(int_multiset);