From e71d48e1e4eaaed7c1e56bf6c8b8d7c565e6048d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aure=CC=80le=20Nitoref?= Date: Sun, 8 Sep 2024 01:04:31 +0200 Subject: [PATCH] Add LinearRing tests for GEOSisClosed, GEOSGeomGetPointN, GEOSGeomGetStartPoint, GEOSGeomGetEndPoint, GEOSGeomGetLength --- tests/unit/capi/GEOSGeomGetNumPointsTest.cpp | 8 +++ tests/unit/capi/GEOSLineStringTest.cpp | 63 ++++++++++++++++++++ 2 files changed, 71 insertions(+) diff --git a/tests/unit/capi/GEOSGeomGetNumPointsTest.cpp b/tests/unit/capi/GEOSGeomGetNumPointsTest.cpp index 80b7d24566..993d8703af 100644 --- a/tests/unit/capi/GEOSGeomGetNumPointsTest.cpp +++ b/tests/unit/capi/GEOSGeomGetNumPointsTest.cpp @@ -48,5 +48,13 @@ void object::test<4>() ensure_equals(GEOSGeomGetNumPoints(input_), 3); } +template<> +template<> +void object::test<5>() +{ + input_ = fromWKT("LINEARRING (0 0, 1 1, 2 0, 0 0)"); + ensure_equals(GEOSGeomGetNumPoints(input_), 4); +} + } // namespace tut diff --git a/tests/unit/capi/GEOSLineStringTest.cpp b/tests/unit/capi/GEOSLineStringTest.cpp index 9d90c3b7c7..5a0efc5cb4 100644 --- a/tests/unit/capi/GEOSLineStringTest.cpp +++ b/tests/unit/capi/GEOSLineStringTest.cpp @@ -108,4 +108,67 @@ void object::test<3> ensure_equals(GEOSGeomGetLength(geom1_, &length), 0); } +template<> +template<> +void object::test<4> +() +{ + geom1_ = GEOSGeomFromWKT("LINEARRING(0 0, 5 5, 10 10, 0 0)"); + GEOSGeometry* geom2; + double x, y, z; + ensure(nullptr != geom1_); + + char const r1 = GEOSisClosed(geom1_); + + ensure_equals(r1, 1); + + geom2 = GEOSGeomGetPointN(geom1_, 0); + GEOSGeomGetX(geom2, &x); + GEOSGeomGetY(geom2, &y); + GEOSGeomGetZ(geom2, &z); + + ensure_equals(x, 0); + ensure_equals(y, 0); + ensure(std::isnan(z)); + + GEOSGeom_destroy(geom2); + + ensure(GEOSGeomGetPointN(geom1_, -1) == nullptr); + + geom2 = GEOSGeomGetStartPoint(geom1_); + GEOSGeomGetX(geom2, &x); + GEOSGeomGetY(geom2, &y); + GEOSGeomGetZ(geom2, &z); + + ensure_equals(x, 0); + ensure_equals(y, 0); + ensure(std::isnan(z)); + + GEOSGeom_destroy(geom2); + + geom2 = GEOSGeomGetEndPoint(geom1_); + GEOSGeomGetX(geom2, &x); + GEOSGeomGetY(geom2, &y); + GEOSGeomGetZ(geom2, &z); + + ensure_equals(x, 0); + ensure_equals(y, 0); + ensure(std::isnan(z)); + + // GEOSGeom_destroy(geom2); +} + +template<> +template<> +void object::test<5> +() +{ + geom1_ = GEOSGeomFromWKT("LINEARRING(0 0, 5 5, 10 10, 0 0)"); + double length; + ensure(nullptr != geom1_); + + GEOSGeomGetLength(geom1_, &length); + ensure(length > 0.0); +} + } // namespace tut