14 #include "CUnit/Basic.h"
20 #define BOUNDARY_TEST(wkt_in, wkt_exp) \
23 LWGEOM *gin, *gout, *gexp; \
24 cu_error_msg_reset(); \
25 gin = lwgeom_from_wkt(wkt_in, LW_PARSER_CHECK_NONE); \
26 CU_ASSERT_PTR_NOT_NULL_FATAL(gin); \
27 gexp = lwgeom_from_wkt(wkt_exp, LW_PARSER_CHECK_NONE); \
28 CU_ASSERT_PTR_NOT_NULL_FATAL(gexp); \
29 gout = lwgeom_boundary(gin); \
30 CU_ASSERT_PTR_NOT_NULL_FATAL(gout); \
31 ASSERT_NORMALIZED_GEOM_SAME(gout, gexp); \
56 "MULTIPOINT(0 0,10 0)",
70 "CIRCULARSTRING EMPTY",
75 "LINESTRING(0 0, 5 5, 10 0, 0 0)",
80 "CIRCULARSTRING(0 0, 4 0, 4 4, 0 4, 0 0)",
85 "LINESTRING(0 0, 5 0, 10 0)",
86 "MULTIPOINT(0 0, 10 0)"
90 "MULTILINESTRING((0 0, 5 0, 10 0),(20 5, 20 6, 20 10))",
91 "MULTIPOINT(0 0, 10 0, 20 5, 20 10)"
95 "MULTICURVE((1 1 1,0 0 0.5, -1 1 1),(1 1 0.5,0 0 0.5, -1 1 0.5, 1 1 0.5))",
96 "MULTIPOINT(1 1 1,-1 1 1)"
106 "MULTILINESTRING EMPTY"
110 "POLYGON((0 0, 5 5, 10 0, 0 0))",
111 "LINESTRING(0 0, 5 5, 10 0, 0 0)"
115 "POLYGON((0 0, 5 5, 10 0, 0 0),(3 1,7 1,5 2,3 1))",
116 "MULTILINESTRING((0 0, 5 5, 10 0, 0 0),(3 1,7 1,5 2,3 1))"
121 "MULTIPOLYGON(((0 0, 5 5, 10 0, 0 0),(3 1,7 1,5 2,3 1)),((20 0,20 5,25 5,20 0)))",
122 "MULTILINESTRING((0 0, 5 5, 10 0, 0 0),(3 1,7 1,5 2,3 1),(20 0,20 5,25 5,20 0))"
126 "CURVEPOLYGON(CIRCULARSTRING(0 0, 4 0, 4 4, 0 4, 0 0))",
127 "MULTICURVE(CIRCULARSTRING(0 0, 4 0, 4 4, 0 4, 0 0))"
131 "CURVEPOLYGON(CIRCULARSTRING(0 0, 4 0, 4 4, 0 4, 0 0),(1 1, 3 3, 3 1, 1 1))",
132 "MULTICURVE(CIRCULARSTRING(0 0, 4 0, 4 4, 0 4, 0 0),(1 1, 3 3, 3 1, 1 1))"
146 "TRIANGLE((1 1, 0 0, -1 1, 1 1))",
147 "LINESTRING(1 1, 0 0, -1 1, 1 1)"
156 "GEOMETRYCOLLECTION EMPTY"
160 "TIN(((0 0,0 -1,-1 1,0 0)))",
161 "LINESTRING(0 0,0 -1,-1 1,0 0)"
165 "TIN(((0 0,0 -1,-1 1,0 0)),((0 0,1 0,0 -1,0 0)))",
166 "MULTILINESTRING((0 0,0 -1,-1 1,0 0),(0 0,1 0,0 -1,0 0))"
174 "GEOMETRYCOLLECTION EMPTY",
175 "GEOMETRYCOLLECTION EMPTY"
180 "GEOMETRYCOLLECTION(POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,4 2,4 4,2 4,2 2)),POLYGON((2 2,2 4,4 4,4 2,2 2)))",
181 "MULTILINESTRING((0 0,0 10,10 10,10 0,0 0),(2 2,4 2,4 4,2 4,2 2),(2 2,2 4,4 4,4 2,2 2))"
185 "GEOMETRYCOLLECTION(TIN(((0 0,0 -1,-1 1,0 0)),((0 0,1 0,0 -1,0 0))),TIN(((10 10,10 20,20 20,10 10))))",
186 "MULTILINESTRING((0 0,0 -1,-1 1,0 0),(0 0,1 0,0 -1,0 0),(10 10,10 20,20 20,10 10))"
190 "GEOMETRYCOLLECTION(TRIANGLE((1 1, 0 0, -1 1, 1 1)))",
191 "LINESTRING(1 1, 0 0, -1 1, 1 1)"
195 "GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(TRIANGLE((0 0,0 -1,-1 1,0 0)),TRIANGLE((0 0,1 0,0 -1,0 0))),MULTILINESTRING((0 0, 5 0, 10 0),(20 5, 20 6, 20 10)))",
196 "GEOMETRYCOLLECTION(MULTILINESTRING((0 0,0 -1,1 0,0 0),(0 0,-1 1,0 -1,0 0)),MULTIPOINT(20 10,20 5,10 0,0 0))"
200 "GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(0 0)),POINT(1 1),MULTIPOINT(2 2,3 3))",
201 "GEOMETRYCOLLECTION EMPTY"
209 CU_pSuite suite = CU_add_suite(
"boundary", NULL, NULL);
static void boundary_tin(void)
static void boundary_collection(void)
static void boundary_line(void)
static void boundary_point(void)
static void boundary_triangle(void)
void boundary_suite_setup(void)
static void boundary_polygon(void)
#define BOUNDARY_TEST(wkt_in, wkt_exp)
#define PG_ADD_TEST(suite, testfunc)
This library is the generic geometry handling section of PostGIS.