1 package org.geojson; 2 3 import org.junit.Assert; 4 import org.junit.Test; 5 import org.junit.runner.RunWith; 6 import org.junit.runners.Parameterized; 7 8 import java.util.Arrays; 9 import java.util.Collection; 10 11 @RunWith(Parameterized.class) 12 public class GeoJsonObjectVisitorTest { 13 14 private final GeoJsonObject geoJsonObject; 15 private GeoJsonObjectVisitor<GeoJsonObject> instance = new GeoJsonObjectVisitor<GeoJsonObject>() { 16 17 @Override 18 public GeoJsonObject visit(GeometryCollection geoJsonObject) { 19 Assert.assertEquals(GeometryCollection.class, geoJsonObject.getClass()); 20 return geoJsonObject; 21 } 22 23 @Override 24 public GeoJsonObject visit(FeatureCollection geoJsonObject) { 25 Assert.assertEquals(FeatureCollection.class, geoJsonObject.getClass()); 26 return geoJsonObject; 27 } 28 29 @Override 30 public GeoJsonObject visit(Point geoJsonObject) { 31 Assert.assertEquals(Point.class, geoJsonObject.getClass()); 32 return geoJsonObject; 33 } 34 35 @Override 36 public GeoJsonObject visit(Feature geoJsonObject) { 37 Assert.assertEquals(Feature.class, geoJsonObject.getClass()); 38 return geoJsonObject; 39 } 40 41 @Override 42 public GeoJsonObject visit(MultiLineString geoJsonObject) { 43 Assert.assertEquals(MultiLineString.class, geoJsonObject.getClass()); 44 return geoJsonObject; 45 } 46 47 @Override 48 public GeoJsonObject visit(Polygon geoJsonObject) { 49 Assert.assertEquals(Polygon.class, geoJsonObject.getClass()); 50 return geoJsonObject; 51 } 52 53 @Override 54 public GeoJsonObject visit(MultiPolygon geoJsonObject) { 55 Assert.assertEquals(MultiPolygon.class, geoJsonObject.getClass()); 56 return geoJsonObject; 57 } 58 59 @Override 60 public GeoJsonObject visit(MultiPoint geoJsonObject) { 61 Assert.assertEquals(MultiPoint.class, geoJsonObject.getClass()); 62 return geoJsonObject; 63 } 64 65 @Override 66 public GeoJsonObject visit(LineString geoJsonObject) { 67 Assert.assertEquals(LineString.class, geoJsonObject.getClass()); 68 return geoJsonObject; 69 } 70 }; GeoJsonObjectVisitorTest(GeoJsonObject geoJsonObject)71 public GeoJsonObjectVisitorTest(GeoJsonObject geoJsonObject) { 72 this.geoJsonObject = geoJsonObject; 73 } 74 75 @Parameterized.Parameters data()76 public static Collection<Object[]> data() { 77 return Arrays.asList(new Object[][] { { new GeometryCollection() }, { new FeatureCollection() }, 78 { new Point(12D, 13D) }, { new Feature() }, 79 { new MultiLineString(Arrays.asList(new LngLatAlt(12D, 13D))) }, { new Polygon() }, 80 { new MultiPolygon() }, { new MultiPoint() }, { new LineString() } }); 81 } 82 83 @Test should_visit_right_class()84 public void should_visit_right_class() { 85 // When 86 GeoJsonObject result = geoJsonObject.accept(this.instance); 87 // Then 88 Assert.assertEquals(geoJsonObject, result); 89 } 90 91 @Test itShouldAdapter()92 public void itShouldAdapter() throws Exception { 93 Assert.assertNull(geoJsonObject.accept(new GeoJsonObjectVisitor.Adapter<Void>())); 94 } 95 }