summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/RuntimeStyleTests.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/RuntimeStyleTests.java')
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/RuntimeStyleTests.java269
1 files changed, 203 insertions, 66 deletions
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/RuntimeStyleTests.java b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/RuntimeStyleTests.java
index eec00bdde9..bf90949ffd 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/RuntimeStyleTests.java
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/RuntimeStyleTests.java
@@ -1,6 +1,7 @@
package com.mapbox.mapboxsdk.testapp.style;
import android.graphics.Color;
+import android.graphics.PointF;
import android.support.test.espresso.Espresso;
import android.support.test.espresso.UiController;
import android.support.test.espresso.ViewAction;
@@ -10,12 +11,12 @@ import android.view.View;
import com.mapbox.mapboxsdk.maps.MapboxMap;
import com.mapbox.mapboxsdk.style.layers.CannotAddLayerException;
+import com.mapbox.mapboxsdk.style.layers.CircleLayer;
import com.mapbox.mapboxsdk.style.layers.FillLayer;
-import com.mapbox.mapboxsdk.style.layers.NoSuchLayerException;
+import com.mapbox.mapboxsdk.style.layers.Layer;
import com.mapbox.mapboxsdk.style.layers.Property;
import com.mapbox.mapboxsdk.style.layers.PropertyFactory;
import com.mapbox.mapboxsdk.style.sources.CannotAddSourceException;
-import com.mapbox.mapboxsdk.style.sources.NoSuchSourceException;
import com.mapbox.mapboxsdk.style.sources.Source;
import com.mapbox.mapboxsdk.style.sources.VectorSource;
import com.mapbox.mapboxsdk.testapp.R;
@@ -32,12 +33,18 @@ import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
+import java.util.List;
+
+import timber.log.Timber;
+
import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
import static android.support.test.espresso.matcher.ViewMatchers.withId;
-import static junit.framework.Assert.fail;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
/**
* Basic smoke tests for Layer and Source
@@ -57,139 +64,255 @@ public class RuntimeStyleTests {
}
@Test
+ public void testListLayers() {
+ ViewUtils.checkViewIsDisplayed(R.id.mapView);
+ onView(withId(R.id.mapView)).perform(new BaseViewAction() {
+
+ @Override
+ public void perform(UiController uiController, View view) {
+ MapboxMap mapboxMap = rule.getActivity().getMapboxMap();
+
+ List<Layer> layers = mapboxMap.getLayers();
+ assertNotNull(layers);
+ assertTrue(layers.size() > 0);
+ for (Layer layer : layers) {
+ assertNotNull(layer);
+ }
+ }
+
+ });
+ }
+
+ @Test
public void testGetAddRemoveLayer() {
ViewUtils.checkViewIsDisplayed(R.id.mapView);
onView(withId(R.id.mapView)).perform(new AddRemoveLayerAction());
}
@Test
+ public void testAddLayerAbove() {
+ ViewUtils.checkViewIsDisplayed(R.id.mapView);
+ onView(withId(R.id.mapView)).perform(new BaseViewAction() {
+ @Override
+ public void perform(UiController uiController, View view) {
+ MapboxMap mapboxMap = rule.getActivity().getMapboxMap();
+
+ List<Layer> layers = mapboxMap.getLayers();
+ Source source = mapboxMap.getSources().get(0);
+
+ // Test inserting with invalid above-id
+ try {
+ mapboxMap.addLayerAbove(new CircleLayer("invalid-id-layer-test", source.getId()), "no-such-layer-here-man");
+ fail("Should have thrown exception");
+ } catch (CannotAddLayerException ex) {
+ // Yeah
+ assertNotNull(ex.getMessage());
+ }
+
+ // Insert as last
+ CircleLayer last = new CircleLayer("this is the last one", source.getId());
+ mapboxMap.addLayerAbove(last, layers.get(layers.size() - 1).getId());
+ layers = mapboxMap.getLayers();
+ assertEquals(last.getId(), layers.get(layers.size() - 1).getId());
+
+ // Insert
+ CircleLayer second = new CircleLayer("this is the second one", source.getId());
+ mapboxMap.addLayerAbove(second, layers.get(0).getId());
+ layers = mapboxMap.getLayers();
+ assertEquals(second.getId(), layers.get(1).getId());
+ }
+ });
+ }
+
+ @Test
+ public void testRemoveLayerAt() {
+ ViewUtils.checkViewIsDisplayed(R.id.mapView);
+ onView(withId(R.id.mapView)).perform(new BaseViewAction() {
+
+ @Override
+ public void perform(UiController uiController, View view) {
+ MapboxMap mapboxMap = rule.getActivity().getMapboxMap();
+
+ // Remove by index
+ Layer firstLayer = mapboxMap.getLayers().get(0);
+ Layer removed = mapboxMap.removeLayerAt(0);
+ assertNotNull(removed);
+ assertNotNull(removed.getId());
+ assertEquals(firstLayer.getId(), removed.getId());
+
+ // Test remove by index bounds checks
+ Timber.i("Remove layer at index > size");
+ assertNull(mapboxMap.removeLayerAt(Integer.MAX_VALUE));
+ }
+ });
+ }
+
+ public void testAddLayerAt() {
+ ViewUtils.checkViewIsDisplayed(R.id.mapView);
+ onView(withId(R.id.mapView)).perform(new BaseViewAction() {
+ @Override
+ public void perform(UiController uiController, View view) {
+ MapboxMap mapboxMap = rule.getActivity().getMapboxMap();
+
+ List<Layer> layers = mapboxMap.getLayers();
+ Source source = mapboxMap.getSources().get(0);
+
+ // Test inserting out of range
+ try {
+ mapboxMap.addLayerAt(new CircleLayer("invalid-id-layer-test", source.getId()), layers.size());
+ fail("Should have thrown exception");
+ } catch (CannotAddLayerException ex) {
+ // Yeah
+ assertNotNull(ex.getMessage());
+ }
+
+ // Insert at current last position
+ CircleLayer last = new CircleLayer("this is the last one", source.getId());
+ mapboxMap.addLayerAt(last, layers.size() - 1);
+ layers = mapboxMap.getLayers();
+ assertEquals(last.getId(), layers.get(layers.size() - 2).getId());
+
+ // Insert at start
+ CircleLayer second = new CircleLayer("this is the first one", source.getId());
+ mapboxMap.addLayerAt(second, 0);
+ layers = mapboxMap.getLayers();
+ assertEquals(second.getId(), layers.get(0).getId());
+ }
+ });
+ }
+
+
+ @Test
+ public void testListSources() {
+ ViewUtils.checkViewIsDisplayed(R.id.mapView);
+ onView(withId(R.id.mapView)).perform(new BaseViewAction() {
+
+ @Override
+ public void perform(UiController uiController, View view) {
+ MapboxMap mapboxMap = rule.getActivity().getMapboxMap();
+
+ List<Source> sources = mapboxMap.getSources();
+ assertNotNull(sources);
+ assertTrue(sources.size() > 0);
+ for (Source source : sources) {
+ assertNotNull(source);
+ }
+ }
+
+ });
+ }
+
+ @Test
public void testAddRemoveSource() {
ViewUtils.checkViewIsDisplayed(R.id.mapView);
MapboxMap mapboxMap = rule.getActivity().getMapboxMap();
mapboxMap.addSource(new VectorSource("my-source", "mapbox://mapbox.mapbox-terrain-v2"));
- try {
- mapboxMap.removeSource("my-source");
- } catch (NoSuchSourceException noSuchSourceException) {
- // it's ok..
- }
+ mapboxMap.removeSource("my-source");
onView(withId(R.id.mapView)).perform(new AddRemoveSourceAction());
}
- private class AddRemoveLayerAction implements ViewAction {
+ /**
+ * https://github.com/mapbox/mapbox-gl-native/issues/7973
+ */
+ @Test
+ public void testQueryRenderedFeaturesInputHandling() {
+ ViewUtils.checkViewIsDisplayed(R.id.mapView);
+ onView(withId(R.id.mapView)).perform(new BaseViewAction() {
+
+ @Override
+ public void perform(UiController uiController, View view) {
+ MapboxMap mapboxMap = rule.getActivity().getMapboxMap();
+ String[] layerIds = new String[600];
+ for (int i = 0; i < layerIds.length; i++) {
+ layerIds[i] = "layer-" + i;
+ }
+ mapboxMap.queryRenderedFeatures(new PointF(100, 100), layerIds);
+ }
- @Override
- public Matcher<View> getConstraints() {
- return isDisplayed();
- }
+ });
+ }
- @Override
- public String getDescription() {
- return getClass().getSimpleName();
- }
+ private class AddRemoveLayerAction extends BaseViewAction {
@Override
public void perform(UiController uiController, View view) {
MapboxMap mapboxMap = rule.getActivity().getMapboxMap();
- //Get initial
+ // Get initial
assertNotNull(mapboxMap.getLayer("building"));
- //Remove
- try {
- mapboxMap.removeLayer("building");
- } catch (NoSuchLayerException noSuchSourceException) {
- fail("Definitively exists: " + noSuchSourceException.getMessage());
- }
+ // Remove
+ Layer building = mapboxMap.removeLayer("building");
+ assertNotNull(building);
assertNull(mapboxMap.getLayer("building"));
- //Add
+ // Add
FillLayer layer = new FillLayer("building", "composite");
layer.setSourceLayer("building");
mapboxMap.addLayer(layer);
assertNotNull(mapboxMap.getLayer("building"));
- //Assure the reference still works
+ // Assure the reference still works
layer.setProperties(PropertyFactory.visibility(Property.VISIBLE));
- //Remove, preserving the reference
- try {
- mapboxMap.removeLayer(layer);
- } catch (NoSuchLayerException noSuchSourceException) {
- fail("Definitively exists: " + noSuchSourceException.getMessage());
- }
+ // Remove, preserving the reference
+ mapboxMap.removeLayer(layer);
- //Property setters should still work
+ // Property setters should still work
layer.setProperties(PropertyFactory.fillColor(Color.RED));
- //Re-add the reference...
+ // Re-add the reference...
mapboxMap.addLayer(layer);
- //Ensure it's there
+ // Ensure it's there
Assert.assertNotNull(mapboxMap.getLayer(layer.getId()));
- //Test adding a duplicate layer
+ // Test adding a duplicate layer
try {
mapboxMap.addLayer(new FillLayer("building", "composite"));
fail("Should not have been allowed to add a layer with a duplicate id");
} catch (CannotAddLayerException cannotAddLayerException) {
- //OK
+ // OK
}
}
}
- private class AddRemoveSourceAction implements ViewAction {
-
- @Override
- public Matcher<View> getConstraints() {
- return isDisplayed();
- }
-
- @Override
- public String getDescription() {
- return getClass().getSimpleName();
- }
+ private class AddRemoveSourceAction extends BaseViewAction {
@Override
public void perform(UiController uiController, View view) {
MapboxMap mapboxMap = rule.getActivity().getMapboxMap();
- //Add initial source
+ // Add initial source
mapboxMap.addSource(new VectorSource("my-source", "mapbox://mapbox.mapbox-terrain-v2"));
- //Remove
- try {
- mapboxMap.removeSource("my-source");
- } catch (NoSuchSourceException noSuchSourceException) {
- fail("Definitively exists: " + noSuchSourceException.getMessage());
- }
+ // Remove
+ Source mySource = mapboxMap.removeSource("my-source");
+ assertNotNull(mySource);
assertNull(mapboxMap.getLayer("my-source"));
- //Add
+ // Add
Source source = new VectorSource("my-source", "mapbox://mapbox.mapbox-terrain-v2");
mapboxMap.addSource(source);
- //Remove, preserving the reference
- try {
- mapboxMap.removeSource(source);
- } catch (NoSuchSourceException noSuchSourceException) {
- fail("Definitively exists: " + noSuchSourceException.getMessage());
- }
+ // Remove, preserving the reference
+ mapboxMap.removeSource(source);
- //Re-add the reference...
+ // Re-add the reference...
mapboxMap.addSource(source);
- //Ensure it's there
+ // Ensure it's there
Assert.assertNotNull(mapboxMap.getSource(source.getId()));
- //Test adding a duplicate source
+ // Test adding a duplicate source
try {
Source source2 = new VectorSource("my-source", "mapbox://mapbox.mapbox-terrain-v2");
mapboxMap.addSource(source2);
fail("Should not have been allowed to add a source with a duplicate id");
} catch (CannotAddSourceException cannotAddSourceException) {
- //OK
+ // OK
}
}
}
@@ -198,4 +321,18 @@ public class RuntimeStyleTests {
public void unregisterIntentServiceIdlingResource() {
Espresso.unregisterIdlingResources(idlingResource);
}
+
+ public abstract class BaseViewAction implements ViewAction {
+
+ @Override
+ public Matcher<View> getConstraints() {
+ return isDisplayed();
+ }
+
+ @Override
+ public String getDescription() {
+ return getClass().getSimpleName();
+ }
+
+ }
}