1 // Boost.Geometry (aka GGL, Generic Geometry Library)
4 // Copyright (c) 2010-2012 Barend Gehrels, Amsterdam, the Netherlands.
6 // Use, modification and distribution is subject to the Boost Software License,
7 // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
8 // http://www.boost.org/LICENSE_1_0.txt)
15 #include <geometry_test_common.hpp>
17 #include <boost/geometry/geometries/geometries.hpp>
18 #include <boost/geometry/geometries/point_xy.hpp>
19 #include <boost/geometry/views/box_view.hpp>
20 #include <boost/geometry/io/wkt/read.hpp>
24 template <typename Box
, bool Reverse
>
25 void test_geometry(std::string
const& wkt
, std::string
const& expected
,
26 bg::order_selector expected_order
)
30 bg::read_wkt(wkt
, box
);
32 typedef bg::box_view
<Box
, Reverse
> view_type
;
36 std::ostringstream out
;
37 for (typename
boost::range_iterator
<view_type
>::type it
= boost::begin(range
);
38 it
!= boost::end(range
); ++it
)
40 out
<< " " << bg::get
<0>(*it
) << bg::get
<1>(*it
);
42 BOOST_CHECK_EQUAL(out
.str(), expected
);
46 // Check forward/backward behaviour
47 typename
boost::range_iterator
<view_type
>::type it
= boost::begin(range
);
50 // Not verified further, same as segment
54 // Check random access behaviour
55 int const n
= boost::size(range
);
56 BOOST_CHECK_EQUAL(n
, 5);
59 // Check Boost.Range concept
60 BOOST_CONCEPT_ASSERT( (boost::RandomAccessRangeConcept
<view_type
>) );
63 bg::order_selector order
= bg::point_order
<view_type
>::value
;
64 BOOST_CHECK_EQUAL(order
, expected_order
);
71 test_geometry
<bg::model::box
<P
>, true> ("polygon((1 1,2 2))", " 11 12 22 21 11", bg::clockwise
);
72 test_geometry
<bg::model::box
<P
>, false>("polygon((1 1,2 2))", " 11 21 22 12 11", bg::counterclockwise
);
73 test_geometry
<bg::model::box
<P
>, true> ("polygon((3 3,5 5))", " 33 35 55 53 33", bg::clockwise
);
77 int test_main(int, char* [])
79 test_all
<bg::model::d2::point_xy
<double> >();