@@ -145,6 +145,7 @@ public void testParseMultiDimensionShapes() throws IOException {
145
145
XContentParser parser = createParser (pointGeoJson );
146
146
parser .nextToken ();
147
147
ElasticsearchGeoAssertions .assertValidException (parser , ElasticsearchParseException .class );
148
+ assertNull (parser .nextToken ());
148
149
149
150
// multi dimension linestring
150
151
XContentBuilder lineGeoJson = XContentFactory .jsonBuilder ()
@@ -159,6 +160,7 @@ public void testParseMultiDimensionShapes() throws IOException {
159
160
parser = createParser (lineGeoJson );
160
161
parser .nextToken ();
161
162
ElasticsearchGeoAssertions .assertValidException (parser , ElasticsearchParseException .class );
163
+ assertNull (parser .nextToken ());
162
164
}
163
165
164
166
@ Override
@@ -196,6 +198,7 @@ public void testParseEnvelope() throws IOException {
196
198
XContentParser parser = createParser (multilinesGeoJson );
197
199
parser .nextToken ();
198
200
ElasticsearchGeoAssertions .assertValidException (parser , ElasticsearchParseException .class );
201
+ assertNull (parser .nextToken ());
199
202
200
203
// test #4: "envelope" with empty coordinates
201
204
multilinesGeoJson = XContentFactory .jsonBuilder ().startObject ().field ("type" , "envelope" )
@@ -205,6 +208,7 @@ public void testParseEnvelope() throws IOException {
205
208
parser = createParser (multilinesGeoJson );
206
209
parser .nextToken ();
207
210
ElasticsearchGeoAssertions .assertValidException (parser , ElasticsearchParseException .class );
211
+ assertNull (parser .nextToken ());
208
212
}
209
213
210
214
@ Override
@@ -288,6 +292,7 @@ public void testInvalidDimensionalPolygon() throws IOException {
288
292
XContentParser parser = createParser (polygonGeoJson );
289
293
parser .nextToken ();
290
294
ElasticsearchGeoAssertions .assertValidException (parser , ElasticsearchParseException .class );
295
+ assertNull (parser .nextToken ());
291
296
}
292
297
293
298
public void testParseInvalidPoint () throws IOException {
@@ -302,6 +307,7 @@ public void testParseInvalidPoint() throws IOException {
302
307
XContentParser parser = createParser (invalidPoint1 );
303
308
parser .nextToken ();
304
309
ElasticsearchGeoAssertions .assertValidException (parser , ElasticsearchParseException .class );
310
+ assertNull (parser .nextToken ());
305
311
306
312
// test case 2: create an invalid point object with an empty number of coordinates
307
313
XContentBuilder invalidPoint2 = XContentFactory .jsonBuilder ()
@@ -313,6 +319,7 @@ public void testParseInvalidPoint() throws IOException {
313
319
parser = createParser (invalidPoint2 );
314
320
parser .nextToken ();
315
321
ElasticsearchGeoAssertions .assertValidException (parser , ElasticsearchParseException .class );
322
+ assertNull (parser .nextToken ());
316
323
}
317
324
318
325
public void testParseInvalidMultipoint () throws IOException {
@@ -325,6 +332,7 @@ public void testParseInvalidMultipoint() throws IOException {
325
332
XContentParser parser = createParser (invalidMultipoint1 );
326
333
parser .nextToken ();
327
334
ElasticsearchGeoAssertions .assertValidException (parser , ElasticsearchParseException .class );
335
+ assertNull (parser .nextToken ());
328
336
329
337
// test case 2: create an invalid multipoint object with null coordinate
330
338
XContentBuilder invalidMultipoint2 = XContentFactory .jsonBuilder ()
@@ -336,6 +344,7 @@ public void testParseInvalidMultipoint() throws IOException {
336
344
parser = createParser (invalidMultipoint2 );
337
345
parser .nextToken ();
338
346
ElasticsearchGeoAssertions .assertValidException (parser , ElasticsearchParseException .class );
347
+ assertNull (parser .nextToken ());
339
348
340
349
// test case 3: create a valid formatted multipoint object with invalid number (0) of coordinates
341
350
XContentBuilder invalidMultipoint3 = XContentFactory .jsonBuilder ()
@@ -348,6 +357,7 @@ public void testParseInvalidMultipoint() throws IOException {
348
357
parser = createParser (invalidMultipoint3 );
349
358
parser .nextToken ();
350
359
ElasticsearchGeoAssertions .assertValidException (parser , ElasticsearchParseException .class );
360
+ assertNull (parser .nextToken ());
351
361
}
352
362
353
363
public void testParseInvalidMultiPolygon () throws IOException {
@@ -383,6 +393,7 @@ public void testParseInvalidMultiPolygon() throws IOException {
383
393
XContentParser parser = createParser (JsonXContent .jsonXContent , multiPolygonGeoJson );
384
394
parser .nextToken ();
385
395
ElasticsearchGeoAssertions .assertValidException (parser , InvalidShapeException .class );
396
+ assertNull (parser .nextToken ());
386
397
}
387
398
388
399
public void testParseInvalidDimensionalMultiPolygon () throws IOException {
@@ -422,6 +433,7 @@ public void testParseInvalidDimensionalMultiPolygon() throws IOException {
422
433
XContentParser parser = createParser (JsonXContent .jsonXContent , multiPolygonGeoJson );
423
434
parser .nextToken ();
424
435
ElasticsearchGeoAssertions .assertValidException (parser , ElasticsearchParseException .class );
436
+ assertNull (parser .nextToken ());
425
437
}
426
438
427
439
@@ -630,6 +642,7 @@ public void testParseInvalidPolygon() throws IOException {
630
642
XContentParser parser = createParser (JsonXContent .jsonXContent , invalidPoly );
631
643
parser .nextToken ();
632
644
ElasticsearchGeoAssertions .assertValidException (parser , ElasticsearchParseException .class );
645
+ assertNull (parser .nextToken ());
633
646
634
647
// test case 2: create an invalid polygon with only 1 point
635
648
invalidPoly = Strings .toString (XContentFactory .jsonBuilder ().startObject ().field ("type" , "polygon" )
@@ -643,6 +656,7 @@ public void testParseInvalidPolygon() throws IOException {
643
656
parser = createParser (JsonXContent .jsonXContent , invalidPoly );
644
657
parser .nextToken ();
645
658
ElasticsearchGeoAssertions .assertValidException (parser , ElasticsearchParseException .class );
659
+ assertNull (parser .nextToken ());
646
660
647
661
// test case 3: create an invalid polygon with 0 points
648
662
invalidPoly = Strings .toString (XContentFactory .jsonBuilder ().startObject ().field ("type" , "polygon" )
@@ -656,6 +670,7 @@ public void testParseInvalidPolygon() throws IOException {
656
670
parser = createParser (JsonXContent .jsonXContent , invalidPoly );
657
671
parser .nextToken ();
658
672
ElasticsearchGeoAssertions .assertValidException (parser , ElasticsearchParseException .class );
673
+ assertNull (parser .nextToken ());
659
674
660
675
// test case 4: create an invalid polygon with null value points
661
676
invalidPoly = Strings .toString (XContentFactory .jsonBuilder ().startObject ().field ("type" , "polygon" )
@@ -669,6 +684,7 @@ public void testParseInvalidPolygon() throws IOException {
669
684
parser = createParser (JsonXContent .jsonXContent , invalidPoly );
670
685
parser .nextToken ();
671
686
ElasticsearchGeoAssertions .assertValidException (parser , IllegalArgumentException .class );
687
+ assertNull (parser .nextToken ());
672
688
673
689
// test case 5: create an invalid polygon with 1 invalid LinearRing
674
690
invalidPoly = Strings .toString (XContentFactory .jsonBuilder ().startObject ().field ("type" , "polygon" )
@@ -680,6 +696,7 @@ public void testParseInvalidPolygon() throws IOException {
680
696
parser = createParser (JsonXContent .jsonXContent , invalidPoly );
681
697
parser .nextToken ();
682
698
ElasticsearchGeoAssertions .assertValidException (parser , IllegalArgumentException .class );
699
+ assertNull (parser .nextToken ());
683
700
684
701
// test case 6: create an invalid polygon with 0 LinearRings
685
702
invalidPoly = Strings .toString (XContentFactory .jsonBuilder ().startObject ().field ("type" , "polygon" )
@@ -689,6 +706,7 @@ public void testParseInvalidPolygon() throws IOException {
689
706
parser = createParser (JsonXContent .jsonXContent , invalidPoly );
690
707
parser .nextToken ();
691
708
ElasticsearchGeoAssertions .assertValidException (parser , ElasticsearchParseException .class );
709
+ assertNull (parser .nextToken ());
692
710
693
711
// test case 7: create an invalid polygon with 0 LinearRings
694
712
invalidPoly = Strings .toString (XContentFactory .jsonBuilder ().startObject ().field ("type" , "polygon" )
@@ -700,6 +718,7 @@ public void testParseInvalidPolygon() throws IOException {
700
718
parser = createParser (JsonXContent .jsonXContent , invalidPoly );
701
719
parser .nextToken ();
702
720
ElasticsearchGeoAssertions .assertValidException (parser , ElasticsearchParseException .class );
721
+ assertNull (parser .nextToken ());
703
722
}
704
723
705
724
public void testParsePolygonWithHole () throws IOException {
@@ -767,6 +786,7 @@ public void testParseSelfCrossingPolygon() throws IOException {
767
786
XContentParser parser = createParser (JsonXContent .jsonXContent , polygonGeoJson );
768
787
parser .nextToken ();
769
788
ElasticsearchGeoAssertions .assertValidException (parser , InvalidShapeException .class );
789
+ assertNull (parser .nextToken ());
770
790
}
771
791
772
792
@ Override
@@ -1131,4 +1151,30 @@ public void testParseOrientationOption() throws IOException {
1131
1151
1132
1152
ElasticsearchGeoAssertions .assertMultiPolygon (shape );
1133
1153
}
1154
+
1155
+ public void testParseInvalidShapes () throws IOException {
1156
+ // single dimensions point
1157
+ XContentBuilder tooLittlePointGeoJson = XContentFactory .jsonBuilder ()
1158
+ .startObject ()
1159
+ .field ("type" , "Point" )
1160
+ .startArray ("coordinates" ).value (10.0 ).endArray ()
1161
+ .endObject ();
1162
+
1163
+ XContentParser parser = createParser (tooLittlePointGeoJson );
1164
+ parser .nextToken ();
1165
+ ElasticsearchGeoAssertions .assertValidException (parser , ElasticsearchParseException .class );
1166
+ assertNull (parser .nextToken ());
1167
+
1168
+ // zero dimensions point
1169
+ XContentBuilder emptyPointGeoJson = XContentFactory .jsonBuilder ()
1170
+ .startObject ()
1171
+ .field ("type" , "Point" )
1172
+ .startObject ("coordinates" ).field ("foo" , "bar" ).endObject ()
1173
+ .endObject ();
1174
+
1175
+ parser = createParser (emptyPointGeoJson );
1176
+ parser .nextToken ();
1177
+ ElasticsearchGeoAssertions .assertValidException (parser , ElasticsearchParseException .class );
1178
+ assertNull (parser .nextToken ());
1179
+ }
1134
1180
}
0 commit comments