void test_generic_set<ValueTraits, ContainerDefiner>::test_sort(std::vector<typename ValueTraits::value_type>& values) { typedef typename ValueTraits::value_type value_type; typedef typename ContainerDefiner < value_type , value_traits<ValueTraits> , constant_time_size<value_type::constant_time_size> >::type set_type; set_type testset1 (values.begin(), values.end()); { int init_values [] = { 1, 2, 3, 4, 5 }; TEST_INTRUSIVE_SEQUENCE( init_values, testset1.begin() ); } testset1.clear(); BOOST_TEST (testset1.empty()); typedef typename ValueTraits::value_type value_type; typedef typename ContainerDefiner < value_type , compare<even_odd> , value_traits<ValueTraits> , constant_time_size<value_type::constant_time_size> >::type set_type2; set_type2 testset2 (&values[0], &values[0] + 6); { int init_values [] = { 5, 3, 1, 4, 2 }; TEST_INTRUSIVE_SEQUENCE( init_values, testset2.rbegin() ); } BOOST_TEST (testset2.begin()->value_ == 2); BOOST_TEST (testset2.rbegin()->value_ == 5); }
void test_generic_multiset<ValueTraits, ContainerDefiner>::test_sort(value_cont_type& values) { 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 multiset_type; multiset_type testset1 (values.begin(), values.end()); { int init_values [] = { 1, 2, 2, 3, 4, 5 }; TEST_INTRUSIVE_SEQUENCE( init_values, testset1.begin() ); } testset1.clear(); BOOST_TEST (testset1.empty()); typedef ContainerDefiner < value_type , compare<even_odd> , value_traits<ValueTraits> , constant_time_size<value_type::constant_time_size> > definer_function2; typedef typename definer_function2::type multiset_type2; multiset_type2 testset2 (values.begin(), values.begin() + 6); { int init_values [] = { 5, 3, 1, 4, 2, 2 }; TEST_INTRUSIVE_SEQUENCE( init_values, testset2.rbegin() ); } BOOST_TEST (testset2.begin()->value_ == 2); BOOST_TEST (testset2.rbegin()->value_ == 5); }
void test_generic_set<ValueTraits, ContainerDefiner>::test_swap(value_cont_type& values) { 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 testset1 (values.begin(), values.begin() + 2); set_type testset2; testset2.insert (values.begin() + 2, values.begin() + 6); testset1.swap (testset2); { int init_values [] = { 1, 2, 4, 5 }; TEST_INTRUSIVE_SEQUENCE( init_values, testset1.begin() ); } { int init_values [] = { 2, 3 }; TEST_INTRUSIVE_SEQUENCE( init_values, testset2.begin() ); } testset1.erase (testset1.iterator_to(values[5]), testset1.end()); BOOST_TEST (testset1.size() == 1); // BOOST_TEST (&testset1.front() == &values[3]); BOOST_TEST (&*testset1.begin() == &values[3]); }
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()); } }