From bf7792eae07eb7561cab3dd567b1d9fca75d52be Mon Sep 17 00:00:00 2001 From: tobrun Date: Mon, 9 Jul 2018 11:31:16 +0200 Subject: [android] - fix jni method lookup of GeometryCollection accessor geometries, add regression test --- .../testapp/geometry/GeoJsonConversionTest.java | 49 ++++++++++++++++++++++ .../android/src/geojson/geometry_collection.cpp | 2 +- 2 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/geometry/GeoJsonConversionTest.java 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..197ab744e4 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/geometry/GeoJsonConversionTest.java @@ -0,0 +1,49 @@ +package com.mapbox.mapboxsdk.testapp.geometry; + +import com.mapbox.geojson.Feature; +import com.mapbox.geojson.FeatureCollection; +import com.mapbox.geojson.GeometryCollection; +import com.mapbox.mapboxsdk.geometry.LatLngBounds; +import com.mapbox.mapboxsdk.style.layers.SymbolLayer; +import com.mapbox.mapboxsdk.style.sources.CustomGeometrySource; +import com.mapbox.mapboxsdk.style.sources.GeometryTileProvider; +import com.mapbox.mapboxsdk.testapp.activity.BaseActivityTest; +import com.mapbox.mapboxsdk.testapp.activity.espresso.EspressoTestActivity; +import org.junit.Test; + +import java.util.Collections; + +import static junit.framework.Assert.assertNotNull; + +/** + * Instrumentation test to validate java geojson conversion to c++ + */ +public class GeoJsonConversionTest extends BaseActivityTest { + + // Regression test for #12343 + @Test + public void testGetCameraForLatLngBounds() { + validateTestSetup(); + onMapView().perform(getMapboxMapAction((uiController, mapboxMap) -> { + mapboxMap.addSource(new CustomGeometrySource("test-id", new CustomProvider())); + mapboxMap.addLayer(new SymbolLayer("test-id", "test-id")); + assertNotNull(mapboxMap); + })); + } + + @Override + protected Class getActivityClass() { + return EspressoTestActivity.class; + } + + class CustomProvider implements GeometryTileProvider { + @Override + public FeatureCollection getFeaturesForBounds(LatLngBounds bounds, int zoom) { + return FeatureCollection.fromFeatures( + Collections.singletonList( + Feature.fromGeometry( + GeometryCollection.fromGeometries( + Collections.emptyList())))); + } + } +} diff --git a/platform/android/src/geojson/geometry_collection.cpp b/platform/android/src/geojson/geometry_collection.cpp index eb3a790404..770cb9a5d6 100644 --- a/platform/android/src/geojson/geometry_collection.cpp +++ b/platform/android/src/geojson/geometry_collection.cpp @@ -30,7 +30,7 @@ jni::Object GeometryCollection::New(jni::JNIEnv& env, const mapbox::geometry::geometry_collection GeometryCollection::convert(jni::JNIEnv &env, jni::Object jCollection) { // Get geometries - static auto getGeometries = javaClass.GetMethod ()>(env, "getGeometries"); + static auto getGeometries = javaClass.GetMethod ()>(env, "geometries"); auto jList = jCollection.Call(env, getGeometries); // Turn into array -- cgit v1.2.1