From 5a1b4243e559fc7d74a5a140fe723c770086992d Mon Sep 17 00:00:00 2001
From: Tobrun
Date: Thu, 6 Dec 2018 17:21:33 +0200
Subject: [android] - add unit tests for Style.java API
---
platform/android/MapboxGLAndroidSDK/build.gradle | 1 +
.../mapboxsdk/location/LocationComponent.java | 6 +
.../java/com/mapbox/mapboxsdk/maps/MapView.java | 14 +-
.../java/com/mapbox/mapboxsdk/maps/MapboxMap.java | 22 +-
.../main/java/com/mapbox/mapboxsdk/maps/Style.java | 55 +++--
.../com/mapbox/mapboxsdk/maps/MapboxMapTest.java | 2 +-
.../com/mapbox/mapboxsdk/maps/StyleBuilderTest.kt | 106 ++++++++
.../java/com/mapbox/mapboxsdk/maps/StyleTest.kt | 275 +++++++++++++++++++++
platform/android/gradle/dependencies.gradle | 2 +
platform/android/scripts/exclude-activity-gen.json | 4 +-
10 files changed, 440 insertions(+), 47 deletions(-)
create mode 100644 platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/StyleBuilderTest.kt
create mode 100644 platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/StyleTest.kt
diff --git a/platform/android/MapboxGLAndroidSDK/build.gradle b/platform/android/MapboxGLAndroidSDK/build.gradle
index ddb2949bbc..2c97965866 100644
--- a/platform/android/MapboxGLAndroidSDK/build.gradle
+++ b/platform/android/MapboxGLAndroidSDK/build.gradle
@@ -14,6 +14,7 @@ dependencies {
implementation dependenciesList.okhttp3
testImplementation dependenciesList.junit
testImplementation dependenciesList.mockito
+ testImplementation dependenciesList.mockk
testImplementation dependenciesList.robolectric
testImplementation dependenciesList.kotlinLib
}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationComponent.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationComponent.java
index b361de847b..37433076b0 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationComponent.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationComponent.java
@@ -164,6 +164,12 @@ public final class LocationComponent {
this.mapboxMap = mapboxMap;
}
+ // used for creating a spy
+ LocationComponent() {
+ //noinspection ConstantConditions
+ mapboxMap = null;
+ }
+
@VisibleForTesting
LocationComponent(@NonNull MapboxMap mapboxMap,
@NonNull LocationEngineCallback currentlistener,
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java
index 1883e539f3..558ea56a0d 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java
@@ -147,7 +147,7 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
GesturesManagerInteractionListener registerTouchListener = new GesturesManagerInteractionListener();
// callback for camera change events
- final CameraChangeDispatcher cameraChangeDispatcher = new CameraChangeDispatcher();
+ final CameraChangeDispatcher cameraDispatcher = new CameraChangeDispatcher();
// setup components for MapboxMap creation
Projection proj = new Projection(nativeMapView);
@@ -161,20 +161,20 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback {
ShapeAnnotations shapeAnnotations = new ShapeAnnotationContainer(nativeMapView, annotationsArray);
AnnotationManager annotationManager = new AnnotationManager(this, annotationsArray, iconManager,
annotations, markers, polygons, polylines, shapeAnnotations);
- Transform transform = new Transform(this, nativeMapView, cameraChangeDispatcher);
+ Transform transform = new Transform(this, nativeMapView, cameraDispatcher);
// MapboxMap
- mapboxMap = new MapboxMap(nativeMapView, transform, uiSettings, proj, registerTouchListener,
- annotationManager, cameraChangeDispatcher);
+ mapboxMap = new MapboxMap(nativeMapView, transform, uiSettings, proj, registerTouchListener, cameraDispatcher);
+ mapboxMap.injectAnnotationManager(annotationManager);
// user input
mapGestureDetector = new MapGestureDetector(context, transform, proj, uiSettings,
- annotationManager, cameraChangeDispatcher);
+ annotationManager, cameraDispatcher);
mapKeyListener = new MapKeyListener(transform, uiSettings, mapGestureDetector);
// compass
- compassView.injectCompassAnimationListener(createCompassAnimationListener(cameraChangeDispatcher));
- compassView.setOnClickListener(createCompassClickListener(cameraChangeDispatcher));
+ compassView.injectCompassAnimationListener(createCompassAnimationListener(cameraDispatcher));
+ compassView.setOnClickListener(createCompassClickListener(cameraDispatcher));
// LocationComponent
mapboxMap.injectLocationComponent(new LocationComponent(mapboxMap));
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java
index c20007481b..186ad447d6 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java
@@ -58,31 +58,27 @@ public final class MapboxMap {
private static final String TAG = "Mbgl-MapboxMap";
private final NativeMapView nativeMapView;
-
private final UiSettings uiSettings;
private final Projection projection;
private final Transform transform;
- private final AnnotationManager annotationManager;
private final CameraChangeDispatcher cameraChangeDispatcher;
-
private final OnGesturesManagerInteractionListener onGesturesManagerInteractionListener;
+ private final List styleLoadedCallbacks = new ArrayList<>();
private LocationComponent locationComponent;
+ private AnnotationManager annotationManager;
+
@Nullable
private MapboxMap.OnFpsChangedListener onFpsChangedListener;
- private final List styleLoadedCallbacks = new ArrayList<>();
-
@Nullable
private Style style;
MapboxMap(NativeMapView map, Transform transform, UiSettings ui, Projection projection,
- OnGesturesManagerInteractionListener listener, AnnotationManager annotations,
- CameraChangeDispatcher cameraChangeDispatcher) {
+ OnGesturesManagerInteractionListener listener, CameraChangeDispatcher cameraChangeDispatcher) {
this.nativeMapView = map;
this.uiSettings = ui;
this.projection = projection;
- this.annotationManager = annotations.bind(this);
this.transform = transform;
this.onGesturesManagerInteractionListener = listener;
this.cameraChangeDispatcher = cameraChangeDispatcher;
@@ -762,7 +758,7 @@ public final class MapboxMap {
* will be triggered.
*
*
- * @param style The bundled style
+ * @param style The bundled style
* @param callback The callback to be invoked when the style has loaded
* @see Style
*/
@@ -793,7 +789,7 @@ public final class MapboxMap {
* and {@link MapView.OnDidFailLoadingMapListener} callback will be triggered.
*
*
- * @param builder The style builder
+ * @param builder The style builder
* @param callback The callback to be invoked when the style has loaded
* @see Style
*/
@@ -820,7 +816,7 @@ public final class MapboxMap {
}
}
- private void notifyStyleLoaded() {
+ void notifyStyleLoaded() {
if (style != null) {
style.onDidFinishLoadingStyle();
locationComponent.onFinishLoadingStyle();
@@ -1814,6 +1810,10 @@ public final class MapboxMap {
this.locationComponent = locationComponent;
}
+ void injectAnnotationManager(AnnotationManager annotationManager) {
+ this.annotationManager = annotationManager.bind(this);
+ }
+
/**
* Returns the {@link LocationComponent} that can be used to display user's location on the map.
*
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Style.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Style.java
index 04153916eb..5e2439cba3 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Style.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Style.java
@@ -603,6 +603,22 @@ public class Style {
return styleJson;
}
+ List