mirror of
https://github.com/boostorg/unordered.git
synced 2025-07-30 03:17:15 +02:00
Remove use of iterator_adaptor in unordered tests.
[SVN r58144]
This commit is contained in:
@ -126,8 +126,9 @@ struct input_range_construct_test : public range<T>, objects
|
|||||||
input_range_construct_test() : range<T>(60) {}
|
input_range_construct_test() : range<T>(60) {}
|
||||||
|
|
||||||
void run() const {
|
void run() const {
|
||||||
T x(test::input_iterator(this->values.begin()),
|
BOOST_DEDUCED_TYPENAME test::random_values<T>::const_iterator
|
||||||
test::input_iterator(this->values.end()),
|
begin = this->values.begin(), end = this->values.end();
|
||||||
|
T x(test::input_iterator(begin), test::input_iterator(end),
|
||||||
0, hash, equal_to, allocator);
|
0, hash, equal_to, allocator);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -10,7 +10,6 @@
|
|||||||
#include "../helpers/random_values.hpp"
|
#include "../helpers/random_values.hpp"
|
||||||
#include "../helpers/invariants.hpp"
|
#include "../helpers/invariants.hpp"
|
||||||
#include "../helpers/strong.hpp"
|
#include "../helpers/strong.hpp"
|
||||||
#include "../helpers/input_iterator.hpp"
|
|
||||||
#include <boost/utility.hpp>
|
#include <boost/utility.hpp>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
|
@ -7,7 +7,8 @@
|
|||||||
#define BOOST_UNORDERED_TEST_HELPERS_INPUT_ITERATOR_HEADER
|
#define BOOST_UNORDERED_TEST_HELPERS_INPUT_ITERATOR_HEADER
|
||||||
|
|
||||||
#include <boost/config.hpp>
|
#include <boost/config.hpp>
|
||||||
#include <boost/iterator_adaptors.hpp>
|
#include <boost/iterator.hpp>
|
||||||
|
#include <boost/iterator/iterator_traits.hpp>
|
||||||
|
|
||||||
namespace test
|
namespace test
|
||||||
{
|
{
|
||||||
@ -16,7 +17,7 @@ namespace test
|
|||||||
{
|
{
|
||||||
typedef BOOST_DEDUCED_TYPENAME Iterator::value_type value_type;
|
typedef BOOST_DEDUCED_TYPENAME Iterator::value_type value_type;
|
||||||
|
|
||||||
proxy(value_type const& v) : v_(v) {}
|
explicit proxy(value_type const& v) : v_(v) {}
|
||||||
proxy(proxy const& x) : v_(x.v_) {}
|
proxy(proxy const& x) : v_(x.v_) {}
|
||||||
operator value_type const&() const { return v_; }
|
operator value_type const&() const { return v_; }
|
||||||
|
|
||||||
@ -27,22 +28,44 @@ namespace test
|
|||||||
|
|
||||||
template <class Iterator>
|
template <class Iterator>
|
||||||
struct input_iterator_adaptor
|
struct input_iterator_adaptor
|
||||||
: boost::iterator_adaptor<
|
: public boost::iterator<
|
||||||
input_iterator_adaptor<Iterator>, Iterator,
|
std::input_iterator_tag,
|
||||||
boost::use_default, std::input_iterator_tag,
|
BOOST_DEDUCED_TYPENAME boost::iterator_value<Iterator>::type,
|
||||||
proxy<Iterator> >
|
std::ptrdiff_t,
|
||||||
|
BOOST_DEDUCED_TYPENAME boost::iterator_pointer<Iterator>::type,
|
||||||
|
proxy<Iterator>
|
||||||
|
>
|
||||||
{
|
{
|
||||||
typedef boost::iterator_adaptor<
|
typedef BOOST_DEDUCED_TYPENAME boost::iterator_value<Iterator>::type
|
||||||
input_iterator_adaptor<Iterator>, Iterator,
|
value_type;
|
||||||
boost::use_default, std::input_iterator_tag,
|
|
||||||
proxy<Iterator> > base;
|
input_iterator_adaptor()
|
||||||
|
: base_() {}
|
||||||
explicit input_iterator_adaptor(Iterator it = Iterator())
|
explicit input_iterator_adaptor(Iterator& it)
|
||||||
: base(it) {}
|
: base_(&it) {}
|
||||||
|
proxy<Iterator> operator*() const {
|
||||||
|
return proxy<Iterator>(**base_);
|
||||||
|
}
|
||||||
|
value_type* operator->() const {
|
||||||
|
return &**base_;
|
||||||
|
}
|
||||||
|
input_iterator_adaptor& operator++() {
|
||||||
|
++*base_; return *this;
|
||||||
|
}
|
||||||
|
//input_iterator_adaptor operator++(int) {
|
||||||
|
//}
|
||||||
|
bool operator==(input_iterator_adaptor const& x) const {
|
||||||
|
return *base_ == *x.base_;
|
||||||
|
}
|
||||||
|
bool operator!=(input_iterator_adaptor const& x) const {
|
||||||
|
return *base_ != *x.base_;
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
Iterator* base_;
|
||||||
};
|
};
|
||||||
|
|
||||||
template <class Iterator>
|
template <class Iterator>
|
||||||
input_iterator_adaptor<Iterator> input_iterator(Iterator it)
|
input_iterator_adaptor<Iterator> input_iterator(Iterator& it)
|
||||||
{
|
{
|
||||||
return input_iterator_adaptor<Iterator>(it);
|
return input_iterator_adaptor<Iterator>(it);
|
||||||
}
|
}
|
||||||
|
@ -245,8 +245,12 @@ void constructor_tests2(T*, test::random_generator const& generator = test::defa
|
|||||||
std::cerr<<"Construct 8 - from input iterator\n";
|
std::cerr<<"Construct 8 - from input iterator\n";
|
||||||
{
|
{
|
||||||
test::random_values<T> v(100, generator);
|
test::random_values<T> v(100, generator);
|
||||||
T x(test::input_iterator(v.begin()), test::input_iterator(v.end()), 0, hf1, eq1);
|
BOOST_DEDUCED_TYPENAME test::random_values<T>::const_iterator
|
||||||
T y(test::input_iterator(x.begin()), test::input_iterator(x.end()), 0, hf2, eq2);
|
v_begin = v.begin(), v_end = v.end();
|
||||||
|
T x(test::input_iterator(v_begin), test::input_iterator(v_end), 0, hf1, eq1);
|
||||||
|
BOOST_DEDUCED_TYPENAME T::const_iterator
|
||||||
|
x_begin = x.begin(), x_end = x.end();
|
||||||
|
T y(test::input_iterator(x_begin), test::input_iterator(x_end), 0, hf2, eq2);
|
||||||
test::check_container(x, v);
|
test::check_container(x, v);
|
||||||
test::check_container(y, x);
|
test::check_container(y, x);
|
||||||
test::check_equivalent_keys(x);
|
test::check_equivalent_keys(x);
|
||||||
|
@ -213,7 +213,9 @@ void insert_tests2(X*, test::random_generator generator = test::default_generato
|
|||||||
X x;
|
X x;
|
||||||
|
|
||||||
test::random_values<X> v(1000, generator);
|
test::random_values<X> v(1000, generator);
|
||||||
x.insert(test::input_iterator(v.begin()), test::input_iterator(v.end()));
|
BOOST_DEDUCED_TYPENAME test::random_values<X>::const_iterator
|
||||||
|
begin = v.begin(), end = v.end();
|
||||||
|
x.insert(test::input_iterator(begin), test::input_iterator(end));
|
||||||
test::check_container(x, v);
|
test::check_container(x, v);
|
||||||
|
|
||||||
test::check_equivalent_keys(x);
|
test::check_equivalent_keys(x);
|
||||||
|
Reference in New Issue
Block a user