271{
272 int i = 0;
273 struct gserialized_empty_cases {
274 int ishex;
275 const char* txt;
276 int isempty;
277 };
278
279 struct gserialized_empty_cases cases[] = {
280 { 0, "POINT EMPTY", 1 },
281 { 0, "POINT(1 1)", 0 },
282 { 0, "LINESTRING EMPTY", 1 },
283 { 0, "MULTILINESTRING EMPTY", 1 },
284 { 0, "MULTILINESTRING(EMPTY)", 1 },
285 { 0, "MULTILINESTRING(EMPTY,EMPTY)", 1 },
286 { 0, "MULTILINESTRING(EMPTY,(0 0,1 1))", 0 },
287 { 0, "MULTILINESTRING((0 0,1 1),EMPTY)", 0 },
288 { 0, "MULTILINESTRING(EMPTY,(0 0,1 1),EMPTY)", 0 },
289 { 0, "MULTILINESTRING(EMPTY,EMPTY,EMPTY)", 1 },
290 { 0, "MULTIPOLYGON (((9 9, 9 1, 1 1, 2 4, 7 7, 9 9)), EMPTY)", 0 },
291 { 0, "GEOMETRYCOLLECTION(POINT EMPTY,MULTILINESTRING(EMPTY,EMPTY,EMPTY))", 1 },
292 { 0, "GEOMETRYCOLLECTION(POINT EMPTY,MULTILINESTRING(EMPTY),POINT(1 1))", 0 },
293 { 0, "GEOMETRYCOLLECTION(POINT EMPTY,MULTILINESTRING(EMPTY, (0 0)),POINT EMPTY)", 0 },
294 { 0, "GEOMETRYCOLLECTION(POLYGON EMPTY,POINT EMPTY,MULTILINESTRING(EMPTY,EMPTY),POINT EMPTY)", 1 },
295 { 0, "GEOMETRYCOLLECTION(POLYGON EMPTY,GEOMETRYCOLLECTION(POINT EMPTY),MULTILINESTRING(EMPTY,EMPTY),POINT EMPTY)", 1 },
296 { 1, "0101000000000000000000F87F000000000000F87F", 1 },
297 { 1, "010200000000000000", 1 },
298 { 1, "010400000000000000", 1 },
299 { 1, "0105000000020000000102000000020000000000000000000000000000000000000000000000000000000000000000000000010200000000000000", 0 },
300 { 1, "0105000000020000000102000000000000000102000000020000000000000000000000000000000000000000000000000000000000000000000000", 0 },
301 { 1, "010300000000000000", 1 },
302 { 1, "01030000000100000000000000", 1 },
303 { 1, "010300000002000000000000000100000000000000000000000000000000000000", 0 },
304 { 1, "0107000000030000000102000000000000000103000000020000000000000000000000010200000000000000", 1},
305 { 1, NULL, 0 }
306 };
307
308 while( cases[i].txt )
309 {
311 if (cases[i].ishex)
313 else
315
318
319 CU_ASSERT_EQUAL(ie, cases[i].isempty);
322 i++;
323 }
324}
int gserialized2_is_empty(const GSERIALIZED *g)
Check if a GSERIALIZED is empty without deserializing first.
GSERIALIZED * gserialized2_from_lwgeom(LWGEOM *geom, size_t *size)
Allocate a new GSERIALIZED from an LWGEOM.
void lwgeom_free(LWGEOM *geom)
#define LW_PARSER_CHECK_NONE
LWGEOM * lwgeom_from_hexwkb(const char *hexwkb, const char check)
LWGEOM * lwgeom_from_wkt(const char *wkt, const char check)