void test_generic_assoc<ValueTraits, ContainerDefiner> ::test_container_from_end(value_cont_type& values, detail::true_type) { typedef typename ContainerDefiner::template container <>::type assoc_type; assoc_type testset (values.begin(), values.begin() + values.size()); BOOST_TEST (testset == assoc_type::container_from_end_iterator(testset.end())); BOOST_TEST (testset == assoc_type::container_from_end_iterator(testset.cend())); }
void test_generic_assoc<ValueTraits, ContainerDefiner>::test_insert_before (value_cont_type& values, detail::true_type) { typedef typename ContainerDefiner::template container <>::type assoc_type; { assoc_type testset; typedef typename value_cont_type::iterator vec_iterator; for(vec_iterator it(values.begin()), itend(values.end()) ; it != itend ; ++it){ testset.push_back(*it); } BOOST_TEST(testset.size() == values.size()); TEST_INTRUSIVE_SEQUENCE_EXPECTED(values, testset.begin()); } { assoc_type testset; typedef typename value_cont_type::iterator vec_iterator; for(vec_iterator it(--values.end()); true; --it){ testset.push_front(*it); if(it == values.begin()){ break; } } BOOST_TEST(testset.size() == values.size()); TEST_INTRUSIVE_SEQUENCE_EXPECTED(values, testset.begin()); } { assoc_type testset; typedef typename value_cont_type::iterator vec_iterator; typename assoc_type::iterator it_pos = testset.insert_before(testset.end(), *values.rbegin()); testset.insert_before(testset.begin(), *values.begin()); for(vec_iterator it(++values.begin()), itend(--values.end()) ; it != itend ; ++it){ testset.insert_before(it_pos, *it); } BOOST_TEST(testset.size() == values.size()); TEST_INTRUSIVE_SEQUENCE_EXPECTED(values, testset.begin()); } }
void test_generic_set<ValueTraits, ContainerDefiner>::test_insert_advanced (value_cont_type& values, detail::false_type) { typedef typename ValueTraits::value_type value_type; typedef ContainerDefiner < value_type , value_traits<ValueTraits> , constant_time_size<value_type::constant_time_size> > definer_function; typedef typename definer_function::type set_type; { set_type testset; testset.insert(values.begin(), values.begin() + values.size()); value_type v(1); typename set_type::insert_commit_data data; BOOST_TEST (!testset.insert_check(v, testset.value_comp(), data).second); BOOST_TEST (!testset.insert_check(testset.begin(), v, testset.value_comp(), data).second); } }
void test_generic_assoc<ValueTraits, ContainerDefiner> ::test_clone(value_cont_type& values) { { typedef typename ContainerDefiner::template container <>::type assoc_type; assoc_type testset1 (values.begin(), values.begin() + values.size()); assoc_type testset2; typedef typename assoc_type::size_type size_type; size_type const testset1_oldsize = testset1.size(); testset2.clone_from(testset1, test::new_cloner<value_type>(), test::delete_disposer<value_type>()); BOOST_TEST (testset1.size() == testset1_oldsize); BOOST_TEST (testset2 == testset1); testset2.clear_and_dispose(test::delete_disposer<value_type>()); BOOST_TEST (testset2.empty()); //Now test move clone testset2.clone_from(boost::move(testset1), test::new_nonconst_cloner<value_type>(), test::delete_disposer<value_type>()); BOOST_TEST (testset2 == testset1); testset2.clear_and_dispose(test::delete_disposer<value_type>()); BOOST_TEST (testset2.empty()); } }