mirror of
https://github.com/boostorg/intrusive.git
synced 2025-08-02 14:04:36 +02:00
Add iterator tests to all containers.
This commit is contained in:
@@ -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:
|
||||
|
@@ -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);
|
||||
|
@@ -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);
|
||||
|
@@ -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 {
|
||||
|
@@ -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);
|
||||
|
@@ -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);
|
||||
|
Reference in New Issue
Block a user