summaryrefslogtreecommitdiff
path: root/platform
diff options
context:
space:
mode:
authorIvo van Dongen <info@ivovandongen.nl>2017-03-23 17:54:22 +0200
committerIvo van Dongen <ivovandongen@users.noreply.github.com>2017-03-28 15:44:22 +0300
commit6fa578aa4e372c8d91dc617970386290e4571d5c (patch)
tree454093f6033a6638926c863f3bbd314881a84262 /platform
parent02fd38ccbc6a4070162a2b9167d7f8d42b3706a0 (diff)
downloadqtlocation-mapboxgl-6fa578aa4e372c8d91dc617970386290e4571d5c.tar.gz
[android] geojson source - add conversion tests
Diffstat (limited to 'platform')
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/GeoJsonSourceTests.java215
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/res/raw/test_feature_collection.geojson26
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/res/raw/test_feature_properties.geojson21
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/res/raw/test_line_string_feature.geojson17
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/res/raw/test_multi_line_string_feature.geojson29
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/res/raw/test_multi_point_feature.geojson17
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/res/raw/test_multi_polygon_feature.geojson49
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/res/raw/test_point_feature.geojson11
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/res/raw/test_polygon_feature.geojson27
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/res/raw/test_polygon_with_hole_feature.geojson45
10 files changed, 457 insertions, 0 deletions
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/GeoJsonSourceTests.java b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/GeoJsonSourceTests.java
new file mode 100644
index 0000000000..a8d1ee5911
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/GeoJsonSourceTests.java
@@ -0,0 +1,215 @@
+package com.mapbox.mapboxsdk.testapp.style;
+
+import android.content.res.Resources;
+import android.support.annotation.RawRes;
+import android.support.test.espresso.Espresso;
+import android.support.test.espresso.UiController;
+import android.support.test.espresso.ViewAction;
+import android.support.test.rule.ActivityTestRule;
+import android.support.test.runner.AndroidJUnit4;
+import android.view.View;
+
+import com.mapbox.mapboxsdk.maps.MapboxMap;
+import com.mapbox.mapboxsdk.style.layers.CircleLayer;
+import com.mapbox.mapboxsdk.style.layers.Layer;
+import com.mapbox.mapboxsdk.style.sources.GeoJsonSource;
+import com.mapbox.mapboxsdk.testapp.R;
+import com.mapbox.mapboxsdk.testapp.activity.style.RuntimeStyleTestActivity;
+import com.mapbox.mapboxsdk.testapp.utils.OnMapReadyIdlingResource;
+import com.mapbox.mapboxsdk.testapp.utils.ViewUtils;
+import com.mapbox.services.commons.geojson.Feature;
+import com.mapbox.services.commons.geojson.FeatureCollection;
+import com.mapbox.services.commons.geojson.Point;
+
+import org.hamcrest.Matcher;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.io.StringWriter;
+import java.io.Writer;
+
+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 org.junit.Assert.fail;
+
+/**
+ * Tests for {@link GeoJsonSource}
+ */
+@RunWith(AndroidJUnit4.class)
+public class GeoJsonSourceTests {
+
+ @Rule
+ public final ActivityTestRule<RuntimeStyleTestActivity> rule =
+ new ActivityTestRule<>(RuntimeStyleTestActivity.class);
+
+ private OnMapReadyIdlingResource idlingResource;
+
+ @Before
+ public void registerIdlingResource() {
+ idlingResource = new OnMapReadyIdlingResource(rule.getActivity());
+ Espresso.registerIdlingResources(idlingResource);
+ }
+
+ @After
+ public void unregisterIntentServiceIdlingResource() {
+ Espresso.unregisterIdlingResources(idlingResource);
+ }
+
+ @Test
+ public void testFeatureCollection() {
+ 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();
+
+ GeoJsonSource source = new GeoJsonSource("source", FeatureCollection
+ .fromJson(readRawResource(rule.getActivity().getResources(), R.raw.test_feature_collection)));
+ mapboxMap.addSource(source);
+
+ mapboxMap.addLayer(new CircleLayer("layer", source.getId()));
+ }
+
+ });
+ }
+
+ @Test
+ public void testPointGeometry() {
+ 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();
+
+ GeoJsonSource source = new GeoJsonSource("source", Point.fromCoordinates(new double[] {0d, 0d}));
+ mapboxMap.addSource(source);
+
+ mapboxMap.addLayer(new CircleLayer("layer", source.getId()));
+ }
+
+ });
+ }
+
+ @Test
+ public void testFeatureProperties() {
+ 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();
+
+ GeoJsonSource source = new GeoJsonSource("source",
+ readRawResource(rule.getActivity().getResources(), R.raw.test_feature_properties));
+ mapboxMap.addSource(source);
+
+ mapboxMap.addLayer(new CircleLayer("layer", source.getId()));
+ }
+
+ });
+ }
+
+ @Test
+ public void testPointFeature() {
+ testFeatureFromResource(R.raw.test_point_feature);
+ }
+
+ @Test
+ public void testLineStringFeature() {
+ testFeatureFromResource(R.raw.test_line_string_feature);
+ }
+
+ @Test
+ public void testPolygonFeature() {
+ testFeatureFromResource(R.raw.test_polygon_feature);
+ }
+
+ @Test
+ public void testPolygonWithHoleFeature() {
+ testFeatureFromResource(R.raw.test_polygon_with_hole_feature);
+ }
+
+ @Test
+ public void testMultiPointFeature() {
+ testFeatureFromResource(R.raw.test_multi_point_feature);
+ }
+
+ @Test
+ public void testMultiLineStringFeature() {
+ testFeatureFromResource(R.raw.test_multi_line_string_feature);
+ }
+
+ @Test
+ public void testMultiPolygonFeature() {
+ testFeatureFromResource(R.raw.test_multi_polygon_feature);
+ }
+
+ protected void testFeatureFromResource(final @RawRes int resource) {
+ 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();
+
+ GeoJsonSource source = new GeoJsonSource("source");
+ mapboxMap.addSource(source);
+ Layer layer = new CircleLayer("layer", source.getId());
+ mapboxMap.addLayer(layer);
+
+ source.setGeoJson(Feature.fromJson(
+ readRawResource(rule.getActivity().getResources(), resource)));
+
+ mapboxMap.removeLayer(layer);
+ mapboxMap.removeSource(source);
+ }
+
+ });
+ }
+
+ private String readRawResource(Resources resources, @RawRes int rawResource) {
+ InputStream is = resources.openRawResource(rawResource);
+ Writer writer = new StringWriter();
+ char[] buffer = new char[1024];
+ try {
+ try {
+ Reader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
+ int numRead;
+ while ((numRead = reader.read(buffer)) != -1) {
+ writer.write(buffer, 0, numRead);
+ }
+ } finally {
+ is.close();
+ }
+ } catch (IOException err) {
+ fail(err.getMessage());
+ }
+
+ return writer.toString();
+ }
+
+ public abstract class BaseViewAction implements ViewAction {
+
+ @Override
+ public Matcher<View> getConstraints() {
+ return isDisplayed();
+ }
+
+ @Override
+ public String getDescription() {
+ return getClass().getSimpleName();
+ }
+
+ }
+}
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/raw/test_feature_collection.geojson b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/raw/test_feature_collection.geojson
new file mode 100644
index 0000000000..4a0d1968cf
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/raw/test_feature_collection.geojson
@@ -0,0 +1,26 @@
+{
+ "type": "FeatureCollection",
+ "features": [
+ {
+ "type": "Feature",
+ "geometry": {
+ "type": "Point",
+ "coordinates": [
+ 5.1080,
+ 52.0962
+ ]
+ }
+ },
+ {
+ "type": "Feature",
+ "properties": {},
+ "geometry": {
+ "type": "Point",
+ "coordinates": [
+ 5.1090,
+ 52.0962
+ ]
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/raw/test_feature_properties.geojson b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/raw/test_feature_properties.geojson
new file mode 100644
index 0000000000..751c0a4939
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/raw/test_feature_properties.geojson
@@ -0,0 +1,21 @@
+{
+ "type": "Feature",
+ "id": 1,
+ "properties": {
+ "null_prop": null,
+ "integer_prop": 10000,
+ "float_prop": 10000.10,
+ "string_prop": "my_string",
+ "bool_prop": true,
+ "object_prop": {
+ "nested_string_prop": "my_string"
+ }
+ },
+ "geometry": {
+ "type": "Point",
+ "coordinates": [
+ 5.112419128417969,
+ 52.09622422366772
+ ]
+ }
+}
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/raw/test_line_string_feature.geojson b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/raw/test_line_string_feature.geojson
new file mode 100644
index 0000000000..c63c23d87a
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/raw/test_line_string_feature.geojson
@@ -0,0 +1,17 @@
+{
+ "type": "Feature",
+ "properties": {},
+ "geometry": {
+ "type": "LineString",
+ "coordinates": [
+ [
+ 5.1080,
+ 52.0960
+ ],
+ [
+ 5.1080,
+ 52.0970
+ ]
+ ]
+ }
+} \ No newline at end of file
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/raw/test_multi_line_string_feature.geojson b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/raw/test_multi_line_string_feature.geojson
new file mode 100644
index 0000000000..cae631d987
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/raw/test_multi_line_string_feature.geojson
@@ -0,0 +1,29 @@
+{
+ "type": "Feature",
+ "properties": {},
+ "geometry": {
+ "type": "MultiLineString",
+ "coordinates": [
+ [
+ [
+ 5.1080,
+ 52.0960
+ ],
+ [
+ 5.1080,
+ 52.0970
+ ]
+ ],
+ [
+ [
+ 5.1090,
+ 52.0960
+ ],
+ [
+ 5.1090,
+ 52.0970
+ ]
+ ]
+ ]
+ }
+} \ No newline at end of file
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/raw/test_multi_point_feature.geojson b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/raw/test_multi_point_feature.geojson
new file mode 100644
index 0000000000..6be05156e7
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/raw/test_multi_point_feature.geojson
@@ -0,0 +1,17 @@
+{
+ "type": "Feature",
+ "properties": {},
+ "geometry": {
+ "type": "MultiPoint",
+ "coordinates": [
+ [
+ 5.1080,
+ 52.0960
+ ],
+ [
+ 5.1080,
+ 52.0970
+ ]
+ ]
+ }
+} \ No newline at end of file
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/raw/test_multi_polygon_feature.geojson b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/raw/test_multi_polygon_feature.geojson
new file mode 100644
index 0000000000..469a054c4e
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/raw/test_multi_polygon_feature.geojson
@@ -0,0 +1,49 @@
+{
+ "type": "Feature",
+ "properties": {},
+ "geometry": {
+ "type": "MultiPolygon",
+ "coordinates": [
+ [
+ [
+ [
+ 5.112419128417969,
+ 52.09622422366772
+ ],
+ [
+ 5.112419128417969,
+ 52.094062282906954
+ ],
+ [
+ 5.115251541137695,
+ 52.094747787662364
+ ],
+ [
+ 5.112419128417969,
+ 52.09622422366772
+ ]
+ ]
+ ],
+ [
+ [
+ [
+ 5.11662483215332,
+ 52.09485324899753
+ ],
+ [
+ 5.11662483215332,
+ 52.09306037239377
+ ],
+ [
+ 5.120058059692383,
+ 52.093376767618174
+ ],
+ [
+ 5.11662483215332,
+ 52.09485324899753
+ ]
+ ]
+ ]
+ ]
+ }
+}
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/raw/test_point_feature.geojson b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/raw/test_point_feature.geojson
new file mode 100644
index 0000000000..ae069de151
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/raw/test_point_feature.geojson
@@ -0,0 +1,11 @@
+{
+ "type": "Feature",
+ "properties": {},
+ "geometry": {
+ "type": "Point",
+ "coordinates": [
+ 5.1080,
+ 52.0962
+ ]
+ }
+}
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/raw/test_polygon_feature.geojson b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/raw/test_polygon_feature.geojson
new file mode 100644
index 0000000000..2fc9f88669
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/raw/test_polygon_feature.geojson
@@ -0,0 +1,27 @@
+{
+ "type": "Feature",
+ "properties": {},
+ "geometry": {
+ "type": "Polygon",
+ "coordinates": [
+ [
+ [
+ 5.112419128417969,
+ 52.09622422366772
+ ],
+ [
+ 5.112419128417969,
+ 52.094062282906954
+ ],
+ [
+ 5.115251541137695,
+ 52.094747787662364
+ ],
+ [
+ 5.112419128417969,
+ 52.09622422366772
+ ]
+ ]
+ ]
+ }
+}
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/raw/test_polygon_with_hole_feature.geojson b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/raw/test_polygon_with_hole_feature.geojson
new file mode 100644
index 0000000000..1008e2e937
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/raw/test_polygon_with_hole_feature.geojson
@@ -0,0 +1,45 @@
+{
+ "type": "Feature",
+ "properties": {},
+ "geometry": {
+ "type": "Polygon",
+ "coordinates": [
+ [
+ [
+ 5.112419128417969,
+ 52.09622422366772
+ ],
+ [
+ 5.112419128417969,
+ 52.094062282906954
+ ],
+ [
+ 5.115251541137695,
+ 52.094747787662364
+ ],
+ [
+ 5.112419128417969,
+ 52.09622422366772
+ ]
+ ],
+ [
+ [
+ 5.1127249002456665,
+ 52.094362192533545
+ ],
+ [
+ 5.114580988883972,
+ 52.0948104053602
+ ],
+ [
+ 5.11263906955719,
+ 52.095845232479846
+ ],
+ [
+ 5.1127249002456665,
+ 52.094362192533545
+ ]
+ ]
+ ]
+ }
+}