[android] - fix jni method lookup of GeometryCollection accessor geometries, add regression test

This commit is contained in:
tobrun
2018-07-09 11:31:16 +02:00
committed by Tobrun
parent 8b2135b249
commit bf7792eae0
2 changed files with 50 additions and 1 deletions

View File

@@ -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()))));
}
}
}

View File

@@ -30,7 +30,7 @@ jni::Object<GeometryCollection> GeometryCollection::New(jni::JNIEnv& env, const
mapbox::geometry::geometry_collection<double> GeometryCollection::convert(jni::JNIEnv &env, jni::Object<GeometryCollection> jCollection) {
// Get geometries
static auto getGeometries = javaClass.GetMethod<jni::Object<java::util::List> ()>(env, "getGeometries");
static auto getGeometries = javaClass.GetMethod<jni::Object<java::util::List> ()>(env, "geometries");
auto jList = jCollection.Call(env, getGeometries);
// Turn into array