diff --git a/test/unordered/node_handle_tests.cpp b/test/unordered/node_handle_tests.cpp index 9787d83a..9d9f1c52 100644 --- a/test/unordered/node_handle_tests.cpp +++ b/test/unordered/node_handle_tests.cpp @@ -337,8 +337,12 @@ static void insert_node_handle_unique(Container1& c1, Container2& c2) (boost::is_same::value)); typedef typename Container1::iterator iterator1; + typedef typename Container2::iterator iterator2; typedef typename Container2::insert_return_type insert_return_type2; + Container1 c1_copy(c1); + Container2 c2_copy; + iterator1 r1 = insert_empty_node(c1); insert_return_type2 r2 = c2.insert(node_type()); BOOST_TEST(r1 == c1.end()); @@ -367,6 +371,24 @@ static void insert_node_handle_unique(Container1& c1, Container2& c2) node_handle_compare(r.node, v); } } + + while (!c1_copy.empty()) { + value_type v = *c1_copy.begin(); + value_type const* v_ptr = boost::to_address(c1_copy.begin()); + std::size_t count = c2_copy.count(test::get_key(v)); + iterator2 pos = + c2_copy.insert(c2_copy.begin(), c1_copy.extract(c1_copy.begin())); + if (!count) { + BOOST_TEST_EQ(c2_copy.count(test::get_key(v)), count + 1); + BOOST_TEST(pos != c2.end()); + BOOST_TEST(boost::to_address(pos) == v_ptr); + } else { + BOOST_TEST_EQ(c2_copy.count(test::get_key(v)), count); + BOOST_TEST(pos != c2_copy.end()); + BOOST_TEST( + test::get_key(*pos) == test::get_key(v)); + } + } } template