// Boost.Geometry (aka GGL, Generic Geometry Library) // Unit Test // Copyright (c) 2007-2015 Barend Gehrels, Amsterdam, the Netherlands. // Copyright (c) 2008-2015 Bruno Lalande, Paris, France. // Copyright (c) 2009-2015 Mateusz Loskot, London, UK. // This file was modified by Oracle on 2017. // Modifications copyright (c) 2017 Oracle and/or its affiliates. // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle // Parts of Boost.Geometry are redesigned from Geodan's Geographic Library // (geolib/GGL), copyright (c) 1995-2010 Geodan, 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) #ifndef BOOST_GEOMETRY_TEST_DISJOINT_HPP #define BOOST_GEOMETRY_TEST_DISJOINT_HPP #include #include #include #include #include #include struct no_strategy {}; template bool call_disjoint(Geometry1 const& geometry1, Geometry2 const& geometry2, Strategy const& strategy) { return bg::disjoint(geometry1, geometry2, strategy); } template bool call_disjoint(Geometry1 const& geometry1, Geometry2 const& geometry2, no_strategy) { return bg::disjoint(geometry1, geometry2); } template void check_disjoint(std::string const& id, std::string const& wkt1, std::string const& wkt2, G1 const& g1, G2 const& g2, bool expected, Strategy const& strategy) { bool detected = call_disjoint(g1, g2, strategy); if (id.empty()) { BOOST_CHECK_MESSAGE(detected == expected, "disjoint: " << wkt1 << " and " << wkt2 << " -> Expected: " << expected << " detected: " << detected); } else { BOOST_CHECK_MESSAGE(detected == expected, "disjoint: " << id << " -> Expected: " << expected << " detected: " << detected); } } template void test_disjoint(std::string const& id, std::string const& wkt1, std::string const& wkt2, bool expected) { G1 g1; bg::read_wkt(wkt1, g1); G2 g2; bg::read_wkt(wkt2, g2); boost::variant v1(g1); boost::variant v2(g2); typedef typename bg::strategy::disjoint::services::default_strategy < G1, G2 >::type strategy_type; check_disjoint(id, wkt1, wkt2, g1, g2, expected, no_strategy()); check_disjoint(id, wkt1, wkt2, g1, g2, expected, strategy_type()); check_disjoint(id, wkt1, wkt2, g1, g2, expected, no_strategy()); check_disjoint(id, wkt1, wkt2, v1, g2, expected, no_strategy()); check_disjoint(id, wkt1, wkt2, g1, v2, expected, no_strategy()); check_disjoint(id, wkt1, wkt2, v1, v2, expected, no_strategy()); } template void test_geometry(std::string const& wkt1, std::string const& wkt2, bool expected) { test_disjoint("", wkt1, wkt2, expected); } #endif // BOOST_GEOMETRY_TEST_DISJOINT_HPP