13 #include "CUnit/Basic.h" 22 #define check_geom_equal(gobt, gexp) do { \ 24 LWGEOM *ngobt, *ngexp; \ 25 ngobt = lwgeom_normalize(gobt); \ 26 ngexp = lwgeom_normalize(gexp); \ 27 if ( ! lwgeom_same((ngobt), (ngexp)) ) { \ 28 obt = lwgeom_to_wkt((ngobt), WKT_ISO, 8, NULL); \ 29 exp = lwgeom_to_wkt((ngexp), WKT_ISO, 8, NULL); \ 30 printf(" Failure at %s:%d\n", __FILE__, __LINE__); \ 31 printf(" Exp: %s\n", exp); \ 32 printf(" Obt: %s\n", obt); \ 33 free(obt); free(exp); \ 34 lwgeom_free(ngobt); lwgeom_free(ngexp); \ 37 lwgeom_free(ngobt); lwgeom_free(ngexp); \ 51 "MULTIPOLYGON(((1725063 4819121, 1725104 4819067, 1725060 4819087, 1725064.14183882 4819094.70208557,1725064.13656044 4819094.70235069,1725064.14210359 4819094.70227252,1725064.14210362 4819094.70227252,1725064.13656043 4819094.70235069,1725055. 4819094, 1725055 4819094, 1725055 4819094, 1725063 4819121)))",
53 CU_ASSERT(gin != NULL);
69 gin =
lwgeom_from_hexwkb(
"0106000020E6100000010000000103000000010000000A0000004B7DA956B99844C0DB0790FE8B4D1DC010BA74A9AF9444C049AFFC5B8C4D1DC03FC6CC690D9844C0DD67E5628C4D1DC07117B56B0D9844C0C80ABA67C45E1DC0839166ABAF9444C0387D4568C45E1DC010BA74A9AF9444C049AFFC5B8C4D1DC040C3CD74169444C0362EC0608C4D1DC07C1A3B77169444C0DC3ADB40B2641DC03AAE5F68B99844C0242948DEB1641DC04B7DA956B99844C0DB0790FE8B4D1DC0",
LW_PARSER_CHECK_NONE);
70 CU_ASSERT(gin != NULL);
73 CU_ASSERT(gout != NULL);
88 "GEOMETRYCOLLECTION(LINESTRING(0 0, 0 0), POLYGON((0 0, 10 10, 10 0, 0 10, 0 0)), LINESTRING(10 0, 10 10))",
90 CU_ASSERT(gin != NULL);
93 CU_ASSERT(gout != NULL);
104 "GEOMETRYCOLLECTION(POINT(0 0),MULTIPOLYGON(((5 5,0 0,0 10,5 5)),((5 5,10 10,10 0,5 5))),LINESTRING(10 0,10 10))",
116 "MULTIPOINT(0 0,1 1,2 2)",
118 CU_ASSERT(gin != NULL);
121 CU_ASSERT(gout != NULL);
125 CU_ASSERT_STRING_EQUAL(ewkt,
126 "MULTIPOINT(0 0,1 1,2 2)");
135 "0103000000010000000400000000000000000024400000000000003640000000000000244000000000000040400000000000003440000000000000404000000000000034400000000000003640",
137 CU_ASSERT(gin != NULL);
140 CU_ASSERT(gout != NULL);
144 CU_ASSERT_STRING_EQUAL(ewkt,
145 "POLYGON((10 22,10 32,20 32,20 22,10 22))");
161 CU_pSuite suite = CU_add_suite(
"geometry_clean", NULL, NULL);
char * lwgeom_to_ewkt(const LWGEOM *lwgeom)
Return an alloced string.
#define check_geom_equal(gobt, gexp)
void lwgeom_free(LWGEOM *geom)
static void test_lwgeom_make_valid(void)
LWGEOM * lwgeom_from_wkt(const char *wkt, const char check)
#define LW_PARSER_CHECK_NONE
LWGEOM * lwgeom_make_valid(LWGEOM *geom)
Attempts to make an invalid geometries valid w/out losing points.
void cu_error_msg_reset()
#define PG_ADD_TEST(suite, testfunc)
LWGEOM * lwgeom_from_hexwkb(const char *hexwkb, const char check)
void clean_suite_setup(void)
This library is the generic geometry handling section of PostGIS.