[postgis-tickets] [SCM] PostGIS branch stable-3.0 updated. 3.0.1-42-g3fc5998
git at osgeo.org
git at osgeo.org
Fri Aug 14 11:24:24 PDT 2020
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "PostGIS".
The branch, stable-3.0 has been updated
via 3fc59980780763c68ba9bc5ff71bd67a959794c3 (commit)
from aa4642fd4595569a15b048d6e7c20acb7916e16b (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 3fc59980780763c68ba9bc5ff71bd67a959794c3
Author: Regina Obe <lr at pcorp.us>
Date: Fri Aug 14 14:24:03 2020 -0400
Backport cunit memory fixes and make tests same as 3.1
diff --git a/liblwgeom/cunit/cu_split.c b/liblwgeom/cunit/cu_split.c
index d637051..b7bcb1e 100644
--- a/liblwgeom/cunit/cu_split.c
+++ b/liblwgeom/cunit/cu_split.c
@@ -15,6 +15,7 @@
#include "liblwgeom.h"
#include "liblwgeom_internal.h"
+#include "../lwgeom_geos.h"
static void test_lwline_split_by_point_to(void)
{
@@ -79,187 +80,166 @@ static void test_lwline_split_by_point_to(void)
static void test_lwgeom_split(void)
{
- LWGEOM *geom, *blade, *ret;
+ LWGEOM *geom, *blade, *ret, *tmp1, *tmp2;
char *wkt, *in_wkt;
- geom = lwgeom_from_wkt(
-"MULTILINESTRING((-5 -2,0 0),(0 0,10 10))",
- LW_PARSER_CHECK_NONE);
+ geom = lwgeom_from_wkt("MULTILINESTRING((-5 -2,0 0),(0 0,10 10))", LW_PARSER_CHECK_NONE);
CU_ASSERT(geom != NULL);
- blade = lwgeom_from_wkt(
- "POINT(0 0)",
- LW_PARSER_CHECK_NONE);
+ blade = lwgeom_from_wkt("POINT(0 0)", LW_PARSER_CHECK_NONE);
CU_ASSERT(blade != NULL);
ret = lwgeom_split(geom, blade);
CU_ASSERT(ret != NULL);
wkt = lwgeom_to_ewkt(ret);
in_wkt = "GEOMETRYCOLLECTION(LINESTRING(-5 -2,0 0),LINESTRING(0 0,10 10))";
- if (strcmp(in_wkt, wkt))
- fprintf(stderr, "\nExp: %s\nObt: %s\n", in_wkt, wkt);
- CU_ASSERT_STRING_EQUAL(wkt, in_wkt);
+ ASSERT_STRING_EQUAL(wkt, in_wkt);
lwfree(wkt);
lwgeom_free(ret);
lwgeom_free(geom);
lwgeom_free(blade);
/* See #1311 */
- geom = lwgeom_from_wkt(
- "LINESTRING(0 0,10 0,20 4,0 3)",
- LW_PARSER_CHECK_NONE);
- CU_ASSERT(geom != NULL);
- blade = lwgeom_from_wkt("POINT(10 0)", LW_PARSER_CHECK_NONE);
- ret = lwgeom_split(geom, blade);
- CU_ASSERT(ret != NULL);
- wkt = lwgeom_to_ewkt(ret);
+ geom = lwgeom_from_wkt("LINESTRING(0 0,10 0,20 4,0 3)", LW_PARSER_CHECK_NONE);
+ CU_ASSERT(geom != NULL);
+ blade = lwgeom_from_wkt("POINT(10 0)", LW_PARSER_CHECK_NONE);
+ ret = lwgeom_split(geom, blade);
+ CU_ASSERT(ret != NULL);
+ wkt = lwgeom_to_ewkt(ret);
in_wkt = "GEOMETRYCOLLECTION(LINESTRING(0 0,10 0),LINESTRING(10 0,20 4,0 3))";
- if (strcmp(in_wkt, wkt))
- fprintf(stderr, "\nExp: %s\nObt: %s\n", in_wkt, wkt);
- CU_ASSERT_STRING_EQUAL(wkt, in_wkt);
- lwfree(wkt);
+ ASSERT_STRING_EQUAL(wkt, in_wkt);
+ lwfree(wkt);
lwgeom_free(ret);
lwgeom_free(geom);
lwgeom_free(blade);
/* See #2528 (1) -- memory leak test, needs valgrind to check */
- geom = lwgeom_from_wkt("SRID=1;LINESTRING(0 1,10 1)", LW_PARSER_CHECK_NONE);
- CU_ASSERT(geom != NULL);
- blade = lwgeom_from_wkt("LINESTRING(7 0,7 3)", LW_PARSER_CHECK_NONE);
- ret = lwgeom_normalize(lwgeom_split(geom, blade));
- CU_ASSERT(ret != NULL);
- wkt = lwgeom_to_ewkt(ret);
- in_wkt = lwgeom_to_ewkt(lwgeom_normalize(
- lwgeom_from_wkt("SRID=1;GEOMETRYCOLLECTION(LINESTRING(0 1,7 1),LINESTRING(7 1,10 1))",
- LW_PARSER_CHECK_NONE)));
- ;
- if (strcmp(in_wkt, wkt))
- fprintf(stderr, "\nExp: %s\nObt: %s\n", in_wkt, wkt);
- CU_ASSERT_STRING_EQUAL(wkt, in_wkt);
- lwfree(wkt);
+ geom = lwgeom_from_wkt("SRID=1;LINESTRING(0 1,10 1)", LW_PARSER_CHECK_NONE);
+ CU_ASSERT(geom != NULL);
+ blade = lwgeom_from_wkt("LINESTRING(7 0,7 3)", LW_PARSER_CHECK_NONE);
+ ret = lwgeom_split(geom, blade);
+ CU_ASSERT(ret != NULL);
+ wkt = lwgeom_to_ewkt(ret);
+ in_wkt = "SRID=1;GEOMETRYCOLLECTION(LINESTRING(0 1,7 1),LINESTRING(7 1,10 1))";
+ ASSERT_STRING_EQUAL(wkt, in_wkt);
+ lwfree(wkt);
lwgeom_free(ret);
lwgeom_free(geom);
lwgeom_free(blade);
/* See #2528 (2) -- memory leak test, needs valgrind to check */
- geom = lwgeom_from_wkt("SRID=1;POLYGON((0 1, 10 1, 10 10, 0 10, 0 1))", LW_PARSER_CHECK_NONE);
- CU_ASSERT(geom != NULL);
- blade = lwgeom_from_wkt("LINESTRING(7 0,7 20)", LW_PARSER_CHECK_NONE);
- ret = lwgeom_normalize(lwgeom_split(geom, blade));
- CU_ASSERT(ret != NULL);
- wkt = lwgeom_to_ewkt(ret);
- in_wkt = lwgeom_to_ewkt(lwgeom_normalize(
- lwgeom_from_wkt("SRID=1;GEOMETRYCOLLECTION(POLYGON((7 1,0 1,0 10,7 10,7 1)),POLYGON((7 10,10 10,10 1,7 1,7 10)))",
- LW_PARSER_CHECK_NONE)));
- if (strcmp(in_wkt, wkt))
- fprintf(stderr, "\nExp: %s\nObt: %s\n", in_wkt, wkt);
- CU_ASSERT_STRING_EQUAL(wkt, in_wkt);
- lwfree(wkt);
+ geom = lwgeom_from_wkt("SRID=1;POLYGON((0 1, 10 1, 10 10, 0 10, 0 1))", LW_PARSER_CHECK_NONE);
+ CU_ASSERT(geom != NULL);
+ blade = lwgeom_from_wkt("LINESTRING(7 0,7 20)", LW_PARSER_CHECK_NONE);
+ tmp1 = lwgeom_split(geom, blade);
+ ret = lwgeom_normalize(tmp1);
+ lwgeom_free(tmp1);
+ CU_ASSERT(ret != NULL);
+ wkt = lwgeom_to_ewkt(ret);
+ tmp1 = lwgeom_from_wkt(
+ "SRID=1;GEOMETRYCOLLECTION(POLYGON((7 1,0 1,0 10,7 10,7 1)),POLYGON((7 10,10 10,10 1,7 1,7 10)))",
+ LW_PARSER_CHECK_NONE);
+ tmp2 = lwgeom_normalize(tmp1);
+ in_wkt = lwgeom_to_ewkt(tmp2);
+ ASSERT_STRING_EQUAL(wkt, in_wkt);
+ lwfree(wkt);
+ lwfree(in_wkt);
+ lwgeom_free(tmp1);
+ lwgeom_free(tmp2);
lwgeom_free(ret);
lwgeom_free(geom);
lwgeom_free(blade);
/* Split line by multiline */
- geom = lwgeom_from_wkt("LINESTRING(0 0, 10 0)", LW_PARSER_CHECK_NONE);
- CU_ASSERT_FATAL(geom != NULL);
- blade = lwgeom_from_wkt("MULTILINESTRING((1 1,1 -1),(2 1,2 -1,3 -1,3 1))",
- LW_PARSER_CHECK_NONE);
- ret = lwgeom_split(geom, blade);
- if ( ! ret ) printf("%s", cu_error_msg);
- CU_ASSERT_FATAL(ret != NULL);
- wkt = lwgeom_to_ewkt(ret);
- CU_ASSERT_FATAL(wkt != NULL);
+ geom = lwgeom_from_wkt("LINESTRING(0 0, 10 0)", LW_PARSER_CHECK_NONE);
+ CU_ASSERT_FATAL(geom != NULL);
+ blade = lwgeom_from_wkt("MULTILINESTRING((1 1,1 -1),(2 1,2 -1,3 -1,3 1))", LW_PARSER_CHECK_NONE);
+ ret = lwgeom_split(geom, blade);
+ if (!ret)
+ printf("%s", cu_error_msg);
+ CU_ASSERT_FATAL(ret != NULL);
+ wkt = lwgeom_to_ewkt(ret);
+ CU_ASSERT_FATAL(wkt != NULL);
in_wkt = "GEOMETRYCOLLECTION(LINESTRING(0 0,1 0),LINESTRING(1 0,2 0),LINESTRING(2 0,3 0),LINESTRING(3 0,10 0))";
- if (strcmp(in_wkt, wkt))
- fprintf(stderr, "\nExp: %s\nObt: %s\n", in_wkt, wkt);
- CU_ASSERT_STRING_EQUAL(wkt, in_wkt);
- lwfree(wkt);
+ ASSERT_STRING_EQUAL(wkt, in_wkt);
+ lwfree(wkt);
lwgeom_free(ret);
lwgeom_free(geom);
lwgeom_free(blade);
/* Split line by polygon (boundary) */
- geom = lwgeom_from_wkt("LINESTRING(0 0, 10 0)", LW_PARSER_CHECK_NONE);
- CU_ASSERT_FATAL(geom != NULL);
- blade = lwgeom_from_wkt(
-"POLYGON((1 -2,1 1,2 1,2 -1,3 -1,3 1,11 1,11 -2,1 -2))",
- LW_PARSER_CHECK_NONE);
- ret = lwgeom_normalize(lwgeom_split(geom, blade));
- if ( ! ret ) printf("%s", cu_error_msg);
- CU_ASSERT_FATAL(ret != NULL);
- wkt = lwgeom_to_ewkt(ret);
- CU_ASSERT_FATAL(wkt != NULL);
- in_wkt = lwgeom_to_ewkt(lwgeom_normalize(lwgeom_from_wkt(
- "GEOMETRYCOLLECTION(LINESTRING(0 0,1 0),LINESTRING(1 0,2 0),LINESTRING(2 0,3 0),LINESTRING(3 0,10 0))",
- LW_PARSER_CHECK_NONE)));
- if (strcmp(in_wkt, wkt))
- fprintf(stderr, "\nExp: %s\nObt: %s\n", in_wkt, wkt);
- CU_ASSERT_STRING_EQUAL(wkt, in_wkt);
- lwfree(wkt);
+ geom = lwgeom_from_wkt("LINESTRING(0 0, 10 0)", LW_PARSER_CHECK_NONE);
+ CU_ASSERT_FATAL(geom != NULL);
+ blade = lwgeom_from_wkt("POLYGON((1 -2,1 1,2 1,2 -1,3 -1,3 1,11 1,11 -2,1 -2))", LW_PARSER_CHECK_NONE);
+ ret = lwgeom_split(geom, blade);
+ if (!ret)
+ printf("%s", cu_error_msg);
+ CU_ASSERT_FATAL(ret != NULL);
+ wkt = lwgeom_to_ewkt(ret);
+ CU_ASSERT_FATAL(wkt != NULL);
+ in_wkt = "GEOMETRYCOLLECTION(LINESTRING(0 0,1 0),LINESTRING(1 0,2 0),LINESTRING(2 0,3 0),LINESTRING(3 0,10 0))";
+ ASSERT_STRING_EQUAL(wkt, in_wkt);
+ lwfree(wkt);
lwgeom_free(ret);
lwgeom_free(geom);
lwgeom_free(blade);
- /* Split line by EMPTY polygon (boundary) */
- geom = lwgeom_from_wkt("LINESTRING(0 0, 10 0)", LW_PARSER_CHECK_NONE);
- CU_ASSERT_FATAL(geom != NULL);
- blade = lwgeom_from_wkt("POLYGON EMPTY", LW_PARSER_CHECK_NONE);
- ret = lwgeom_split(geom, blade);
- if ( ! ret ) printf("%s", cu_error_msg);
- CU_ASSERT_FATAL(ret != NULL);
- wkt = lwgeom_to_ewkt(ret);
- CU_ASSERT_FATAL(wkt != NULL);
+ /* Split line by EMPTY polygon (boundary) */
+ geom = lwgeom_from_wkt("LINESTRING(0 0, 10 0)", LW_PARSER_CHECK_NONE);
+ CU_ASSERT_FATAL(geom != NULL);
+ blade = lwgeom_from_wkt("POLYGON EMPTY", LW_PARSER_CHECK_NONE);
+ ret = lwgeom_split(geom, blade);
+ if (!ret)
+ printf("%s", cu_error_msg);
+ CU_ASSERT_FATAL(ret != NULL);
+ wkt = lwgeom_to_ewkt(ret);
+ CU_ASSERT_FATAL(wkt != NULL);
in_wkt = "GEOMETRYCOLLECTION(LINESTRING(0 0,10 0))";
- if (strcmp(in_wkt, wkt))
- fprintf(stderr, "\nExp: %s\nObt: %s\n", in_wkt, wkt);
- CU_ASSERT_STRING_EQUAL(wkt, in_wkt);
- lwfree(wkt);
+ ASSERT_STRING_EQUAL(wkt, in_wkt);
+ lwfree(wkt);
lwgeom_free(ret);
lwgeom_free(geom);
lwgeom_free(blade);
/* Split line by multipolygon (boundary) */
- geom = lwgeom_from_wkt("LINESTRING(0 0, 10 0)", LW_PARSER_CHECK_NONE);
- CU_ASSERT_FATAL(geom != NULL);
- blade = lwgeom_from_wkt(
-"MULTIPOLYGON(((1 -1,1 1,2 1,2 -1,1 -1)),((3 -1,3 1,11 1,11 -1,3 -1)))",
- LW_PARSER_CHECK_NONE);
- ret = lwgeom_split(geom, blade);
- if ( ! ret ) printf("%s", cu_error_msg);
- CU_ASSERT_FATAL(ret != NULL);
- wkt = lwgeom_to_ewkt(ret);
- CU_ASSERT_FATAL(wkt != NULL);
+ geom = lwgeom_from_wkt("LINESTRING(0 0, 10 0)", LW_PARSER_CHECK_NONE);
+ CU_ASSERT_FATAL(geom != NULL);
+ blade = lwgeom_from_wkt("MULTIPOLYGON(((1 -1,1 1,2 1,2 -1,1 -1)),((3 -1,3 1,11 1,11 -1,3 -1)))",
+ LW_PARSER_CHECK_NONE);
+ ret = lwgeom_split(geom, blade);
+ if (!ret)
+ printf("%s", cu_error_msg);
+ CU_ASSERT_FATAL(ret != NULL);
+ wkt = lwgeom_to_ewkt(ret);
+ CU_ASSERT_FATAL(wkt != NULL);
in_wkt = "GEOMETRYCOLLECTION(LINESTRING(0 0,1 0),LINESTRING(1 0,2 0),LINESTRING(2 0,3 0),LINESTRING(3 0,10 0))";
- if (strcmp(in_wkt, wkt))
- fprintf(stderr, "\nExp: %s\nObt: %s\n", in_wkt, wkt);
- CU_ASSERT_STRING_EQUAL(wkt, in_wkt);
- lwfree(wkt);
+ ASSERT_STRING_EQUAL(wkt, in_wkt);
+ lwfree(wkt);
lwgeom_free(ret);
lwgeom_free(geom);
lwgeom_free(blade);
- /* Split line by multipoint */
- geom = lwgeom_from_wkt("LINESTRING(0 0, 10 0)", LW_PARSER_CHECK_NONE);
- CU_ASSERT_FATAL(geom != NULL);
- blade = lwgeom_from_wkt("MULTIPOINT(2 0,8 0,4 0)", LW_PARSER_CHECK_NONE);
- ret = lwgeom_split(geom, blade);
- if ( ! ret ) printf("%s", cu_error_msg);
- CU_ASSERT_FATAL(ret != NULL);
- wkt = lwgeom_to_ewkt(ret);
- CU_ASSERT_FATAL(wkt != NULL);
+ /* Split line by multipoint */
+ geom = lwgeom_from_wkt("LINESTRING(0 0, 10 0)", LW_PARSER_CHECK_NONE);
+ CU_ASSERT_FATAL(geom != NULL);
+ blade = lwgeom_from_wkt("MULTIPOINT(2 0,8 0,4 0)", LW_PARSER_CHECK_NONE);
+ ret = lwgeom_split(geom, blade);
+ if (!ret)
+ printf("%s", cu_error_msg);
+ CU_ASSERT_FATAL(ret != NULL);
+ wkt = lwgeom_to_ewkt(ret);
+ CU_ASSERT_FATAL(wkt != NULL);
in_wkt = "GEOMETRYCOLLECTION(LINESTRING(8 0,10 0),LINESTRING(0 0,2 0),LINESTRING(4 0,8 0),LINESTRING(2 0,4 0))";
- if (strcmp(in_wkt, wkt))
- fprintf(stderr, "\nExp: %s\nObt: %s\n", in_wkt, wkt);
- CU_ASSERT_STRING_EQUAL(wkt, in_wkt);
- lwfree(wkt);
+ ASSERT_STRING_EQUAL(wkt, in_wkt);
+ lwfree(wkt);
lwgeom_free(ret);
lwgeom_free(geom);
lwgeom_free(blade);
- /* See #3401 -- robustness issue */
- geom = lwgeom_from_wkt("LINESTRING(-180 0,0 0)", LW_PARSER_CHECK_NONE);
- CU_ASSERT(geom != NULL);
- blade = lwgeom_from_wkt("POINT(-20 0)", LW_PARSER_CHECK_NONE);
- ret = lwgeom_split(geom, blade);
- CU_ASSERT(ret != NULL);
+ /* See #3401 -- robustness issue */
+ geom = lwgeom_from_wkt("LINESTRING(-180 0,0 0)", LW_PARSER_CHECK_NONE);
+ CU_ASSERT(geom != NULL);
+ blade = lwgeom_from_wkt("POINT(-20 0)", LW_PARSER_CHECK_NONE);
+ ret = lwgeom_split(geom, blade);
+ CU_ASSERT(ret != NULL);
{
LWCOLLECTION *split = lwgeom_as_lwcollection(ret);
LWLINE *l1, *l2;
@@ -281,6 +261,12 @@ static void test_lwgeom_split(void)
lwgeom_free(blade);
}
+static int
+clean_geos_split_suite(void)
+{
+ finishGEOS();
+ return 0;
+}
/*
** Used by test harness to register the tests in this file.
@@ -288,7 +274,7 @@ static void test_lwgeom_split(void)
void split_suite_setup(void);
void split_suite_setup(void)
{
- CU_pSuite suite = CU_add_suite("split", NULL, NULL);
+ CU_pSuite suite = CU_add_suite("split", NULL, clean_geos_split_suite);
PG_ADD_TEST(suite, test_lwline_split_by_point_to);
PG_ADD_TEST(suite, test_lwgeom_split);
}
diff --git a/liblwgeom/cunit/cu_wrapx.c b/liblwgeom/cunit/cu_wrapx.c
index 7ee6586..a5ca09a 100644
--- a/liblwgeom/cunit/cu_wrapx.c
+++ b/liblwgeom/cunit/cu_wrapx.c
@@ -15,10 +15,11 @@
#include "liblwgeom.h"
#include "liblwgeom_internal.h"
+#include "../lwgeom_geos.h"
static void test_lwgeom_wrapx(void)
{
- LWGEOM *geom, *ret;
+ LWGEOM *geom, *ret, *tmp, *tmp2;
char *exp_wkt, *obt_wkt;
geom = lwgeom_from_wkt(
@@ -77,13 +78,21 @@ static void test_lwgeom_wrapx(void)
"LINESTRING(0 0,10 0)",
LW_PARSER_CHECK_NONE);
CU_ASSERT_FATAL(geom != NULL);
- ret = lwgeom_normalize(lwgeom_wrapx(geom, 8, -10));
+ tmp = lwgeom_wrapx(geom, 8, -10);
+ ret = lwgeom_normalize(tmp);
+ lwgeom_free(tmp);
CU_ASSERT_FATAL(ret != NULL);
obt_wkt = lwgeom_to_ewkt(ret);
- exp_wkt = lwgeom_to_ewkt(lwgeom_normalize(lwgeom_from_wkt("MULTILINESTRING((0 0,8 0),(-2 0,0 0))",
- LW_PARSER_CHECK_NONE)));
+ tmp = lwgeom_from_wkt(
+ "MULTILINESTRING((0 0,8 0),(-2 0,0 0))",
+ LW_PARSER_CHECK_NONE);
+ tmp2 = lwgeom_normalize(tmp);
+ lwgeom_free(tmp);
+ exp_wkt = lwgeom_to_ewkt(tmp2);
+ lwgeom_free(tmp2);
ASSERT_STRING_EQUAL(obt_wkt, exp_wkt);
lwfree(obt_wkt);
+ lwfree(exp_wkt);
lwgeom_free(ret);
lwgeom_free(geom);
@@ -91,12 +100,19 @@ static void test_lwgeom_wrapx(void)
"MULTILINESTRING((-5 -2,0 0),(0 0,10 10))",
LW_PARSER_CHECK_NONE);
CU_ASSERT_FATAL(geom != NULL);
- ret = lwgeom_wrapx(geom, 0, 20);
+ tmp = lwgeom_wrapx(geom, 0, 20);
+ ret = lwgeom_normalize(tmp);
+ lwgeom_free(tmp);
CU_ASSERT_FATAL(ret != NULL);
obt_wkt = lwgeom_to_ewkt(ret);
- exp_wkt = "MULTILINESTRING((15 -2,20 0),(0 0,10 10))";
+ tmp = lwgeom_from_wkt("MULTILINESTRING((15 -2,20 0),(0 0,10 10))", LW_PARSER_CHECK_NONE);
+ tmp2 = lwgeom_normalize(tmp);
+ lwgeom_free(tmp);
+ exp_wkt = lwgeom_to_ewkt(tmp2);
+ lwgeom_free(tmp2);
ASSERT_STRING_EQUAL(obt_wkt, exp_wkt);
lwfree(obt_wkt);
+ lwfree(exp_wkt);
lwgeom_free(ret);
lwgeom_free(geom);
@@ -107,23 +123,29 @@ static void test_lwgeom_wrapx(void)
")",
LW_PARSER_CHECK_NONE);
CU_ASSERT_FATAL(geom != NULL);
- ret = lwgeom_normalize(lwgeom_wrapx(geom, 2, 20));
+ tmp = lwgeom_wrapx(geom, 2, 20);
+ ret = lwgeom_normalize(tmp);
+ lwgeom_free(tmp);
CU_ASSERT_FATAL(ret != NULL);
obt_wkt = lwgeom_to_ewkt(ret);
- exp_wkt = lwgeom_to_ewkt(lwgeom_normalize(lwgeom_from_wkt(
- "GEOMETRYCOLLECTION("
- "MULTIPOLYGON("
- "((22 0,20 0,20 10,22 10,22 4,22 2,22 0)),"
- "((2 10,10 10,10 0,2 0,2 2,4 2,4 4,2 4,2 10))"
- "),"
- "MULTIPOLYGON("
- "((22 11,20 11,20 21,22 21,22 15,22 13,22 11)),"
- "((2 21,10 21,10 11,2 11,2 13,4 13,4 15,2 15,2 21))"
- ")"
- ")",
- LW_PARSER_CHECK_NONE)));
+ tmp = lwgeom_from_wkt("GEOMETRYCOLLECTION("
+ "MULTIPOLYGON("
+ "((22 0,20 0,20 10,22 10,22 4,22 2,22 0)),"
+ "((2 10,10 10,10 0,2 0,2 2,4 2,4 4,2 4,2 10))"
+ "),"
+ "MULTIPOLYGON("
+ "((22 11,20 11,20 21,22 21,22 15,22 13,22 11)),"
+ "((2 21,10 21,10 11,2 11,2 13,4 13,4 15,2 15,2 21))"
+ ")"
+ ")",
+ LW_PARSER_CHECK_NONE);
+ tmp2 = lwgeom_normalize(tmp);
+ lwgeom_free(tmp);
+ exp_wkt = lwgeom_to_ewkt(tmp2);
+ lwgeom_free(tmp2);
ASSERT_STRING_EQUAL(obt_wkt, exp_wkt);
lwfree(obt_wkt);
+ lwfree(exp_wkt);
lwgeom_free(ret);
lwgeom_free(geom);
@@ -135,20 +157,35 @@ static void test_lwgeom_wrapx(void)
")",
LW_PARSER_CHECK_NONE);
CU_ASSERT_FATAL(geom != NULL);
- ret = lwgeom_wrapx(geom, 0, 20);
+ tmp = lwgeom_wrapx(geom, 0, 20);
+ ret = lwgeom_normalize(tmp);
+ lwgeom_free(tmp);
CU_ASSERT_FATAL(ret != NULL);
obt_wkt = lwgeom_to_ewkt(ret);
- exp_wkt = "GEOMETRYCOLLECTION("
- "MULTILINESTRING((15 -2,20 0),(0 0,10 10)),"
- "POINT(15 0),"
- "POLYGON EMPTY"
- ")";
+ tmp = lwgeom_from_wkt(
+ "GEOMETRYCOLLECTION("
+ "MULTILINESTRING((15 -2,20 0),(0 0,10 10)),"
+ "POINT(15 0),"
+ "POLYGON EMPTY"
+ ")",
+ LW_PARSER_CHECK_NONE);
+ tmp2 = lwgeom_normalize(tmp);
+ lwgeom_free(tmp);
+ exp_wkt = lwgeom_to_ewkt(tmp2);
+ lwgeom_free(tmp2);
ASSERT_STRING_EQUAL(obt_wkt, exp_wkt);
lwfree(obt_wkt);
+ lwfree(exp_wkt);
lwgeom_free(ret);
lwgeom_free(geom);
}
+static int
+clean_geos_wrapx_suite(void)
+{
+ finishGEOS();
+ return 0;
+}
/*
** Used by test harness to register the tests in this file.
@@ -156,6 +193,6 @@ static void test_lwgeom_wrapx(void)
void wrapx_suite_setup(void);
void wrapx_suite_setup(void)
{
- CU_pSuite suite = CU_add_suite("wrapx", NULL, NULL);
+ CU_pSuite suite = CU_add_suite("wrapx", NULL, clean_geos_wrapx_suite);
PG_ADD_TEST(suite, test_lwgeom_wrapx);
}
-----------------------------------------------------------------------
Summary of changes:
liblwgeom/cunit/cu_split.c | 238 +++++++++++++++++++++------------------------
liblwgeom/cunit/cu_wrapx.c | 89 ++++++++++++-----
2 files changed, 175 insertions(+), 152 deletions(-)
hooks/post-receive
--
PostGIS
More information about the postgis-tickets
mailing list