diff --git a/test/test_node_handling.cpp b/test/test_node_handling.cpp index 269ed18..6d9002d 100644 --- a/test/test_node_handling.cpp +++ b/test/test_node_handling.cpp @@ -23,7 +23,7 @@ #include #include #include -#include +#include #include #include #include @@ -502,8 +502,16 @@ void test_merge_same(Dst& dst,BOOST_FWD_REF(Src) src) BOOST_TEST(src.size()==n); } +template +bool find_address(Iterator first,Iterator last,const Value* x) +{ + while(first!=last)if(&*first++==x)return true; + return false; +} + template -void test_merge_different(Dst& dst,BOOST_FWD_REF(Src) src) +void test_merge_different( + Dst& dst,BOOST_FWD_REF(Src) src,bool transferred_iters) { typedef typename boost::remove_reference:: type::iterator src_iterator; @@ -521,7 +529,14 @@ void test_merge_different(Dst& dst,BOOST_FWD_REF(Src) src) merge(dst,boost::forward(src)); BOOST_TEST(dst.size()>=n && m>=src.size() && dst.size()-n==m-src.size()); for(std::size_t i=0;i -bool find_address(Iterator first,Iterator last,const Value* x) -{ - while(first!=last)if(&*first++==x)return true; - return false; -} - template void test_merge_different( Dst& dst,BOOST_FWD_REF(Src) src, @@ -672,17 +680,22 @@ void test_merge_different(Dst& dst,Src& src) { const Dst dst1=dst; const Src src1=src; + const bool transferred_iters= + boost::is_same< + typename boost::multi_index::nth_index::type::iterator, + typename boost::multi_index::nth_index::type::iterator>::value; { Dst dst2=dst1; Src src2=src1; test_merge_different( - dst2.template get(),src2.template get()); + dst2.template get(),src2.template get(),transferred_iters); } { Dst dst2=dst1; Src src2=src1; test_merge_different( - dst2.template get(),boost::move(src2.template get())); + dst2.template get(),boost::move(src2.template get()), + transferred_iters); } { Dst dst2=dst1; @@ -786,7 +799,7 @@ void test_merge() test_merge<1,4>(c2,c2); test_merge<4,2>(c2,c2); - //test_merge<0,1>(c1,c2); + test_merge<0,1>(c1,c2); test_merge<1,2>(c1,c2); test_merge<2,3>(c1,c2); test_merge<3,4>(c1,c2);