diff options
Diffstat (limited to 'platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/geometry/GeoJsonConversionTest.java')
-rw-r--r-- | platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/geometry/GeoJsonConversionTest.java | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/geometry/GeoJsonConversionTest.java b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/geometry/GeoJsonConversionTest.java new file mode 100644 index 0000000000..81d10a5f15 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/geometry/GeoJsonConversionTest.java @@ -0,0 +1,148 @@ +package com.mapbox.mapboxsdk.testapp.geometry; + +import android.support.test.annotation.UiThreadTest; +import com.google.gson.JsonArray; +import com.mapbox.geojson.Feature; +import com.mapbox.geojson.Point; +import com.mapbox.geojson.Polygon; +import com.mapbox.mapboxsdk.geometry.LatLng; +import com.mapbox.mapboxsdk.style.expressions.Expression; +import com.mapbox.mapboxsdk.style.layers.PropertyFactory; +import com.mapbox.mapboxsdk.style.layers.SymbolLayer; +import com.mapbox.mapboxsdk.style.sources.GeoJsonSource; +import com.mapbox.mapboxsdk.testapp.action.MapboxMapAction; +import com.mapbox.mapboxsdk.testapp.activity.EspressoTest; +import com.mapbox.mapboxsdk.testapp.utils.TestingAsyncUtils; +import org.junit.Test; + +import static android.support.test.espresso.Espresso.onView; +import static android.support.test.espresso.matcher.ViewMatchers.isRoot; +import static com.mapbox.geojson.Feature.fromGeometry; +import static com.mapbox.geojson.FeatureCollection.fromFeatures; +import static com.mapbox.geojson.GeometryCollection.fromGeometries; +import static com.mapbox.geojson.LineString.fromLngLats; +import static com.mapbox.geojson.MultiLineString.fromLineString; +import static com.mapbox.geojson.MultiPolygon.fromPolygon; +import static java.util.Collections.emptyList; +import static java.util.Collections.singletonList; +import static org.junit.Assert.assertFalse; + +/** + * Instrumentation test to validate java geojson conversion to c++ + */ +public class GeoJsonConversionTest extends EspressoTest { + + // Regression test for #12343 + @Test + @UiThreadTest + public void testEmptyFeatureCollection() { + validateTestSetup(); + mapboxMap.getStyle().addSource( + new GeoJsonSource("test-id", + fromFeatures(singletonList(fromGeometry(fromGeometries(emptyList())))) + ) + ); + mapboxMap.getStyle().addLayer(new SymbolLayer("test-id", "test-id")); + } + + @Test + @UiThreadTest + public void testPointFeatureCollection() { + validateTestSetup(); + mapboxMap.getStyle().addSource( + new GeoJsonSource("test-id", + fromFeatures(singletonList(fromGeometry(Point.fromLngLat(0.0, 0.0)))) + ) + ); + mapboxMap.getStyle().addLayer(new SymbolLayer("test-id", "test-id")); + } + + @Test + @UiThreadTest + public void testMultiPointFeatureCollection() { + validateTestSetup(); + mapboxMap.getStyle().addSource( + new GeoJsonSource("test-id", + fromFeatures(singletonList(fromGeometry(fromLngLats(emptyList())))) + ) + ); + mapboxMap.getStyle().addLayer(new SymbolLayer("test-id", "test-id")); + } + + @Test + @UiThreadTest + public void testPolygonFeatureCollection() { + validateTestSetup(); + mapboxMap.getStyle().addSource( + new GeoJsonSource("test-id", + fromFeatures(singletonList(fromGeometry(Polygon.fromLngLats(emptyList())))) + ) + ); + mapboxMap.getStyle().addLayer(new SymbolLayer("test-id", "test-id")); + } + + @Test + @UiThreadTest + public void testMultiPolygonFeatureCollection() { + validateTestSetup(); + mapboxMap.getStyle().addSource( + new GeoJsonSource("test-id", + fromFeatures(singletonList(fromGeometry(fromPolygon(Polygon.fromLngLats(emptyList()))))) + ) + ); + mapboxMap.getStyle().addLayer(new SymbolLayer("test-id", "test-id")); + } + + @Test + @UiThreadTest + public void testLineStringFeatureCollection() { + validateTestSetup(); + mapboxMap.getStyle().addSource( + new GeoJsonSource("test-id", + fromFeatures(singletonList(fromGeometry(fromLngLats(emptyList())))) + ) + ); + mapboxMap.getStyle().addLayer(new SymbolLayer("test-id", "test-id")); + } + + @Test + @UiThreadTest + public void testMultiLineStringFeatureCollection() { + validateTestSetup(); + mapboxMap.getStyle().addSource( + new GeoJsonSource("test-id", + fromFeatures(singletonList(fromGeometry(fromLineString(fromLngLats(emptyList()))))) + ) + ); + mapboxMap.getStyle().addLayer(new SymbolLayer("test-id", "test-id")); + } + + + @Test + public void testNegativeNumberPropertyConversion() { + validateTestSetup(); + onView(isRoot()).perform(new MapboxMapAction((uiController, mapboxMap) -> { + LatLng latLng = new LatLng(); + Feature feature = Feature.fromGeometry(Point.fromLngLat(latLng.getLongitude(), latLng.getLatitude())); + + JsonArray foregroundJsonArray = new JsonArray(); + foregroundJsonArray.add(0f); + foregroundJsonArray.add(-3f); + feature.addProperty("property", foregroundJsonArray); + + GeoJsonSource source = new GeoJsonSource("source", feature); + mapboxMap.getStyle().addSource(source); + + SymbolLayer layer = new SymbolLayer("layer", "source") + .withProperties( + PropertyFactory.iconOffset(Expression.get("property")), + PropertyFactory.iconImage("zoo-15") + ); + mapboxMap.getStyle().addLayer(layer); + + TestingAsyncUtils.INSTANCE.waitForLayer(uiController, mapView); + + assertFalse(mapboxMap.queryRenderedFeatures(mapboxMap.getProjection().toScreenLocation(latLng)).isEmpty()); + }, mapboxMap)); + } +}
\ No newline at end of file |