PostGIS  2.4.9dev-r@@SVN_REVISION@@

◆ test_lwgeom_wrapx()

static void test_lwgeom_wrapx ( void  )
static

Definition at line 19 of file cu_wrapx.c.

References ASSERT_STRING_EQUAL, LW_PARSER_CHECK_NONE, lwfree(), lwgeom_free(), lwgeom_from_wkt(), lwgeom_to_ewkt(), lwgeom_wrapx(), and wrapx_suite_setup().

Referenced by wrapx_suite_setup().

20 {
21  LWGEOM *geom, *ret;
22  char *exp_wkt, *obt_wkt;
23 
24  geom = lwgeom_from_wkt(
25  "POLYGON EMPTY",
27  CU_ASSERT_FATAL(geom != NULL);
28  ret = lwgeom_wrapx(geom, 0, 20);
29  CU_ASSERT_FATAL(ret != NULL);
30  obt_wkt = lwgeom_to_ewkt(ret);
31  exp_wkt = "POLYGON EMPTY";
32  ASSERT_STRING_EQUAL(obt_wkt, exp_wkt);
33  lwfree(obt_wkt);
34  lwgeom_free(ret);
35  lwgeom_free(geom);
36 
37  geom = lwgeom_from_wkt(
38  "POINT(0 0)",
40  CU_ASSERT_FATAL(geom != NULL);
41  ret = lwgeom_wrapx(geom, 2, 10);
42  CU_ASSERT_FATAL(ret != NULL);
43  obt_wkt = lwgeom_to_ewkt(ret);
44  exp_wkt = "POINT(10 0)";
45  ASSERT_STRING_EQUAL(obt_wkt, exp_wkt);
46  lwfree(obt_wkt);
47  lwgeom_free(ret);
48  lwgeom_free(geom);
49 
50  geom = lwgeom_from_wkt(
51  "POINT(0 0)",
53  CU_ASSERT_FATAL(geom != NULL);
54  ret = lwgeom_wrapx(geom, 0, 20);
55  CU_ASSERT_FATAL(ret != NULL);
56  obt_wkt = lwgeom_to_ewkt(ret);
57  exp_wkt = "POINT(0 0)";
58  ASSERT_STRING_EQUAL(obt_wkt, exp_wkt);
59  lwfree(obt_wkt);
60  lwgeom_free(ret);
61  lwgeom_free(geom);
62 
63  geom = lwgeom_from_wkt(
64  "POINT(0 0)",
66  CU_ASSERT_FATAL(geom != NULL);
67  ret = lwgeom_wrapx(geom, 0, -20);
68  CU_ASSERT_FATAL(ret != NULL);
69  obt_wkt = lwgeom_to_ewkt(ret);
70  exp_wkt = "POINT(0 0)";
71  ASSERT_STRING_EQUAL(obt_wkt, exp_wkt);
72  lwfree(obt_wkt);
73  lwgeom_free(ret);
74  lwgeom_free(geom);
75 
76  geom = lwgeom_from_wkt(
77  "LINESTRING(0 0,10 0)",
79  CU_ASSERT_FATAL(geom != NULL);
80  ret = lwgeom_wrapx(geom, 8, -10);
81  CU_ASSERT_FATAL(ret != NULL);
82  obt_wkt = lwgeom_to_ewkt(ret);
83  exp_wkt = "MULTILINESTRING((0 0,8 0),(-2 0,0 0))";
84  ASSERT_STRING_EQUAL(obt_wkt, exp_wkt);
85  lwfree(obt_wkt);
86  lwgeom_free(ret);
87  lwgeom_free(geom);
88 
89  geom = lwgeom_from_wkt(
90  "MULTILINESTRING((-5 -2,0 0),(0 0,10 10))",
92  CU_ASSERT_FATAL(geom != NULL);
93  ret = lwgeom_wrapx(geom, 0, 20);
94  CU_ASSERT_FATAL(ret != NULL);
95  obt_wkt = lwgeom_to_ewkt(ret);
96  exp_wkt = "MULTILINESTRING((15 -2,20 0),(0 0,10 10))";
97  ASSERT_STRING_EQUAL(obt_wkt, exp_wkt);
98  lwfree(obt_wkt);
99  lwgeom_free(ret);
100  lwgeom_free(geom);
101 
102  geom = lwgeom_from_wkt(
103  "MULTIPOLYGON("
104  " ((0 0,10 0,10 10,0 10,0 0),(2 2,4 2,4 4,2 4,2 2)),"
105  " ((0 11,10 11,10 21,0 21,0 11),(2 13,4 13,4 15,2 15,2 13))"
106  ")",
108  CU_ASSERT_FATAL(geom != NULL);
109  ret = lwgeom_wrapx(geom, 2, 20);
110  CU_ASSERT_FATAL(ret != NULL);
111  obt_wkt = lwgeom_to_ewkt(ret);
112  exp_wkt = "GEOMETRYCOLLECTION("
113  "MULTIPOLYGON("
114  "((22 0,20 0,20 10,22 10,22 4,22 2,22 0)),"
115  "((2 10,10 10,10 0,2 0,2 2,4 2,4 4,2 4,2 10))"
116  "),"
117  "MULTIPOLYGON("
118  "((22 11,20 11,20 21,22 21,22 15,22 13,22 11)),"
119  "((2 21,10 21,10 11,2 11,2 13,4 13,4 15,2 15,2 21))"
120  ")"
121  ")";
122  ASSERT_STRING_EQUAL(obt_wkt, exp_wkt);
123  lwfree(obt_wkt);
124  lwgeom_free(ret);
125  lwgeom_free(geom);
126 
127  geom = lwgeom_from_wkt(
128  "GEOMETRYCOLLECTION("
129  " MULTILINESTRING((-5 -2,0 0),(0 0,10 10)),"
130  " POINT(-5 0),"
131  " POLYGON EMPTY"
132  ")",
134  CU_ASSERT_FATAL(geom != NULL);
135  ret = lwgeom_wrapx(geom, 0, 20);
136  CU_ASSERT_FATAL(ret != NULL);
137  obt_wkt = lwgeom_to_ewkt(ret);
138  exp_wkt = "GEOMETRYCOLLECTION("
139  "MULTILINESTRING((15 -2,20 0),(0 0,10 10)),"
140  "POINT(15 0),"
141  "POLYGON EMPTY"
142  ")";
143  ASSERT_STRING_EQUAL(obt_wkt, exp_wkt);
144  lwfree(obt_wkt);
145  lwgeom_free(ret);
146  lwgeom_free(geom);
147 
148 }
void lwfree(void *mem)
Definition: lwutil.c:244
#define ASSERT_STRING_EQUAL(o, e)
char * lwgeom_to_ewkt(const LWGEOM *lwgeom)
Return an alloced string.
Definition: lwgeom.c:518
void lwgeom_free(LWGEOM *geom)
Definition: lwgeom.c:1099
LWGEOM * lwgeom_wrapx(const LWGEOM *lwgeom, double cutx, double amount)
wrap geometry on given cut x value
Definition: lwgeom_wrapx.c:167
LWGEOM * lwgeom_from_wkt(const char *wkt, const char check)
Definition: lwin_wkt.c:904
#define LW_PARSER_CHECK_NONE
Definition: liblwgeom.h:2013
Here is the call graph for this function:
Here is the caller graph for this function: