PostGIS 3.0.6dev-r@@SVN_REVISION@@
Loading...
Searching...
No Matches

◆ test_lwgeom_remove_repeated_points()

static void test_lwgeom_remove_repeated_points ( void  )
static

Definition at line 1158 of file cu_algorithm.c.

1159{
1160 LWGEOM *g;
1161 char *ewkt;
1162 int modified = LW_FALSE;
1163
1164 g = lwgeom_from_wkt("MULTIPOINT(0 0, 10 0, 10 10, 10 10, 0 10, 0 10, 0 10, 0 0, 0 0, 0 0, 5 5, 0 0, 5 5)", LW_PARSER_CHECK_NONE);
1166 ASSERT_INT_EQUAL(modified, LW_TRUE);
1167 ewkt = lwgeom_to_ewkt(g);
1168 ASSERT_STRING_EQUAL(ewkt, "MULTIPOINT(0 0,10 0,10 10,0 10,5 5)");
1169 lwgeom_free(g);
1170 lwfree(ewkt);
1171
1172 g = lwgeom_from_wkt("LINESTRING(1612830.15445 4841287.12672,1612830.15824 4841287.12674,1612829.98813 4841274.56198)", LW_PARSER_CHECK_NONE);
1173 modified = lwgeom_remove_repeated_points_in_place(g, 0.01);
1174 ASSERT_INT_EQUAL(modified, LW_TRUE);
1175 ewkt = lwgeom_to_ewkt(g);
1176 ASSERT_STRING_EQUAL(ewkt, "LINESTRING(1612830.15445 4841287.12672,1612829.98813 4841274.56198)");
1177 lwgeom_free(g);
1178 lwfree(ewkt);
1179
1180 g = lwgeom_from_wkt("MULTIPOINT(0 0,10 0,10 10,10 10,0 10,0 10,0 10,0 0,0 0,0 0,5 5,5 5,5 8,8 8,8 8,8 8,8 5,8 5,5 5,5 5,5 5,5 5,5 5,50 50,50 50,50 50,50 60,50 60,50 60,60 60,60 50,60 50,50 50,55 55,55 58,58 58,58 55,58 55,55 55)", LW_PARSER_CHECK_NONE);
1182 ASSERT_INT_EQUAL(modified, LW_TRUE);
1183 ewkt = lwgeom_to_ewkt(g);
1185 ewkt, "MULTIPOINT(0 0,10 0,10 10,0 10,5 5,5 8,8 8,8 5,50 50,50 60,60 60,60 50,55 55,55 58,58 58,58 55)");
1186 lwgeom_free(g);
1187 lwfree(ewkt);
1188
1189 g = lwgeom_from_wkt("POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))", LW_PARSER_CHECK_NONE);
1190 modified = lwgeom_remove_repeated_points_in_place(g, 10000);
1191 ASSERT_INT_EQUAL(modified, LW_TRUE);
1192 ewkt = lwgeom_to_ewkt(g);
1193 ASSERT_STRING_EQUAL(ewkt, "POLYGON((0 0,1 1,1 0,0 0))");
1194 lwgeom_free(g);
1195 lwfree(ewkt);
1196
1197 // Test the return value (modified or not)
1198 g = lwgeom_from_wkt("POINT(0 0)", LW_PARSER_CHECK_NONE);
1199 modified = lwgeom_remove_repeated_points_in_place(g, 10000);
1200 ASSERT_INT_EQUAL(modified, LW_FALSE);
1201 lwgeom_free(g);
1202
1203 g = lwgeom_from_wkt("TRIANGLE((0 0, 5 0, 3 3, 0 0))", LW_PARSER_CHECK_NONE);
1204 modified = lwgeom_remove_repeated_points_in_place(g, 10000);
1205 ASSERT_INT_EQUAL(modified, LW_FALSE);
1206 lwgeom_free(g);
1207
1208 g = lwgeom_from_wkt("POLYGON((0 0,0 1,1 1,1 0,0 0))", LW_PARSER_CHECK_NONE);
1209 modified = lwgeom_remove_repeated_points_in_place(g, 0.1);
1210 ASSERT_INT_EQUAL(modified, LW_FALSE);
1211 ewkt = lwgeom_to_ewkt(g);
1212 ASSERT_STRING_EQUAL(ewkt, "POLYGON((0 0,0 1,1 1,1 0,0 0))");
1213 lwgeom_free(g);
1214 lwfree(ewkt);
1215
1216 g = lwgeom_from_wkt("POLYGON((0 0,0 1,1 1,1 0,0 0), (0.4 0.4, 0.4 0.4, 0.4 0.5, 0.5 0.5, 0.5 0.4, 0.4 0.4))",
1218 modified = lwgeom_remove_repeated_points_in_place(g, 0.1);
1219 ASSERT_INT_EQUAL(modified, LW_TRUE);
1220 ewkt = lwgeom_to_ewkt(g);
1221 ASSERT_STRING_EQUAL(ewkt, "POLYGON((0 0,0 1,1 1,1 0,0 0),(0.4 0.4,0.5 0.5,0.5 0.4,0.4 0.4))");
1222 lwgeom_free(g);
1223 lwfree(ewkt);
1224
1225 g = lwgeom_from_wkt("GEOMETRYCOLLECTION(POINT(2 0),POLYGON((0 0,1 0,1 1,0 1,0 0)))", LW_PARSER_CHECK_NONE);
1226 modified = lwgeom_remove_repeated_points_in_place(g, 0.1);
1227 ASSERT_INT_EQUAL(modified, LW_FALSE);
1228 ewkt = lwgeom_to_ewkt(g);
1229 ASSERT_STRING_EQUAL(ewkt, "GEOMETRYCOLLECTION(POINT(2 0),POLYGON((0 0,1 0,1 1,0 1,0 0)))");
1230 lwgeom_free(g);
1231 lwfree(ewkt);
1232
1233 g = lwgeom_from_wkt("GEOMETRYCOLLECTION(POINT(2 0),POLYGON((0 0, 0 1, 1 1, 1 0, 0 0)))", LW_PARSER_CHECK_NONE);
1234 modified = lwgeom_remove_repeated_points_in_place(g, 10000);
1235 ASSERT_INT_EQUAL(modified, LW_TRUE);
1236 ewkt = lwgeom_to_ewkt(g);
1237 ASSERT_STRING_EQUAL(ewkt, "GEOMETRYCOLLECTION(POINT(2 0),POLYGON((0 0,1 1,1 0,0 0)))");
1238 lwgeom_free(g);
1239 lwfree(ewkt);
1240
1241 g = lwgeom_from_wkt("GEOMETRYCOLLECTION(POLYGON((0 0, 0 1, 1 1, 1 0, 0 0)),POINT(2 0))", LW_PARSER_CHECK_NONE);
1242 modified = lwgeom_remove_repeated_points_in_place(g, 10000);
1243 ASSERT_INT_EQUAL(modified, LW_TRUE);
1244 ewkt = lwgeom_to_ewkt(g);
1245 ASSERT_STRING_EQUAL(ewkt, "GEOMETRYCOLLECTION(POLYGON((0 0,1 1,1 0,0 0)),POINT(2 0))");
1246 lwgeom_free(g);
1247 lwfree(ewkt);
1248}
#define ASSERT_INT_EQUAL(o, e)
#define ASSERT_STRING_EQUAL(o, e)
#define LW_FALSE
Definition liblwgeom.h:108
void lwgeom_free(LWGEOM *geom)
Definition lwgeom.c:1138
#define LW_PARSER_CHECK_NONE
Definition liblwgeom.h:2060
int lwgeom_remove_repeated_points_in_place(LWGEOM *in, double tolerance)
Definition lwgeom.c:1554
char * lwgeom_to_ewkt(const LWGEOM *lwgeom)
Return an alloced string.
Definition lwgeom.c:547
void lwfree(void *mem)
Definition lwutil.c:242
#define LW_TRUE
Return types for functions with status returns.
Definition liblwgeom.h:107
LWGEOM * lwgeom_from_wkt(const char *wkt, const char check)
Definition lwin_wkt.c:905

References ASSERT_INT_EQUAL, ASSERT_STRING_EQUAL, LW_FALSE, LW_PARSER_CHECK_NONE, LW_TRUE, lwfree(), lwgeom_free(), lwgeom_from_wkt(), lwgeom_remove_repeated_points_in_place(), and lwgeom_to_ewkt().

Referenced by algorithms_suite_setup().

Here is the call graph for this function:
Here is the caller graph for this function: