diff --git a/test/algorithms/overlay/overlay_cases.hpp b/test/algorithms/overlay/overlay_cases.hpp index 6e6e55959..d5373f065 100644 --- a/test/algorithms/overlay/overlay_cases.hpp +++ b/test/algorithms/overlay/overlay_cases.hpp @@ -826,6 +826,18 @@ static std::string case_precision_20[2] = "POLYGON((2 7,4 7,4 3,2.00000000000000044 3,2 7))" }; +static std::string case_precision_21[2] = +{ + "POLYGON((0 0,0 4,2 4,2 3,4 3,4 0,0 0))", + "POLYGON((2 7,4 7,4 3.00001000000000007,2 3,2 7))" +}; + +static std::string case_precision_22[2] = +{ + "POLYGON((0 0,0 4,2 4,2 3,4 3,4 0,0 0))", + "POLYGON((-1 -1,-1 8,8 8,8 -1,-1 -1),(2 7,2 3,4.00000000200000017 2.99999999000000006,4 7,2 7))" +}; + // ticket_17 is keyholed, so has a hole formed by an deliberate intersection // This will fail the intersection/traversal process diff --git a/test/algorithms/set_operations/intersection/intersection.cpp b/test/algorithms/set_operations/intersection/intersection.cpp index b2f4cd8fd..e92575880 100644 --- a/test/algorithms/set_operations/intersection/intersection.cpp +++ b/test/algorithms/set_operations/intersection/intersection.cpp @@ -386,6 +386,8 @@ void test_areal() TEST_INTERSECTION(case_precision_18, 1, -1, 14.0); TEST_INTERSECTION(case_precision_19, 1, -1, 14.0); TEST_INTERSECTION(case_precision_20, 0, 0, 0.0); + TEST_INTERSECTION(case_precision_21, 0, 0, 0.0); + TEST_INTERSECTION(case_precision_22, 1, -1, 14.0); TEST_INTERSECTION_REV(case_precision_1, 0, 0, 0.0); TEST_INTERSECTION_REV(case_precision_2, 0, 0, 0.0); @@ -406,6 +408,8 @@ void test_areal() TEST_INTERSECTION_REV(case_precision_18, 1, -1, 14.0); TEST_INTERSECTION_REV(case_precision_19, 1, -1, 14.0); TEST_INTERSECTION_REV(case_precision_20, 0, 0, 0.0); + TEST_INTERSECTION_REV(case_precision_21, 0, 0, 0.0); + TEST_INTERSECTION_REV(case_precision_22, 1, -1, 14.0); test_one("mysql_21964049", mysql_21964049[0], mysql_21964049[1], diff --git a/test/algorithms/set_operations/union/union.cpp b/test/algorithms/set_operations/union/union.cpp index 9073e783f..7ebdc3241 100644 --- a/test/algorithms/set_operations/union/union.cpp +++ b/test/algorithms/set_operations/union/union.cpp @@ -277,6 +277,8 @@ void test_areal() #if defined(BOOST_GEOMETRY_USE_RESCALING) || defined(BOOST_GEOMETRY_TEST_FAILURES) TEST_UNION(case_precision_20, 1, 0, -1, 22.0); #endif + TEST_UNION(case_precision_21, 1, 0, -1, 22.0); + TEST_UNION(case_precision_22, 1, 1, -1, 73.0); TEST_UNION_REV(case_precision_1, 1, 0, -1, 22.0); TEST_UNION_REV(case_precision_2, 1, 0, -1, 22.0); @@ -300,6 +302,8 @@ void test_areal() #if defined(BOOST_GEOMETRY_USE_RESCALING) || defined(BOOST_GEOMETRY_TEST_FAILURES) TEST_UNION_REV(case_precision_20, 1, 0, -1, 22.0); #endif + TEST_UNION_REV(case_precision_21, 1, 0, -1, 22.0); + TEST_UNION_REV(case_precision_22, 1, 1, -1, 73.0); /* test_one(102,