Imported Upstream version 1.64.0
[platform/upstream/boost.git] / libs / geometry / test / algorithms / is_simple.cpp
index 17cbb4b..a61ba62 100644 (file)
@@ -1,9 +1,10 @@
 // Boost.Geometry (aka GGL, Generic Geometry Library)
 // Unit Test
 
-// Copyright (c) 2014-2015, Oracle and/or its affiliates.
+// Copyright (c) 2014-2017, 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
@@ -63,7 +64,7 @@ typedef bg::model::box<point_type>                      box_type;
 //----------------------------------------------------------------------------
 
 
-template <typename Geometry>
+template <typename CSTag, typename Geometry>
 void test_simple(Geometry const& geometry, bool expected_result,
                  bool check_validity = true)
 {
@@ -72,12 +73,22 @@ void test_simple(Geometry const& geometry, bool expected_result,
 #endif
 
     bool simple = bg::is_simple(geometry);
+
     BOOST_ASSERT( ! check_validity || bg::is_valid(geometry) );
     BOOST_CHECK_MESSAGE( simple == expected_result,
         "Expected: " << expected_result
         << " detected: " << simple
         << " wkt: " << bg::wkt(geometry) );
 
+    typedef typename bg::strategy::intersection::services::default_strategy
+        <
+            CSTag
+        >::type strategy_type;
+
+    bool simple_s = bg::is_simple(geometry, strategy_type());
+
+    BOOST_CHECK_EQUAL(simple, simple_s);
+
 #ifdef BOOST_GEOMETRY_TEST_DEBUG
     std::cout << "Geometry: ";
     pretty_print_geometry<Geometry>::apply(std::cout, geometry);
@@ -92,6 +103,26 @@ void test_simple(Geometry const& geometry, bool expected_result,
 }
 
 
+template <typename Geometry>
+void test_simple(Geometry const& geometry,
+                 bool expected_result,
+                 bool check_validity = true)
+{
+    typedef typename bg::cs_tag<Geometry>::type cs_tag;
+    test_simple<cs_tag>(geometry, expected_result, check_validity);
+}
+
+template <BOOST_VARIANT_ENUM_PARAMS(typename T)>
+void test_simple(boost::variant<BOOST_VARIANT_ENUM_PARAMS(T)> const& variant_geometry,
+                 bool expected_result,
+                 bool check_validity = true)
+{
+    typedef typename bg::cs_tag<T0>::type cs_tag;
+    test_simple<cs_tag>(variant_geometry, expected_result, check_validity);
+}
+
+
+
 //----------------------------------------------------------------------------