// Boost.Geometry (aka GGL, Generic Geometry Library) // Unit Test // Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland. // Copyright (c) 2014-2018, Oracle and/or its affiliates. // Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle // Licensed under the Boost Software License version 1.0. // http://www.boost.org/users/license.html #ifndef BOOST_TEST_MODULE #define BOOST_TEST_MODULE test_is_valid_geo #endif #include #include #include #include "test_is_valid.hpp" #include #include #include #include BOOST_AUTO_TEST_CASE( test_is_valid_geo_polygon ) { typedef bg::model::point > pt; typedef bg::model::polygon G; typedef validity_tester_geo_areal tester; typedef test_valid test; test::apply("p01", "POLYGON((-1 -1, 1 -1, 1 1, -1 1, -1 -1),(-0.5 -0.5, -0.5 0.5, 0.0 0.0, -0.5 -0.5),(0.0 0.0, 0.5 0.5, 0.5 -0.5, 0.0 0.0))", true); } template void test_valid_s(std::string const& wkt, Spheroid const& sph, bool expected_result) { bg::strategy::intersection::geographic_segments<> is(sph); bg::strategy::area::geographic<> as(sph); Poly p; bg::read_wkt(wkt, p); bg::correct(p, as); BOOST_CHECK(bg::is_valid(p, is) == expected_result); } BOOST_AUTO_TEST_CASE( test_is_valid_epsg4053_polygon ) { typedef bg::model::point > pt; typedef bg::model::polygon po; bg::srs::spheroid epsg4053(6371228, 6371228); bg::srs::spheroid wgs84; // NOTE: the orientation is different in these CSes, // in one of them the polygon is corrected before passing it into is_valid() test_valid_s("POLYGON((-148 -68,178 -74,76 0,-148 -68))", wgs84, true); test_valid_s("POLYGON((-148 -68,178 -74,76 0,-148 -68))", epsg4053, true); test_valid_s("POLYGON((-152 -54,-56 43,142 -52,-152 -54))", wgs84, true); test_valid_s("POLYGON((-152 -54,-56 43,142 -52,-152 -54))", epsg4053, true); return; }