15 #include "CUnit/Basic.h"
29 fprintf(stderr,
"\nIn: %s\nOut: %s\nExp: %s\n",
31 CU_ASSERT_STRING_EQUAL(tmp, out);
44 do_geom_test(
"GEOMETRYCOLLECTION(POINT(1 2),POINT(3 4))",
45 "MULTIPOINT(1 2,3 4)");
47 do_geom_test(
"GEOMETRYCOLLECTION(POINT(1 2),POINT(3 4),POINT(5 6))",
48 "MULTIPOINT(1 2,3 4,5 6)");
50 do_geom_test(
"GEOMETRYCOLLECTION(MULTIPOINT(1 2,3 4),POINT(5 6))",
51 "MULTIPOINT(1 2,3 4,5 6)");
53 do_geom_test(
"GEOMETRYCOLLECTION(POINT(1 2),MULTIPOINT(3 4,5 6))",
54 "MULTIPOINT(1 2,3 4,5 6)");
56 do_geom_test(
"GEOMETRYCOLLECTION(MULTIPOINT(1 2,3 4),MULTIPOINT(5 6,7 8))",
57 "MULTIPOINT(1 2,3 4,5 6,7 8)");
64 "LINESTRING(1 2,3 4)");
66 do_geom_test(
"GEOMETRYCOLLECTION(LINESTRING(1 2,3 4),LINESTRING(5 6,7 8))",
67 "MULTILINESTRING((1 2,3 4),(5 6,7 8))");
69 do_geom_test(
"GEOMETRYCOLLECTION(LINESTRING(1 2,3 4),LINESTRING(5 6,7 8),LINESTRING(9 10,11 12))",
70 "MULTILINESTRING((1 2,3 4),(5 6,7 8),(9 10,11 12))");
72 do_geom_test(
"GEOMETRYCOLLECTION(MULTILINESTRING((1 2,3 4),(5 6,7 8)),LINESTRING(9 10,11 12))",
73 "MULTILINESTRING((1 2,3 4),(5 6,7 8),(9 10,11 12))");
75 do_geom_test(
"GEOMETRYCOLLECTION(LINESTRING(1 2,3 4),MULTILINESTRING((5 6,7 8),(9 10,11 12)))",
76 "MULTILINESTRING((1 2,3 4),(5 6,7 8),(9 10,11 12))");
78 do_geom_test(
"GEOMETRYCOLLECTION(MULTILINESTRING((1 2,3 4),(5 6,7 8)),MULTILINESTRING((9 10,11 12),(13 14,15 16)))",
79 "MULTILINESTRING((1 2,3 4),(5 6,7 8),(9 10,11 12),(13 14,15 16))");
85 do_geom_test(
"GEOMETRYCOLLECTION(POLYGON((1 2,3 4,5 6,1 2)))",
86 "POLYGON((1 2,3 4,5 6,1 2))");
88 do_geom_test(
"GEOMETRYCOLLECTION(POLYGON((1 2,3 4,5 6,1 2)),POLYGON((7 8,9 10,11 12,7 8)))",
89 "MULTIPOLYGON(((1 2,3 4,5 6,1 2)),((7 8,9 10,11 12,7 8)))");
91 do_geom_test(
"GEOMETRYCOLLECTION(POLYGON((1 2,3 4,5 6,1 2)),POLYGON((7 8,9 10,11 12,7 8)),POLYGON((13 14,15 16,17 18,13 14)))",
92 "MULTIPOLYGON(((1 2,3 4,5 6,1 2)),((7 8,9 10,11 12,7 8)),((13 14,15 16,17 18,13 14)))");
94 do_geom_test(
"GEOMETRYCOLLECTION(MULTIPOLYGON(((1 2,3 4,5 6,1 2)),((7 8,9 10,11 12,7 8))),POLYGON((13 14,15 16,17 18,13 14)))",
95 "MULTIPOLYGON(((1 2,3 4,5 6,1 2)),((7 8,9 10,11 12,7 8)),((13 14,15 16,17 18,13 14)))");
97 do_geom_test(
"GEOMETRYCOLLECTION(POLYGON((1 2,3 4,5 6,1 2)),MULTIPOLYGON(((7 8,9 10,11 12,7 8)),((13 14,15 16,17 18,13 14))))",
98 "MULTIPOLYGON(((1 2,3 4,5 6,1 2)),((7 8,9 10,11 12,7 8)),((13 14,15 16,17 18,13 14)))");
100 do_geom_test(
"GEOMETRYCOLLECTION(MULTIPOLYGON(((1 2,3 4,5 6,1 2)),((7 8,9 10,11 12,7 8))),MULTIPOLYGON(((13 14,15 16,17 18,13 14)),((19 20,21 22,23 24,19 20))))",
101 "MULTIPOLYGON(((1 2,3 4,5 6,1 2)),((7 8,9 10,11 12,7 8)),((13 14,15 16,17 18,13 14)),((19 20,21 22,23 24,19 20)))");
108 do_geom_test(
"GEOMETRYCOLLECTION(POINT(1 2),LINESTRING(3 4,5 6))",
109 "GEOMETRYCOLLECTION(POINT(1 2),LINESTRING(3 4,5 6))");
111 do_geom_test(
"GEOMETRYCOLLECTION(LINESTRING(1 2,3 4),POLYGON((5 6,7 8,9 10,5 6)))",
112 "GEOMETRYCOLLECTION(LINESTRING(1 2,3 4),POLYGON((5 6,7 8,9 10,5 6)))");
116 do_geom_test(
"GEOMETRYCOLLECTION(POINT(1 2),LINESTRING(3 4,5 6),POINT(7 8))",
117 "GEOMETRYCOLLECTION(MULTIPOINT(1 2,7 8),LINESTRING(3 4,5 6))");
119 do_geom_test(
"GEOMETRYCOLLECTION(POINT(1 2),LINESTRING(3 4,5 6),MULTIPOINT(7 8,9 10))",
120 "GEOMETRYCOLLECTION(MULTIPOINT(1 2,7 8,9 10),LINESTRING(3 4,5 6))");
124 do_geom_test(
"GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(1 2))))",
127 do_geom_test(
"GEOMETRYCOLLECTION(POINT(1 2),GEOMETRYCOLLECTION(LINESTRING(3 4,5 6)))",
128 "GEOMETRYCOLLECTION(POINT(1 2),LINESTRING(3 4,5 6))");
133 "GEOMETRYCOLLECTION EMPTY");
137 do_geom_test(
"GEOMETRYCOLLECTION(GEOMETRYCOLLECTION EMPTY)",
138 "GEOMETRYCOLLECTION EMPTY");
140 do_geom_test(
"GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(GEOMETRYCOLLECTION EMPTY))",
141 "GEOMETRYCOLLECTION EMPTY");
147 do_geom_test(
"GEOMETRYCOLLECTION(CIRCULARSTRING(0 0,1 1,2 2))",
148 "CIRCULARSTRING(0 0,1 1,2 2)");
150 do_geom_test(
"GEOMETRYCOLLECTION(CIRCULARSTRING(0 0,1 1,2 2),CIRCULARSTRING(0 0,1 1,2 2))",
151 "MULTICURVE(CIRCULARSTRING(0 0,1 1,2 2),CIRCULARSTRING(0 0,1 1,2 2))");
161 "LINESTRING(1 2,3 4)");
164 "POLYGON((1 2,3 4,5 6,1 2))");
166 do_geom_test(
"POLYGON((1 2,3 4,5 6,1 2),(7 8,9 10,11 12,7 8))",
167 "POLYGON((1 2,3 4,5 6,1 2),(7 8,9 10,11 12,7 8))");
172 "GEOMETRYCOLLECTION EMPTY");
180 "LINESTRING(1 2,3 4)");
183 "POLYGON((1 2,3 4,5 6,1 2))");
185 do_geom_test(
"MULTIPOLYGON(((1 2,3 4,5 6,1 2),(7 8,9 10,11 12,7 8)))",
186 "POLYGON((1 2,3 4,5 6,1 2),(7 8,9 10,11 12,7 8))");
191 "MULTIPOINT(1 2,3 4)");
194 "MULTILINESTRING((1 2,3 4),(5 6,7 8))");
196 do_geom_test(
"MULTIPOLYGON(((1 2,3 4,5 6,1 2)),((7 8,9 10,11 12,7 8)))",
197 "MULTIPOLYGON(((1 2,3 4,5 6,1 2)),((7 8,9 10,11 12,7 8)))");
199 do_geom_test(
"MULTIPOLYGON(((1 2,3 4,5 6,1 2),(7 8,9 10,11 12,7 8)),((13 14,15 16,17 18,13 14)))",
200 "MULTIPOLYGON(((1 2,3 4,5 6,1 2),(7 8,9 10,11 12,7 8)),((13 14,15 16,17 18,13 14)))");
204 do_geom_test(
"GEOMETRYCOLLECTION(POINT(1 2),LINESTRING(3 4,5 6))",
205 "GEOMETRYCOLLECTION(POINT(1 2),LINESTRING(3 4,5 6))");
210 "SRID=4326;GEOMETRYCOLLECTION EMPTY");
213 do_geom_test(
"SRID=4326;GEOMETRYCOLLECTION(MULTIPOINT(0 0))",
214 "SRID=4326;POINT(0 0)");
217 do_geom_test(
"SRID=4326;GEOMETRYCOLLECTION(MULTIPOINT(0 0, 1 2))",
218 "SRID=4326;MULTIPOINT(0 0,1 2)");
221 do_geom_test(
"SRID=4326;GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,10 0))",
222 "SRID=4326;GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,10 0))");
225 "SRID=4326;POINT(1 2)");
228 "SRID=4326;POINT(1 2)");
231 "SRID=4326;MULTIPOINT(1 2,3 4)");
234 "SRID=4326;LINESTRING(1 2,3 4)");
236 do_geom_test(
"SRID=4326;MULTILINESTRING((1 2,3 4),(5 6,7 8))",
237 "SRID=4326;MULTILINESTRING((1 2,3 4),(5 6,7 8))");
256 CU_pSuite suite = CU_add_suite(
"homogenize", NULL, NULL);
static void test_coll_line(void)
static void test_coll_poly(void)
static void test_coll_coll(void)
void homogenize_suite_setup(void)
static void test_coll_curve(void)
static void test_coll_point(void)
static void test_geom(void)
static void do_geom_test(char *in, char *out)
#define PG_ADD_TEST(suite, testfunc)
void lwgeom_free(LWGEOM *geom)
#define LW_PARSER_CHECK_NONE
char * lwgeom_to_ewkt(const LWGEOM *lwgeom)
Return an alloced string.
LWGEOM * lwgeom_homogenize(const LWGEOM *geom)
LWGEOM * lwgeom_from_wkt(const char *wkt, const char check)