// Boost.Geometry (aka GGL, Generic Geometry Library) // // Copyright Barend Gehrels, Geodan B.V. Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include #include #include #include #include #include #include #include #include template void test_geometry(std::string const& wkt1, std::string const& wkt2, Vector const& expected) { typedef bg::detail::overlay::ring_properties::type> properties; Geometry1 geometry1; Geometry2 geometry2; bg::read_wkt(wkt1, geometry1); bg::read_wkt(wkt2, geometry2); typedef std::map map_type; map_type selected; std::map empty; bg::detail::overlay::select_rings(geometry1, geometry2, empty, selected); BOOST_CHECK_EQUAL(selected.size(), expected.size()); if (selected.size() <= expected.size()) { BOOST_AUTO(eit, expected.begin()); for(typename map_type::const_iterator it = selected.begin(); it != selected.end(); ++it, ++eit) { bg::ring_identifier const ring_id = it->first; BOOST_CHECK_EQUAL(ring_id.source_index, eit->template get<0>()); BOOST_CHECK_EQUAL(ring_id.multi_index, eit->template get<1>()); BOOST_CHECK_EQUAL(ring_id.ring_index, eit->template get<2>()); BOOST_CHECK_EQUAL(it->second.within_code, eit->template get<3>()); } } } template void test_all() { // Point in correct clockwise ring -> should return true test_geometry, bg::model::polygon

, bg::overlay_union>( winded[0], winded[1], boost::assign::tuple_list_of(0,-1,-1,-1)(0,-1,0,-1)(0,-1,1,-1)(0,-1,3,-1)(1,-1,1,-1)(1,-1,2,-1)); test_geometry, bg::model::polygon

, bg::overlay_intersection>( winded[0], winded[1], boost::assign::tuple_list_of(0,-1,2,1)(1,-1,-1,1)(1,-1,0,1)(1,-1,3,1)); } int test_main( int , char* [] ) { test_all >(); return 0; }