static void do_gml2_test(char * in, char * out, char * srs, int precision)
{
- LWGEOM *g, *h;
+ LWGEOM *g;
+ char *h;
g = lwgeom_from_ewkt(in, PARSER_CHECK_NONE);
h = lwgeom_to_gml2(lwgeom_serialize(g), srs, precision);
- if (strcmp(lwgeom_to_gml2(lwgeom_serialize(g), srs, precision), out))
- fprintf(stderr, "\nIn: %s\nOut: %s\nTheo: %s\n",
- in,
- lwgeom_to_gml2(lwgeom_serialize(g), srs, precision),
- out);
+ if (strcmp(h, out))
+ fprintf(stderr, "\nIn: %s\nOut: %s\nTheo: %s\n", in, h, out);
CU_ASSERT_STRING_EQUAL(h, out);
static void do_gml3_test(char * in, char * out, char * srs, int precision, int is_geodetic)
{
- LWGEOM *g, *h;
+ LWGEOM *g;
+ char *h;
g = lwgeom_from_ewkt(in, PARSER_CHECK_NONE);
h = lwgeom_to_gml3(lwgeom_serialize(g), srs, precision, is_geodetic);
- if (strcmp(
- lwgeom_to_gml3(lwgeom_serialize(g), srs, precision, is_geodetic),
- out))
- fprintf(stderr, "\nIn: %s\nOut: %s\nTheo: %s\n",
- in,
- lwgeom_to_gml3(lwgeom_serialize(g),
- srs, precision, is_geodetic),
- out);
+ if (strcmp(h, out))
+ fprintf(stderr, "\nIn: %s\nOut: %s\nTheo: %s\n", in, h, out);
CU_ASSERT_STRING_EQUAL(h, out);
static void do_gml2_unsupported(char * in, char * out)
{
- LWGEOM *g, *h;
+ LWGEOM *g;
+ char *h;
g = lwgeom_from_ewkt(in, PARSER_CHECK_NONE);
-
h = lwgeom_to_gml2(lwgeom_serialize(g), NULL, 0);
if (strcmp(cu_error_msg, out))
static void do_gml3_unsupported(char * in, char * out)
{
- LWGEOM *g, *h;
+ LWGEOM *g;
+ char *h;
g = lwgeom_from_ewkt(in, PARSER_CHECK_NONE);
h = lwgeom_to_gml3(lwgeom_serialize(g), NULL, 0, 0);
"EPSG:4326", 0, 0);
+ /* GML2 MultiPoint with SRID */
+ do_gml2_test(
+ "MULTIPOINT(0 1,2 3)",
+ "<gml:MultiPoint srsName=\"EPSG:4326\"><gml:pointMember><gml:Point><gml:coordinates>0,1</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>2,3</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint>",
+ "EPSG:4326", 0);
+
+ /* GML3 MultiPoint with SRID */
+ do_gml3_test(
+ "MULTIPOINT(0 1,2 3)",
+ "<gml:MultiPoint srsName=\"EPSG:4326\"><gml:pointMember><gml:Point><gml:pos srsDimension=\"2\">0 1</gml:pos></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:pos srsDimension=\"2\">2 3</gml:pos></gml:Point></gml:pointMember></gml:MultiPoint>",
+ "EPSG:4326", 0, 0);
+
+
/* GML2 Multiline with SRID */
do_gml2_test(
"MULTILINESTRING((0 1,2 3,4 5),(6 7,8 9,10 11))",
NULL, 0, 0);
+ /* GML2 MultiPoint */
+ do_gml2_test(
+ "MULTIPOINT(0 1,2 3)",
+ "<gml:MultiPoint><gml:pointMember><gml:Point><gml:coordinates>0,1</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>2,3</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint>",
+ NULL, 0);
+
+ /* GML3 MultiPoint */
+ do_gml3_test(
+ "MULTIPOINT(0 1,2 3)",
+ "<gml:MultiPoint><gml:pointMember><gml:Point><gml:pos srsDimension=\"2\">0 1</gml:pos></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:pos srsDimension=\"2\">2 3</gml:pos></gml:Point></gml:pointMember></gml:MultiPoint>",
+ NULL, 0, 0);
+
+
/* GML2 Multiline */
do_gml2_test(
"MULTILINESTRING((0 1,2 3,4 5),(6 7,8 9,10 11))",
h = lwgeom_to_kml2(lwgeom_serialize(g), 0);
if (strcmp(cu_error_msg, out))
- fprintf(stderr, "\nGML 2 - In: %s\nOut: %s\nTheo: %s\n",
+ fprintf(stderr, "\nIn: %s\nOut: %s\nTheo: %s\n",
in, cu_error_msg, out);
CU_ASSERT_STRING_EQUAL(out, cu_error_msg);
"<Polygon><outerBoundaryIs><LinearRing><coordinates>0,1 2,3 4,5 0,1</coordinates></LinearRing></outerBoundaryIs><innerBoundaryIs><LinearRing><coordinates>6,7 8,9 10,11 6,7</coordinates></LinearRing></innerBoundaryIs></Polygon>",
0);
- /* Multiline */
+ /* MultiPoint */
+ do_kml_test(
+ "MULTIPOINT(0 1,2 3)",
+ "<MultiGeometry><Point><coordinates>0,1</coordinates></Point><Point><coordinates>2,3</coordinates></Point></MultiGeometry>",
+ 0);
+
+ /* MultiLine */
do_kml_test(
"MULTILINESTRING((0 1,2 3,4 5),(6 7,8 9,10 11))",
"<MultiGeometry><LineString><coordinates>0,1 2,3 4,5</coordinates></LineString><LineString><coordinates>6,7 8,9 10,11</coordinates></LineString></MultiGeometry>",