void test_generic_set<ValueTraits, ContainerDefiner>::test_insert(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 testset; testset.insert(&values[0] + 2, &values[0] + 5); const set_type& const_testset = testset; { int init_values [] = { 1, 4, 5 }; TEST_INTRUSIVE_SEQUENCE( init_values, const_testset.begin() ); } typename set_type::iterator i = testset.begin(); BOOST_TEST (i->value_ == 1); i = testset.insert (i, values[0]); BOOST_TEST (&*i == &values[0]); { int init_values [] = { 5, 4, 3, 1 }; TEST_INTRUSIVE_SEQUENCE( init_values, testset.rbegin() ); } i = testset.iterator_to (values[2]); BOOST_TEST (&*i == &values[2]); i = set_type::s_iterator_to(values[2]); BOOST_TEST (&*i == &values[2]); testset.erase (i); { int init_values [] = { 1, 3, 5 }; TEST_INTRUSIVE_SEQUENCE( init_values, testset.begin() ); } } }
void test_generic_set<ValueTraits, ContainerDefiner>::test_swap(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[0], &values[0] + 2); set_type testset2; testset2.insert (&values[0] + 2, &values[0] + 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]); }