|
@@ -157,6 +157,58 @@ public class GeoJSONShapeParserTests extends ElasticsearchTestCase {
|
|
|
assertGeometryEquals(jtsGeom(expected), polygonGeoJson);
|
|
|
}
|
|
|
|
|
|
+ @Test
|
|
|
+ public void testParse_invalidPoint() throws IOException {
|
|
|
+ // test case 1: create an invalid point object with multipoint data format
|
|
|
+ String invalidPoint1 = XContentFactory.jsonBuilder().startObject().field("type", "point")
|
|
|
+ .startArray("coordinates")
|
|
|
+ .startArray().value(-74.011).value(40.753).endArray()
|
|
|
+ .endArray()
|
|
|
+ .endObject().string();
|
|
|
+ XContentParser parser = JsonXContent.jsonXContent.createParser(invalidPoint1);
|
|
|
+ parser.nextToken();
|
|
|
+ ElasticsearchGeoAssertions.assertValidException(parser, ElasticsearchParseException.class);
|
|
|
+
|
|
|
+ // test case 2: create an invalid point object with an empty number of coordinates
|
|
|
+ String invalidPoint2 = XContentFactory.jsonBuilder().startObject().field("type", "point")
|
|
|
+ .startArray("coordinates")
|
|
|
+ .endArray()
|
|
|
+ .endObject().string();
|
|
|
+ parser = JsonXContent.jsonXContent.createParser(invalidPoint2);
|
|
|
+ parser.nextToken();
|
|
|
+ ElasticsearchGeoAssertions.assertValidException(parser, ElasticsearchParseException.class);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testParse_invalidMultipoint() throws IOException {
|
|
|
+ // test case 1: create an invalid multipoint object with single coordinate
|
|
|
+ String invalidMultipoint1 = XContentFactory.jsonBuilder().startObject().field("type", "multipoint")
|
|
|
+ .startArray("coordinates").value(-74.011).value(40.753).endArray()
|
|
|
+ .endObject().string();
|
|
|
+ XContentParser parser = JsonXContent.jsonXContent.createParser(invalidMultipoint1);
|
|
|
+ parser.nextToken();
|
|
|
+ ElasticsearchGeoAssertions.assertValidException(parser, ElasticsearchParseException.class);
|
|
|
+
|
|
|
+ // test case 2: create an invalid multipoint object with null coordinate
|
|
|
+ String invalidMultipoint2 = XContentFactory.jsonBuilder().startObject().field("type", "multipoint")
|
|
|
+ .startArray("coordinates")
|
|
|
+ .endArray()
|
|
|
+ .endObject().string();
|
|
|
+ parser = JsonXContent.jsonXContent.createParser(invalidMultipoint2);
|
|
|
+ parser.nextToken();
|
|
|
+ ElasticsearchGeoAssertions.assertValidException(parser, ElasticsearchParseException.class);
|
|
|
+
|
|
|
+ // test case 3: create a valid formatted multipoint object with invalid number (0) of coordinates
|
|
|
+ String invalidMultipoint3 = XContentFactory.jsonBuilder().startObject().field("type", "multipoint")
|
|
|
+ .startArray("coordinates")
|
|
|
+ .startArray().endArray()
|
|
|
+ .endArray()
|
|
|
+ .endObject().string();
|
|
|
+ parser = JsonXContent.jsonXContent.createParser(invalidMultipoint3);
|
|
|
+ parser.nextToken();
|
|
|
+ ElasticsearchGeoAssertions.assertValidException(parser, ElasticsearchParseException.class);
|
|
|
+ }
|
|
|
+
|
|
|
@Test
|
|
|
public void testParse_invalidPolygon() throws IOException {
|
|
|
/**
|
|
@@ -225,6 +277,15 @@ public class GeoJSONShapeParserTests extends ElasticsearchTestCase {
|
|
|
parser = JsonXContent.jsonXContent.createParser(invalidPoly5);
|
|
|
parser.nextToken();
|
|
|
ElasticsearchGeoAssertions.assertValidException(parser, ElasticsearchIllegalArgumentException.class);
|
|
|
+
|
|
|
+ // test case 6: create an invalid polygon with 0 LinearRings
|
|
|
+ String invalidPoly6 = XContentFactory.jsonBuilder().startObject().field("type", "polygon")
|
|
|
+ .startArray("coordinates").endArray()
|
|
|
+ .endObject().string();
|
|
|
+
|
|
|
+ parser = JsonXContent.jsonXContent.createParser(invalidPoly6);
|
|
|
+ parser.nextToken();
|
|
|
+ ElasticsearchGeoAssertions.assertValidException(parser, ElasticsearchParseException.class);
|
|
|
}
|
|
|
|
|
|
@Test
|