From d51982c6da5b7adb63ca0933ae7b53828cc8d72e Mon Sep 17 00:00:00 2001 From: Martin Davis Date: Thu, 21 Sep 2023 19:40:08 -0700 Subject: [PATCH] Add PrecisionReducer test (#962) --- .../overlayng/PrecisionReducerTest.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/tests/unit/operation/overlayng/PrecisionReducerTest.cpp b/tests/unit/operation/overlayng/PrecisionReducerTest.cpp index 3b3f4f7ebb..7d9dc6ea0c 100644 --- a/tests/unit/operation/overlayng/PrecisionReducerTest.cpp +++ b/tests/unit/operation/overlayng/PrecisionReducerTest.cpp @@ -27,11 +27,11 @@ struct test_precisionreducer_data { WKTWriter w; void - checkReduce(const std::string& wkt, double gridSize, const std::string& wkt_expected) + checkReduce(const std::string& wkt, double scale, const std::string& wkt_expected) { std::unique_ptr geom = r.read(wkt); std::unique_ptr expected = r.read(wkt_expected); - PrecisionModel pm(1.0/gridSize); + PrecisionModel pm(scale); std::unique_ptr result = PrecisionReducer::reducePrecision(geom.get(), &pm); ensure_equals_geometry(result.get(), expected.get()); } @@ -142,7 +142,7 @@ template<> void object::test<11> () { checkReduce("LINESTRING(-3 6, 9 1)", - 2, "LINESTRING (-2 6, 10 2)"); + 0.5, "LINESTRING (-2 6, 10 2)"); } // testCollapsedLine @@ -170,9 +170,18 @@ void object::test<14> () { checkReduce("POLYGON ((2 1, 3 1, 3 2, 2 1))", // checkReduce("POLYGON ((0 0, 4 0, 4 4, 0 4, 0 0), (1 1, 1 2, 2 1, 1 1), (1 2, 1 3, 2 3, 1 2), (2 3, 3 3, 3 2, 2 3))", - 1.0/10, "POLYGON ((2 1, 3 1, 3 2, 2 1))"); + 10, "POLYGON ((2 1, 3 1, 3 2, 2 1))"); } +// see https://github.com/libgeos/geos/issues/811 +template<> +template<> +void object::test<15> () +{ + checkReduce("POLYGON ((127.117461568 34.562519572, 127.117483252 34.5624884690001, 127.117603304 34.562319127, 127.117607152 34.562312309, 127.117607012 34.562312359, 127.117254733 34.5621607510001, 127.117746661 34.5620659730001, 127.117603496 34.5623196400001, 127.117484065 34.562488982, 127.117462315 34.562520066, 127.117245225 34.562385186, 127.117461568 34.562519572))", + 100000, + "POLYGON ((127.11775 34.56207, 127.11725 34.56216, 127.11761 34.56231, 127.11775 34.56207))"); +} } // namespace tut