diff --git a/test/generic_set_test.hpp b/test/generic_set_test.hpp index 8058149..4e571ef 100644 --- a/test/generic_set_test.hpp +++ b/test/generic_set_test.hpp @@ -53,11 +53,6 @@ template::test_all() { typedef typename ValueTraits::value_type value_type; - static const int random_init[6] = { 3, 2, 4, 1, 5, 2 }; - value_cont_type values(6); - for (int i = 0; i < 6; ++i) - (&values[i])->value_ = random_init[i]; - typedef ContainerDefiner < value_type , value_traits @@ -65,25 +60,40 @@ void test_generic_set::test_all() > definer_function; typedef typename definer_function::type set_type; { - set_type testset(values.begin(), values.end()); - test::test_container(testset); - testset.clear(); - testset.insert(values.begin(), values.end()); - test::test_common_unordered_and_associative_container(testset, values); - testset.clear(); - testset.insert(values.begin(), values.end()); - test::test_associative_container(testset, values); - testset.clear(); - testset.insert(values.begin(), values.end()); - test::test_unique_container(testset, values); + static const int random_init[6] = { 3, 2, 4, 1, 5, 2 }; + value_cont_type values(6); + for (int i = 0; i < 6; ++i) + (&values[i])->value_ = random_init[i]; + + { + set_type testset(values.begin(), values.end()); + test::test_container(testset); + testset.clear(); + testset.insert(values.begin(), values.end()); + test::test_common_unordered_and_associative_container(testset, values); + testset.clear(); + testset.insert(values.begin(), values.end()); + test::test_associative_container(testset, values); + testset.clear(); + testset.insert(values.begin(), values.end()); + test::test_unique_container(testset, values); + } + + test_sort(values); + test_insert(values); + test_insert_advanced(values, detail::bool_< is_treap< set_type >::value >()); + test_swap(values); + test_find(values); + test_impl(); + test_generic_assoc::test_all(values); + } + { + value_cont_type values(6); + for (int i = 0; i < 6; ++i) + (&values[i])->value_ = i+1; + set_type testset(values.begin(), values.end()); + test::test_iterator_bidirectional(testset); } - test_sort(values); - test_insert(values); - test_insert_advanced(values, detail::bool_< is_treap< set_type >::value >()); - test_swap(values); - test_find(values); - test_impl(); - test_generic_assoc::test_all(values); } //test case due to an error in tree implementation: diff --git a/test/list_test.cpp b/test/list_test.cpp index 5476701..0d61419 100644 --- a/test/list_test.cpp +++ b/test/list_test.cpp @@ -71,6 +71,10 @@ void test_list< List_Type, Value_Container >::test_all(Value_Container& values) list.insert(list.end(), values.begin(), values.end()); test::test_sequence_container(list, values); } + { + list_type list(values.begin(), values.end()); + test::test_iterator_bidirectional(list); + } test_front_back(values); test_sort(values); diff --git a/test/slist_test.cpp b/test/slist_test.cpp index 7398e4a..deb859c 100644 --- a/test/slist_test.cpp +++ b/test/slist_test.cpp @@ -76,6 +76,10 @@ void test_slist< List_Type, Value_Container > list.insert(list.end(), values.begin(), values.end()); test::test_sequence_container(list, values); } + { + list_type list(values.begin(), values.end()); + test::test_iterator_forward(list); + } test_front(values); test_back(values, detail::bool_< list_type::cache_last >()); test_sort(values); diff --git a/test/test_container.hpp b/test/test_container.hpp index 712406c..ce217ec 100644 --- a/test/test_container.hpp +++ b/test/test_container.hpp @@ -18,6 +18,7 @@ #include #include #include +#include "iterator_test.hpp" namespace boost { namespace intrusive { diff --git a/test/unordered_multiset_test.cpp b/test/unordered_multiset_test.cpp index bb0e234..64ed603 100644 --- a/test/unordered_multiset_test.cpp +++ b/test/unordered_multiset_test.cpp @@ -103,8 +103,8 @@ void test_unordered_multiset: , compare_hash , incremental > unordered_multiset_type; + typedef typename unordered_multiset_type::bucket_traits bucket_traits; { - typedef typename unordered_multiset_type::bucket_traits bucket_traits; typename unordered_multiset_type::bucket_type buckets [BucketSize]; unordered_multiset_type testset (bucket_traits(pointer_traits:: @@ -121,6 +121,17 @@ void test_unordered_multiset: testset.insert(values.begin(), values.end()); test::test_non_unique_container(testset, values); } + { + std::vector values(BucketSize); + for (int i = 0; i < (int)BucketSize; ++i) + (&values[i])->value_ = i; + typename unordered_multiset_type::bucket_type buckets [BucketSize]; + unordered_multiset_type testset(bucket_traits( + pointer_traits:: + pointer_to(buckets[0]), BucketSize)); + testset.insert(values.begin(), values.end()); + test::test_iterator_forward(testset); + } test_sort(values); test_insert(values); test_swap(values); diff --git a/test/unordered_set_test.cpp b/test/unordered_set_test.cpp index 96aa581..cbdb24e 100644 --- a/test/unordered_set_test.cpp +++ b/test/unordered_set_test.cpp @@ -119,6 +119,17 @@ void test_unordered_set:: testset.insert(values.begin(), values.end()); test::test_unique_container(testset, values); } + { + std::vector values(BucketSize); + for (int i = 0; i < (int)BucketSize; ++i) + (&values[i])->value_ = i; + typename unordered_set_type::bucket_type buckets [BucketSize]; + unordered_set_type testset(bucket_traits( + pointer_traits:: + pointer_to(buckets[0]), BucketSize)); + testset.insert(values.begin(), values.end()); + test::test_iterator_forward(testset); + } test_sort(values); test_insert(values); test_swap(values);