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

◆ test_isclosed()

static void test_isclosed ( void  )
static

Definition at line 1021 of file cu_algorithm.c.

1022{
1023 LWGEOM *geom;
1024
1025 /* LINESTRING */
1026
1027 /* Not Closed on 2D */
1028 geom = lwgeom_from_wkt("LINESTRING(1 2,3 4)", LW_PARSER_CHECK_NONE);
1029 CU_ASSERT(!lwline_is_closed((LWLINE *) geom));
1030 lwgeom_free(geom);
1031
1032 /* Closed on 2D */
1033 geom = lwgeom_from_wkt("LINESTRING(1 2,3 4,1 2)", LW_PARSER_CHECK_NONE);
1034 CU_ASSERT(lwline_is_closed((LWLINE *) geom));
1035 lwgeom_free(geom);
1036
1037 /* Not closed on 3D */
1038 geom = lwgeom_from_wkt("LINESTRING(1 2 3,4 5 6)", LW_PARSER_CHECK_NONE);
1039 CU_ASSERT(!lwline_is_closed((LWLINE *) geom));
1040 lwgeom_free(geom);
1041
1042 /* Closed on 3D */
1043 geom = lwgeom_from_wkt("LINESTRING(1 2 3,4 5 6,1 2 3)", LW_PARSER_CHECK_NONE);
1044 CU_ASSERT(lwline_is_closed((LWLINE *) geom));
1045 lwgeom_free(geom);
1046
1047 /* Closed on 4D, even if M is not the same */
1048 geom = lwgeom_from_wkt("LINESTRING(1 2 3 4,5 6 7 8,1 2 3 0)", LW_PARSER_CHECK_NONE);
1049 CU_ASSERT(lwline_is_closed((LWLINE *) geom));
1050 lwgeom_free(geom);
1051
1052 /* CIRCULARSTRING */
1053
1054 /* Not Closed on 2D */
1055 geom = lwgeom_from_wkt("CIRCULARSTRING(1 2,3 4,5 6)", LW_PARSER_CHECK_NONE);
1056 CU_ASSERT(!lwcircstring_is_closed((LWCIRCSTRING *) geom));
1057 lwgeom_free(geom);
1058
1059 /* Closed on 2D */
1060 geom = lwgeom_from_wkt("CIRCULARSTRING(1 2,3 4,1 2)", LW_PARSER_CHECK_NONE);
1061 CU_ASSERT(lwcircstring_is_closed((LWCIRCSTRING *) geom));
1062 lwgeom_free(geom);
1063
1064 /* Not closed on 3D */
1065 geom = lwgeom_from_wkt("CIRCULARSTRING(1 2 3,4 5 6,7 8 9)", LW_PARSER_CHECK_NONE);
1066 CU_ASSERT(!lwcircstring_is_closed((LWCIRCSTRING *) geom));
1067 lwgeom_free(geom);
1068
1069 /* Closed on 3D */
1070 geom = lwgeom_from_wkt("CIRCULARSTRING(1 2 3,4 5 6,1 2 3)", LW_PARSER_CHECK_NONE);
1071 CU_ASSERT(lwcircstring_is_closed((LWCIRCSTRING *) geom));
1072 lwgeom_free(geom);
1073
1074 /* Closed on 4D, even if M is not the same */
1075 geom = lwgeom_from_wkt("CIRCULARSTRING(1 2 3 4,5 6 7 8,1 2 3 0)", LW_PARSER_CHECK_NONE);
1076 CU_ASSERT(lwcircstring_is_closed((LWCIRCSTRING *) geom));
1077 lwgeom_free(geom);
1078
1079
1080 /* COMPOUNDCURVE */
1081
1082 /* Not Closed on 2D */
1083 geom = lwgeom_from_wkt("COMPOUNDCURVE(CIRCULARSTRING(1 2,3 4,1 2),(1 2,7 8,5 6))", LW_PARSER_CHECK_NONE);
1084 CU_ASSERT(!lwcompound_is_closed((LWCOMPOUND *) geom));
1085 lwgeom_free(geom);
1086
1087 geom = lwgeom_from_wkt("COMPOUNDCURVE((1 2,3 4,1 2),CIRCULARSTRING(1 2,7 8,5 6))", LW_PARSER_CHECK_NONE);
1088 CU_ASSERT(!lwcompound_is_closed((LWCOMPOUND *) geom));
1089 lwgeom_free(geom);
1090
1091 /* Closed on 2D */
1092 geom = lwgeom_from_wkt("COMPOUNDCURVE(CIRCULARSTRING(1 2,3 4,5 6), (5 6,7 8,1 2))", LW_PARSER_CHECK_NONE);
1093 CU_ASSERT(lwcompound_is_closed((LWCOMPOUND *) geom));
1094 lwgeom_free(geom);
1095
1096 geom = lwgeom_from_wkt("COMPOUNDCURVE((1 2,3 4,5 6),CIRCULARSTRING(5 6,7 8,1 2))", LW_PARSER_CHECK_NONE);
1097 CU_ASSERT(lwcompound_is_closed((LWCOMPOUND *) geom));
1098 lwgeom_free(geom);
1099
1100 /* Not Closed on 3D */
1101 geom = lwgeom_from_wkt("COMPOUNDCURVE(CIRCULARSTRING(1 2 3,4 5 6,1 2 3),(1 2 3,7 8 9,10 11 12))", LW_PARSER_CHECK_NONE);
1102 CU_ASSERT(!lwcompound_is_closed((LWCOMPOUND *) geom));
1103 lwgeom_free(geom);
1104
1105 geom = lwgeom_from_wkt("COMPOUNDCURVE((1 2 3,4 5 6,1 2 3),CIRCULARSTRING(1 2 3,7 8 9,10 11 12))", LW_PARSER_CHECK_NONE);
1106 CU_ASSERT(!lwcompound_is_closed((LWCOMPOUND *) geom));
1107 lwgeom_free(geom);
1108
1109 /* Closed on 3D */
1110 geom = lwgeom_from_wkt("COMPOUNDCURVE(CIRCULARSTRING(1 2 3,4 5 6,7 8 9),(7 8 9,10 11 12,1 2 3))", LW_PARSER_CHECK_NONE);
1111 CU_ASSERT(lwcompound_is_closed((LWCOMPOUND *) geom));
1112 lwgeom_free(geom);
1113
1114 geom = lwgeom_from_wkt("COMPOUNDCURVE((1 2 3,4 5 6,7 8 9),CIRCULARSTRING(7 8 9,10 11 12,1 2 3))", LW_PARSER_CHECK_NONE);
1115 CU_ASSERT(lwcompound_is_closed((LWCOMPOUND *) geom));
1116 lwgeom_free(geom);
1117
1118 /* Closed on 4D, even if M is not the same */
1119 geom = lwgeom_from_wkt("COMPOUNDCURVE((1 2 3 4,5 6 7 8,9 10 11 12),CIRCULARSTRING(9 10 11 12,13 14 15 16,1 2 3 0))", LW_PARSER_CHECK_NONE);
1120 CU_ASSERT(lwcompound_is_closed((LWCOMPOUND *) geom));
1121 lwgeom_free(geom);
1122}
void lwgeom_free(LWGEOM *geom)
Definition lwgeom.c:1246
#define LW_PARSER_CHECK_NONE
Definition liblwgeom.h:2149
LWGEOM * lwgeom_from_wkt(const char *wkt, const char check)
Definition lwin_wkt.c:940
int lwcircstring_is_closed(const LWCIRCSTRING *curve)
int lwline_is_closed(const LWLINE *line)
Definition lwline.c:455
int lwcompound_is_closed(const LWCOMPOUND *curve)
Definition lwcompound.c:48

References LW_PARSER_CHECK_NONE, lwcircstring_is_closed(), lwcompound_is_closed(), lwgeom_free(), lwgeom_from_wkt(), and lwline_is_closed().

Referenced by algorithms_suite_setup().

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