diff options
Diffstat (limited to 'libs/geometry/test/iterators/point_iterator.cpp')
-rw-r--r-- | libs/geometry/test/iterators/point_iterator.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/libs/geometry/test/iterators/point_iterator.cpp b/libs/geometry/test/iterators/point_iterator.cpp index 2b5af3b3a..b07d64ea2 100644 --- a/libs/geometry/test/iterators/point_iterator.cpp +++ b/libs/geometry/test/iterators/point_iterator.cpp @@ -22,8 +22,11 @@ #include <boost/test/included/unit_test.hpp> #include <boost/assign/list_of.hpp> +#include <boost/concept_check.hpp> #include <boost/core/ignore_unused.hpp> +#include <boost/iterator/iterator_concepts.hpp> #include <boost/tuple/tuple.hpp> +#include <boost/type_traits/is_const.hpp> #include <boost/geometry/core/point_type.hpp> #include <boost/geometry/multi/core/point_type.hpp> @@ -93,6 +96,36 @@ inline std::ostream& print_point_range(std::ostream& os, return os; } + +template +< + typename Geometry, + bool IsConst = boost::is_const<Geometry>::value +> +struct test_iterator_concepts +{ + typedef bg::point_iterator<Geometry> iterator; + BOOST_CONCEPT_ASSERT(( boost::BidirectionalIteratorConcept<iterator> )); + BOOST_CONCEPT_ASSERT(( boost_concepts::ReadableIteratorConcept<iterator> )); + BOOST_CONCEPT_ASSERT(( boost_concepts::LvalueIteratorConcept<iterator> )); + BOOST_CONCEPT_ASSERT + (( boost_concepts::BidirectionalTraversalConcept<iterator> )); +}; + +template <typename Geometry> +struct test_iterator_concepts<Geometry, false> + : test_iterator_concepts<Geometry, true> +{ + typedef bg::point_iterator<Geometry> iterator; + BOOST_CONCEPT_ASSERT + (( boost::Mutable_BidirectionalIteratorConcept<iterator> )); + BOOST_CONCEPT_ASSERT + (( boost_concepts::WritableIteratorConcept<iterator> )); + BOOST_CONCEPT_ASSERT + (( boost_concepts::SwappableIteratorConcept<iterator> )); +}; + + struct equals { template <typename Iterator> @@ -205,6 +238,8 @@ struct test_point_iterator_of_geometry { typedef bg::point_iterator<G> point_iterator; + test_iterator_concepts<G>(); + point_iterator begin = bg::points_begin(geometry); point_iterator end = bg::points_end(geometry); |