Add iterator tests to all containers.

This commit is contained in:
Ion Gaztañaga
2015-04-14 15:00:00 +02:00
parent 08bb0488a8
commit bb94b03dca
6 changed files with 65 additions and 24 deletions

View File

@@ -53,11 +53,6 @@ template<class ValueTraits, template <class = void, class = void, class = void,
void test_generic_set<ValueTraits, ContainerDefiner>::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<ValueTraits>
@@ -65,25 +60,40 @@ void test_generic_set<ValueTraits, ContainerDefiner>::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<ValueTraits, ContainerDefiner>::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<ValueTraits, ContainerDefiner>::test_all(values);
}
//test case due to an error in tree implementation:

View File

@@ -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);

View File

@@ -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);

View File

@@ -18,6 +18,7 @@
#include <boost/intrusive/detail/simple_disposers.hpp>
#include <boost/intrusive/detail/iterator.hpp>
#include <boost/move/utility_core.hpp>
#include "iterator_test.hpp"
namespace boost {
namespace intrusive {

View File

@@ -103,8 +103,8 @@ void test_unordered_multiset<ValueTraits, CacheBegin, CompareHash, Incremental>:
, compare_hash<CompareHash>
, incremental<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<typename unordered_multiset_type::bucket_ptr>::
@@ -121,6 +121,17 @@ void test_unordered_multiset<ValueTraits, CacheBegin, CompareHash, Incremental>:
testset.insert(values.begin(), values.end());
test::test_non_unique_container(testset, values);
}
{
std::vector<typename ValueTraits::value_type> 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<typename unordered_multiset_type::bucket_ptr>::
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);

View File

@@ -119,6 +119,17 @@ void test_unordered_set<ValueTraits, CacheBegin, CompareHash, Incremental>::
testset.insert(values.begin(), values.end());
test::test_unique_container(testset, values);
}
{
std::vector<typename ValueTraits::value_type> 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<typename unordered_set_type::bucket_ptr>::
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);