15 #include "CUnit/Basic.h"
29 "LINESTRING(-1 -1,-1 2.5,2 2,2 -1)",
30 "TRIANGLE((0 0,-1 1,0 -1,0 0))",
31 "MULTIPOINT(0.9 0.9,0.9 0.9,0.9 0.9,0.9 0.9,0.9 0.9,0.9 0.9)",
32 "SRID=1;MULTILINESTRING((-1 -1,-1 2.5,2 2,2 -1),(-1 -1,-1 2.5,2 2,2 -1),(-1 -1,-1 2.5,2 2,2 -1),(-1 -1,-1 2.5,2 2,2 -1))",
33 "SRID=1;MULTILINESTRING((-1 -1,-1 2.5,2 2,2 -1),(-1 -1,-1 2.5,2 2,2 -1),(-1 -1,-1 2.5,2 2,2 -1),(-1 -1,-1 2.5,2 2,2 -1))",
34 "POLYGON((-1 -1,-1 2.5,2 2,2 -1,-1 -1),(0 0,0 1,1 1,1 0,0 0))",
35 "SRID=4326;POLYGON((-1 -1,-1 2.5,2 2,2 -1,-1 -1),(0 0,0 1,1 1,1 0,0 0))",
36 "SRID=4326;POLYGON((-1 -1 1,-1 2.5 1,2 2 2,2 -1 2,-1 -1 2),(0 0 1,0 1 1,1 1 1,1 0 2,0 0 2))",
37 "SRID=4326;POLYGON((-1 -1,-1 2.5,2 2,2 -1,-1 -1),(0 0,0 1,1 1,1 0,0 0),(-0.5 -0.5,-0.5 -0.4,-0.4 -0.4,-0.4 -0.5,-0.5 -0.5))",
38 "SRID=100000;POLYGON((-1 -1 3,-1 2.5 3,2 2 3,2 -1 3,-1 -1 3),(0 0 3,0 1 3,1 1 3,1 0 3,0 0 3),(-0.5 -0.5 3,-0.5 -0.4 3,-0.4 -0.4 3,-0.4 -0.5 3,-0.5 -0.5 3))",
39 "SRID=4326;MULTIPOLYGON(((-1 -1,-1 2.5,2 2,2 -1,-1 -1),(0 0,0 1,1 1,1 0,0 0),(-0.5 -0.5,-0.5 -0.4,-0.4 -0.4,-0.4 -0.5,-0.5 -0.5)),((-1 -1,-1 2.5,2 2,2 -1,-1 -1),(0 0,0 1,1 1,1 0,0 0),(-0.5 -0.5,-0.5 -0.4,-0.4 -0.4,-0.4 -0.5,-0.5 -0.5)))",
40 "SRID=4326;GEOMETRYCOLLECTION(POINT(0 1),POLYGON((-1 -1,-1 2.5,2 2,2 -1,-1 -1),(0 0,0 1,1 1,1 0,0 0)),MULTIPOLYGON(((-1 -1,-1 2.5,2 2,2 -1,-1 -1),(0 0,0 1,1 1,1 0,0 0),(-0.5 -0.5,-0.5 -0.4,-0.4 -0.4,-0.4 -0.5,-0.5 -0.5))))",
41 "POLYHEDRALSURFACE(((-1 -1,-1 2.5,2 2,2 -1,-1 -1),(0 0,0 1,1 1,1 0,0 0),(-0.5 -0.5,-0.5 -0.4,-0.4 -0.4,-0.4 -0.5,-0.5 -0.5)),((-1 -1,-1 2.5,2 2,2 -1,-1 -1),(0 0,0 1,1 1,1 0,0 0),(-0.5 -0.5,-0.5 -0.4,-0.4 -0.4,-0.4 -0.5,-0.5 -0.5)))",
42 "POLYHEDRALSURFACE(((-1 -1 1,-1 2.5 1,2 2 1,2 -1 1,-1 -1 1),(0 0 1,0 1 1,1 1 1,1 0 1,0 0 1),(-0.5 -0.5 1,-0.5 -0.4 1,-0.4 -0.4 1,-0.4 -0.5 1,-0.5 -0.5 1)),((-1 -1 1,-1 2.5 1,2 2 1,2 -1 1,-1 -1 1),(0 0 1,0 1 1,1 1 1,1 0 1,0 0 1),(-0.5 -0.5 1,-0.5 -0.4 1,-0.4 -0.4 1,-0.4 -0.5 1,-0.5 -0.5 1)))",
43 "TIN(((0 0,0 -1,-1 1,0 0)),((0 0,1 0,0 -1,0 0)))",
44 #if POSTGIS_SFCGAL_VERSION >= 10500
47 "LINESTRINGM(0 0 1, 1 1 2, 2 2 3)",
48 "LINESTRINGZM(0 0 1 10, 1 1 2 20, 2 2 3 30)",
49 "TRIANGLEM((0 0 1, 1 1 2, 2 0 3, 0 0 1))",
50 "TRIANGLEZM((0 0 1 10, 1 1 2 20, 2 0 3 30, 0 0 1 10))",
51 "POLYGONM((0 0 1, 0 1 2, 1 1 3, 1 0 4, 0 0 1))",
52 "POLYGONZM((0 0 1 10, 0 1 2 20, 1 1 3 30, 1 0 4 40, 0 0 1 10))",
53 "MULTIPOINTM(0 0 1, 1 1 2, 2 2 3)",
54 "MULTIPOINTZM(0 0 1 10, 1 1 2 20, 2 2 3 30)",
55 "MULTILINESTRINGM((0 0 1, 1 1 2),(2 2 3, 3 3 4))",
56 "MULTILINESTRINGZM((0 0 1 10, 1 1 2 20),(2 2 3 30, 3 3 4 40))",
57 "MULTIPOLYGONM(((0 0 1, 0 1 2, 1 1 3, 1 0 4, 0 0 1)),((2 2 5, 2 3 6, 3 3 7, 3 2 8, 2 2 5)))",
58 "MULTIPOLYGONZM(((0 0 1 10, 0 1 2 20, 1 1 3 30, 1 0 4 40, 0 0 1 10)),((2 2 5 50, 2 3 6 60, 3 3 7 70, 3 2 8 80, 2 2 5 50)))",
59 "TINM(((0 0 1, 0 1 2, 1 0 3, 0 0 1)),((0 0 1, 1 0 3, 1 1 4, 0 0 1)))",
60 "TINZM(((0 0 1 10, 0 1 2 20, 1 0 3 30, 0 0 1 10)),((0 0 1 10, 1 0 3 30, 1 1 4 40, 0 0 1 10)))",
61 "POLYHEDRALSURFACEM(((0 0 1, 0 1 2, 1 1 3, 1 0 4, 0 0 1)),((0 0 1, 1 0 4, 1 -1 5, 0 -1 6, 0 0 1)))",
62 "POLYHEDRALSURFACEZM(((0 0 1 10, 0 1 2 20, 1 1 3 30, 1 0 4 40, 0 0 1 10)),((0 0 1 10, 1 0 4 40, 1 -1 5 50, 0 -1 6 60, 0 0 1 10)))",
63 "GEOMETRYCOLLECTIONM(LINESTRING M(-1 -1 3, 2 19 25, -4 20 15),POLYGONM((0 0 10, 2 19 25, -4 20 15, 0 0 10)))",
64 "GEOMETRYCOLLECTIONZM(LINESTRING ZM(-1 -1 3 4, 2 19 25 250, -4 20 15 150),POLYGONZM((0 0 10 100, 2 19 25 250, -4 20 15 150, 0 0 10 100)))",
67 char *expected_ewkt[] = {
69 "LINESTRING(-1 -1,-1 2.5,2 2,2 -1)",
70 "TRIANGLE((0 0,-1 1,0 -1,0 0))",
71 "MULTIPOINT(0.9 0.9,0.9 0.9,0.9 0.9,0.9 0.9,0.9 0.9,0.9 0.9)",
72 "SRID=1;MULTILINESTRING((-1 -1,-1 2.5,2 2,2 -1),(-1 -1,-1 2.5,2 2,2 -1),(-1 -1,-1 2.5,2 2,2 -1),(-1 -1,-1 2.5,2 2,2 -1))",
73 "SRID=1;MULTILINESTRING((-1 -1,-1 2.5,2 2,2 -1),(-1 -1,-1 2.5,2 2,2 -1),(-1 -1,-1 2.5,2 2,2 -1),(-1 -1,-1 2.5,2 2,2 -1))",
74 "POLYGON((-1 -1,-1 2.5,2 2,2 -1,-1 -1),(0 0,0 1,1 1,1 0,0 0))",
75 "SRID=4326;POLYGON((-1 -1,-1 2.5,2 2,2 -1,-1 -1),(0 0,0 1,1 1,1 0,0 0))",
76 "SRID=4326;POLYGON((-1 -1 1,-1 2.5 1,2 2 2,2 -1 2,-1 -1 2),(0 0 1,0 1 1,1 1 1,1 0 2,0 0 2))",
77 "SRID=4326;POLYGON((-1 -1,-1 2.5,2 2,2 -1,-1 -1),(0 0,0 1,1 1,1 0,0 0),(-0.5 -0.5,-0.5 -0.4,-0.4 -0.4,-0.4 -0.5,-0.5 -0.5))",
78 "SRID=100000;POLYGON((-1 -1 3,-1 2.5 3,2 2 3,2 -1 3,-1 -1 3),(0 0 3,0 1 3,1 1 3,1 0 3,0 0 3),(-0.5 -0.5 3,-0.5 -0.4 3,-0.4 -0.4 3,-0.4 -0.5 3,-0.5 -0.5 3))",
79 "SRID=4326;MULTIPOLYGON(((-1 -1,-1 2.5,2 2,2 -1,-1 -1),(0 0,0 1,1 1,1 0,0 0),(-0.5 -0.5,-0.5 -0.4,-0.4 -0.4,-0.4 -0.5,-0.5 -0.5)),((-1 -1,-1 2.5,2 2,2 -1,-1 -1),(0 0,0 1,1 1,1 0,0 0),(-0.5 -0.5,-0.5 -0.4,-0.4 -0.4,-0.4 -0.5,-0.5 -0.5)))",
80 "SRID=4326;GEOMETRYCOLLECTION(POINT(0 1),POLYGON((-1 -1,-1 2.5,2 2,2 -1,-1 -1),(0 0,0 1,1 1,1 0,0 0)),MULTIPOLYGON(((-1 -1,-1 2.5,2 2,2 -1,-1 -1),(0 0,0 1,1 1,1 0,0 0),(-0.5 -0.5,-0.5 -0.4,-0.4 -0.4,-0.4 -0.5,-0.5 -0.5))))",
81 "POLYHEDRALSURFACE(((-1 -1,-1 2.5,2 2,2 -1,-1 -1),(0 0,0 1,1 1,1 0,0 0),(-0.5 -0.5,-0.5 -0.4,-0.4 -0.4,-0.4 -0.5,-0.5 -0.5)),((-1 -1,-1 2.5,2 2,2 -1,-1 -1),(0 0,0 1,1 1,1 0,0 0),(-0.5 -0.5,-0.5 -0.4,-0.4 -0.4,-0.4 -0.5,-0.5 -0.5)))",
82 "POLYHEDRALSURFACE(((-1 -1 1,-1 2.5 1,2 2 1,2 -1 1,-1 -1 1),(0 0 1,0 1 1,1 1 1,1 0 1,0 0 1),(-0.5 -0.5 1,-0.5 -0.4 1,-0.4 -0.4 1,-0.4 -0.5 1,-0.5 -0.5 1)),((-1 -1 1,-1 2.5 1,2 2 1,2 -1 1,-1 -1 1),(0 0 1,0 1 1,1 1 1,1 0 1,0 0 1),(-0.5 -0.5 1,-0.5 -0.4 1,-0.4 -0.4 1,-0.4 -0.5 1,-0.5 -0.5 1)))",
83 "TIN(((0 0,0 -1,-1 1,0 0)),((0 0,1 0,0 -1,0 0)))",
84 #if POSTGIS_SFCGAL_VERSION >= 10500
87 "LINESTRINGM(0 0 1,1 1 2,2 2 3)",
88 "LINESTRING(0 0 1 10,1 1 2 20,2 2 3 30)",
89 "TRIANGLEM((0 0 1,1 1 2,2 0 3,0 0 1))",
90 "TRIANGLE((0 0 1 10,1 1 2 20,2 0 3 30,0 0 1 10))",
91 "POLYGONM((0 0 1,0 1 2,1 1 3,1 0 4,0 0 1))",
92 "POLYGON((0 0 1 10,0 1 2 20,1 1 3 30,1 0 4 40,0 0 1 10))",
93 "MULTIPOINTM(0 0 1,1 1 2,2 2 3)",
94 "MULTIPOINT(0 0 1 10,1 1 2 20,2 2 3 30)",
95 "MULTILINESTRINGM((0 0 1,1 1 2),(2 2 3,3 3 4))",
96 "MULTILINESTRING((0 0 1 10,1 1 2 20),(2 2 3 30,3 3 4 40))",
97 "MULTIPOLYGONM(((0 0 1,0 1 2,1 1 3,1 0 4,0 0 1)),((2 2 5,2 3 6,3 3 7,3 2 8,2 2 5)))",
98 "MULTIPOLYGON(((0 0 1 10,0 1 2 20,1 1 3 30,1 0 4 40,0 0 1 10)),((2 2 5 50,2 3 6 60,3 3 7 70,3 2 8 80,2 2 5 50)))",
99 "TINM(((0 0 1,0 1 2,1 0 3,0 0 1)),((0 0 1,1 0 3,1 1 4,0 0 1)))",
100 "TIN(((0 0 1 10,0 1 2 20,1 0 3 30,0 0 1 10)),((0 0 1 10,1 0 3 30,1 1 4 40,0 0 1 10)))",
101 "POLYHEDRALSURFACEM(((0 0 1,0 1 2,1 1 3,1 0 4,0 0 1)),((0 0 1,1 0 4,1 -1 5,0 -1 6,0 0 1)))",
102 "POLYHEDRALSURFACE(((0 0 1 10,0 1 2 20,1 1 3 30,1 0 4 40,0 0 1 10)),((0 0 1 10,1 0 4 40,1 -1 5 50,0 -1 6 60,0 0 1 10)))",
103 "GEOMETRYCOLLECTIONM(LINESTRINGM(-1 -1 3,2 19 25,-4 20 15),POLYGONM((0 0 10,2 19 25,-4 20 15,0 0 10)))",
104 "GEOMETRYCOLLECTION(LINESTRING(-1 -1 3 4,2 19 25 250,-4 20 15 150),POLYGON((0 0 10 100,2 19 25 250,-4 20 15 150,0 0 10 100)))",
108 for (i = 0; i < (
sizeof ewkt /
sizeof(
char *)); i++)
110 LWGEOM *geom_in, *geom_out;
119 fprintf(stderr,
"\nNull return from lwgeom_sfcgal_noop with wkt: %s\n", in_ewkt);
124 if (strcmp(expected_ewkt[i], out_ewkt))
125 fprintf(stderr,
"\nTest case %zu failed:\nExp:\t%s\nObt:\t%s\n", i, expected_ewkt[i], out_ewkt);
140 CU_pSuite suite = CU_add_suite(
"sfcgal", NULL, NULL);
static void test_sfcgal_noop(void)
LWGEOM * lwgeom_sfcgal_noop(const LWGEOM *geom_in)
void sfcgal_suite_setup(void)
#define PG_ADD_TEST(suite, testfunc)
#define ASSERT_STRING_EQUAL(o, e)
void lwgeom_free(LWGEOM *geom)
#define LW_PARSER_CHECK_NONE
char * lwgeom_to_ewkt(const LWGEOM *lwgeom)
Return an allocated string.
LWGEOM * lwgeom_from_wkt(const char *wkt, const char check)
This library is the generic geometry handling section of PostGIS.