]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/boost/libs/geometry/test/algorithms/relational_operations/covered_by/test_covered_by.hpp
update sources to v12.2.3
[ceph.git] / ceph / src / boost / libs / geometry / test / algorithms / relational_operations / covered_by / test_covered_by.hpp
index 5403e8edb83b0ac1c8c9b48e825d9370d811fae5..e22ed03fd94fd9918f90f91f5a9fc48c2e1252a1 100644 (file)
@@ -4,6 +4,11 @@
 // Copyright (c) 2007-2015 Barend Gehrels, Amsterdam, the Netherlands.
 // Copyright (c) 2013-2015 Adam Wulkiewicz, Lodz, Poland.
 
+// 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
+
 // 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 <boost/variant/variant.hpp>
 
-#include <boost/geometry/core/ring_type.hpp>
 #include <boost/geometry/algorithms/covered_by.hpp>
-#include <boost/geometry/strategies/strategies.hpp>
+#include <boost/geometry/core/ring_type.hpp>
 #include <boost/geometry/geometries/ring.hpp>
 #include <boost/geometry/geometries/polygon.hpp>
 #include <boost/geometry/geometries/multi_linestring.hpp>
-
 #include <boost/geometry/io/wkt/read.hpp>
+#include <boost/geometry/strategies/strategies.hpp>
+
+struct no_strategy {};
+
+template <typename Geometry1, typename Geometry2, typename Strategy>
+bool call_covered_by(Geometry1 const& geometry1,
+                     Geometry2 const& geometry2,
+                     Strategy const& strategy)
+{
+    return bg::covered_by(geometry1, geometry2, strategy);
+}
 
 template <typename Geometry1, typename Geometry2>
+bool call_covered_by(Geometry1 const& geometry1,
+                     Geometry2 const& geometry2,
+                     no_strategy)
+{
+    return bg::covered_by(geometry1, geometry2);
+}
+
+template <typename Geometry1, typename Geometry2, typename Strategy>
 void check_geometry(Geometry1 const& geometry1,
                     Geometry2 const& geometry2,
                     std::string const& wkt1,
                     std::string const& wkt2,
-                    bool expected)
+                    bool expected,
+                    Strategy const& strategy)
 {
-    bool detected = bg::covered_by(geometry1, geometry2);
+    bool detected = call_covered_by(geometry1, geometry2, strategy);
 
     BOOST_CHECK_MESSAGE(detected == expected,
         "covered_by: " << wkt1
@@ -53,10 +76,30 @@ void test_geometry(std::string const& wkt1,
     boost::variant<Geometry1> v1(geometry1);
     boost::variant<Geometry2> v2(geometry2);
 
-    check_geometry(geometry1, geometry2, wkt1, wkt2, expected);
-    check_geometry(v1, geometry2, wkt1, wkt2, expected);
-    check_geometry(geometry1, v2, wkt1, wkt2, expected);
-    check_geometry(v1, v2, wkt1, wkt2, expected);
+    typedef typename bg::strategy::covered_by::services::default_strategy
+        <
+            Geometry1, Geometry2
+        >::type strategy_type;
+
+    check_geometry(geometry1, geometry2, wkt1, wkt2, expected, no_strategy());
+    check_geometry(geometry1, geometry2, wkt1, wkt2, expected, strategy_type());
+    check_geometry(v1, geometry2, wkt1, wkt2, expected, no_strategy());
+    check_geometry(geometry1, v2, wkt1, wkt2, expected, no_strategy());
+    check_geometry(v1, v2, wkt1, wkt2, expected, no_strategy());
+}
+
+template <typename Geometry1, typename Geometry2, typename Strategy>
+void test_geometry(std::string const& wkt1,
+                   std::string const& wkt2,
+                   bool expected,
+                   Strategy const& strategy)
+{
+    Geometry1 geometry1;
+    Geometry2 geometry2;
+    bg::read_wkt(wkt1, geometry1);
+    bg::read_wkt(wkt2, geometry2);
+
+    check_geometry(geometry1, geometry2, wkt1, wkt2, expected, strategy);
 }
 
 /*