summaryrefslogtreecommitdiff
path: root/platform/android
diff options
context:
space:
mode:
authorTobrun <tobrun@mapbox.com>2016-02-18 13:31:09 +0100
committerTobrun <tobrun@mapbox.com>2016-02-18 16:06:10 +0100
commite4fa1816a71dea9c03dde822eab5cd284df3e5f9 (patch)
treea76e8d63d317d6d28ec2a690d6e417322acb5c62 /platform/android
parentdd7bbc024ae6b27054b157f14457e52ed79a6b92 (diff)
downloadqtlocation-mapboxgl-e4fa1816a71dea9c03dde822eab5cd284df3e5f9.tar.gz
[android] #4009 - add tests for tracking settings, optimise architecture to make it testable through unit tests
Diffstat (limited to 'platform/android')
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java58
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TrackingSettings.java26
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UserLocationView.java10
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/maps/TrackingSettingsTest.java53
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/maps/UiSettingsTest.java7
5 files changed, 92 insertions, 62 deletions
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 2fb83b46ca..8bdffcbd44 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
@@ -363,10 +363,11 @@ public class MapView extends FrameLayout {
// User did not accept location permissions
}
+ TrackingSettings trackingSettings = mMapboxMap.getTrackingSettings();
//noinspection ResourceType
- setMyLocationTrackingMode(savedInstanceState.getInt(MapboxConstants.STATE_MY_LOCATION_TRACKING_MODE, MyLocationTracking.TRACKING_NONE));
+ trackingSettings.setMyLocationTrackingMode(savedInstanceState.getInt(MapboxConstants.STATE_MY_LOCATION_TRACKING_MODE, MyLocationTracking.TRACKING_NONE));
//noinspection ResourceType
- setMyBearingTrackingMode(savedInstanceState.getInt(MapboxConstants.STATE_MY_BEARING_TRACKING_MODE, MyBearingTracking.NONE));
+ trackingSettings.setMyBearingTrackingMode(savedInstanceState.getInt(MapboxConstants.STATE_MY_BEARING_TRACKING_MODE, MyBearingTracking.NONE));
} else {
// Force a check for Telemetry
validateTelemetryServiceConfigured();
@@ -411,8 +412,12 @@ public class MapView extends FrameLayout {
outState.putString(MapboxConstants.STATE_ACCESS_TOKEN, mMapboxMap.getAccessToken());
outState.putLong(MapboxConstants.STATE_DEFAULT_TRANSITION_DURATION, mNativeMapView.getDefaultTransitionDuration());
outState.putBoolean(MapboxConstants.STATE_MY_LOCATION_ENABLED, mMapboxMap.isMyLocationEnabled());
- outState.putInt(MapboxConstants.STATE_MY_LOCATION_TRACKING_MODE, getMyLocationTrackingMode());
- outState.putInt(MapboxConstants.STATE_MY_BEARING_TRACKING_MODE, getMyBearingTrackingMode());
+
+
+ // TrackingSettings
+ TrackingSettings trackingSettings = mMapboxMap.getTrackingSettings();
+ outState.putInt(MapboxConstants.STATE_MY_LOCATION_TRACKING_MODE, trackingSettings.getMyLocationTrackingMode());
+ outState.putInt(MapboxConstants.STATE_MY_BEARING_TRACKING_MODE, trackingSettings.getMyBearingTrackingMode());
// UiSettings
UiSettings uiSettings = mMapboxMap.getUiSettings();
@@ -1148,7 +1153,7 @@ public class MapView extends FrameLayout {
/**
* Sets the distance from the edges of the map view’s frame to the edges of the map
* view’s logical viewport.
- * <p>
+ * <p/>
* When the value of this property is equal to {0,0,0,0}, viewport
* properties such as `centerCoordinate` assume a viewport that matches the map
* view’s frame. Otherwise, those properties are inset, excluding part of the
@@ -1416,7 +1421,7 @@ public class MapView extends FrameLayout {
/**
* Sets Bearing in degrees
- * <p>
+ * <p/>
* NOTE: Used by UserLocationView
*
* @param bearing Bearing in degrees
@@ -1550,7 +1555,7 @@ public class MapView extends FrameLayout {
}
// Single finger double tap
- if (mUserLocationView.getMyLocationTrackingMode() == MyLocationTracking.TRACKING_NONE) {
+ if (mMapboxMap.getTrackingSettings().isLocationTrackingDisabled()) {
// Zoom in on gesture
zoom(true, e.getX(), e.getY());
} else {
@@ -1775,7 +1780,7 @@ public class MapView extends FrameLayout {
mQuickZoom = !mTwoTap;
// Scale the map
- if (mMapboxMap.getUiSettings().isScrollGesturesEnabled() && !mQuickZoom && mUserLocationView.getMyLocationTrackingMode() == MyLocationTracking.TRACKING_NONE) {
+ if (mMapboxMap.getUiSettings().isScrollGesturesEnabled() && !mQuickZoom && mMapboxMap.getTrackingSettings().isLocationTrackingDisabled()) {
// around gesture
mNativeMapView.scaleBy(detector.getScaleFactor(), detector.getFocusX() / mScreenDensity, detector.getFocusY() / mScreenDensity);
} else {
@@ -1853,7 +1858,7 @@ public class MapView extends FrameLayout {
bearing += detector.getRotationDegreesDelta();
// Rotate the map
- if (mUserLocationView.getMyLocationTrackingMode() == MyLocationTracking.TRACKING_NONE) {
+ if (mMapboxMap.getTrackingSettings().isLocationTrackingDisabled()) {
// around gesture
mNativeMapView.setBearing(bearing,
detector.getFocusX() / mScreenDensity,
@@ -2379,7 +2384,6 @@ public class MapView extends FrameLayout {
if (myLocationTrackingMode != MyLocationTracking.TRACKING_NONE && !mMapboxMap.isMyLocationEnabled()) {
mMapboxMap.setMyLocationEnabled(true);
}
-
mUserLocationView.setMyLocationTrackingMode(myLocationTrackingMode);
MapboxMap.OnMyLocationTrackingModeChangeListener listener = mMapboxMap.getOnMyLocationTrackingModeChangeListener();
if (listener != null) {
@@ -2388,19 +2392,6 @@ public class MapView extends FrameLayout {
}
/**
- * Returns the current user location tracking mode.
- *
- * @return The current user location tracking mode.
- * One of the values from {@link MyLocationTracking.Mode}.
- * @see MyLocationTracking.Mode
- */
- @UiThread
- @MyLocationTracking.Mode
- int getMyLocationTrackingMode() {
- return mUserLocationView.getMyLocationTrackingMode();
- }
-
- /**
* <p>
* Set the current my bearing tracking mode.
* </p>
@@ -2426,26 +2417,11 @@ public class MapView extends FrameLayout {
}
}
- /**
- * Returns the current user bearing tracking mode.
- * See {@link MyBearingTracking} for possible return values.
- *
- * @return the current user bearing tracking mode.
- * @see MyBearingTracking
- */
- @UiThread
- @MyLocationTracking.Mode
- int getMyBearingTrackingMode() {
- //noinspection ResourceType
- return mUserLocationView.getMyBearingTrackingMode();
- }
-
private void resetTrackingModes() {
try {
- //noinspection ResourceType
- setMyLocationTrackingMode(MyLocationTracking.TRACKING_NONE);
- //noinspection ResourceType
- setMyBearingTrackingMode(MyBearingTracking.NONE);
+ TrackingSettings trackingSettings = mMapboxMap.getTrackingSettings();
+ trackingSettings.setMyLocationTrackingMode(MyLocationTracking.TRACKING_NONE);
+ trackingSettings.setMyBearingTrackingMode(MyBearingTracking.NONE);
} catch (SecurityException ignore) {
// User did not accept location permissions
}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TrackingSettings.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TrackingSettings.java
index 57faefb92e..543ff19e56 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TrackingSettings.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TrackingSettings.java
@@ -1,8 +1,6 @@
package com.mapbox.mapboxsdk.maps;
-import android.Manifest;
import android.support.annotation.NonNull;
-import android.support.annotation.RequiresPermission;
import android.support.annotation.UiThread;
import com.mapbox.mapboxsdk.constants.MyBearingTracking;
@@ -14,6 +12,12 @@ public class TrackingSettings {
private UiSettings uiSettings;
private boolean dismissTrackingOnGesture = true;
+ @MyLocationTracking.Mode
+ private int mMyLocationTrackingMode;
+
+ @MyBearingTracking.Mode
+ private int mMyBearingTrackingMode;
+
TrackingSettings(@NonNull MapView mapView, UiSettings uiSettings) {
this.mapView = mapView;
this.uiSettings = uiSettings;
@@ -33,10 +37,8 @@ public class TrackingSettings {
* @see MyLocationTracking
*/
@UiThread
- @RequiresPermission(anyOf = {
- Manifest.permission.ACCESS_COARSE_LOCATION,
- Manifest.permission.ACCESS_FINE_LOCATION})
public void setMyLocationTrackingMode(@MyLocationTracking.Mode int myLocationTrackingMode) {
+ mMyLocationTrackingMode = myLocationTrackingMode;
mapView.setMyLocationTrackingMode(myLocationTrackingMode);
validateGesturesForTrackingModes();
}
@@ -51,7 +53,7 @@ public class TrackingSettings {
@UiThread
@MyLocationTracking.Mode
public int getMyLocationTrackingMode() {
- return mapView.getMyLocationTrackingMode();
+ return mMyLocationTrackingMode;
}
/**
@@ -70,10 +72,8 @@ public class TrackingSettings {
* @see MyBearingTracking
*/
@UiThread
- @RequiresPermission(anyOf = {
- Manifest.permission.ACCESS_COARSE_LOCATION,
- Manifest.permission.ACCESS_FINE_LOCATION})
public void setMyBearingTrackingMode(@MyBearingTracking.Mode int myBearingTrackingMode) {
+ mMyBearingTrackingMode = myBearingTrackingMode;
mapView.setMyBearingTrackingMode(myBearingTrackingMode);
}
@@ -87,7 +87,7 @@ public class TrackingSettings {
@UiThread
@MyLocationTracking.Mode
public int getMyBearingTrackingMode() {
- return mapView.getMyBearingTrackingMode();
+ return mMyBearingTrackingMode;
}
public boolean isDismissTrackingOnGesture() {
@@ -100,7 +100,7 @@ public class TrackingSettings {
}
private void validateGesturesForTrackingModes() {
- if(!dismissTrackingOnGesture) {
+ if (!dismissTrackingOnGesture) {
int myLocationTrackingMode = getMyLocationTrackingMode();
int myBearingTrackingMode = getMyBearingTrackingMode();
@@ -114,4 +114,8 @@ public class TrackingSettings {
}
}
}
+
+ public boolean isLocationTrackingDisabled(){
+ return mMyLocationTrackingMode == MyLocationTracking.TRACKING_NONE;
+ }
}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UserLocationView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UserLocationView.java
index 70976dde7c..c90a35803c 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UserLocationView.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UserLocationView.java
@@ -255,11 +255,6 @@ public final class UserLocationView extends View {
}
}
- @MyLocationTracking.Mode
- public int getMyLocationTrackingMode() {
- return mMyLocationTrackingMode;
- }
-
@Override
public void setEnabled(boolean enabled) {
super.setEnabled(enabled);
@@ -412,11 +407,6 @@ public final class UserLocationView extends View {
update();
}
- @MyBearingTracking.Mode
- public int getMyBearingTrackingMode() {
- return mMyBearingTrackingMode;
- }
-
private class MyBearingListener implements SensorEventListener {
private SensorManager mSensorManager;
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/maps/TrackingSettingsTest.java b/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/maps/TrackingSettingsTest.java
new file mode 100644
index 0000000000..266bbadd95
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/maps/TrackingSettingsTest.java
@@ -0,0 +1,53 @@
+package com.mapbox.mapboxsdk.maps;
+
+import com.mapbox.mapboxsdk.constants.MyBearingTracking;
+import com.mapbox.mapboxsdk.constants.MyLocationTracking;
+
+import org.junit.Test;
+import org.mockito.InjectMocks;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.mockito.Mockito.mock;
+
+public class TrackingSettingsTest {
+
+ @InjectMocks
+ MapView mMapView = mock(MapView.class);
+
+ @Test
+ public void testSanity() {
+ TrackingSettings trackingSettings = new TrackingSettings(mMapView, new UiSettings(mMapView));
+ assertNotNull("trackingsettings should not be null", trackingSettings);
+ }
+
+ @Test
+ public void testMyLocationTrackingMode() {
+ TrackingSettings trackingSettings = new TrackingSettings(mMapView, new UiSettings(mMapView));
+ trackingSettings.setMyLocationTrackingMode(MyLocationTracking.TRACKING_FOLLOW);
+ assertEquals("MyLocationTrackingMode should match", MyLocationTracking.TRACKING_FOLLOW, trackingSettings.getMyLocationTrackingMode());
+ }
+
+ @Test
+ public void testMyBearingTrackingMode() {
+ TrackingSettings trackingSettings = new TrackingSettings(mMapView, new UiSettings(mMapView));
+ trackingSettings.setMyBearingTrackingMode(MyBearingTracking.COMPASS);
+ assertEquals("MyLocationTrackingMode should match", MyBearingTracking.COMPASS, trackingSettings.getMyBearingTrackingMode());
+ }
+
+ @Test
+ public void testDismissTrackingModesOnGesture() {
+ TrackingSettings trackingSettings = new TrackingSettings(mMapView, new UiSettings(mMapView));
+ trackingSettings.setDismissTrackingOnGesture(false);
+ assertFalse("DismissTrackingOnGesture should be false", trackingSettings.isDismissTrackingOnGesture());
+ }
+
+ @Test
+ public void testValidateGesturesForTrackingModes(){
+ TrackingSettings trackingSettings = new TrackingSettings(mMapView, new UiSettings(mMapView));
+ trackingSettings.setDismissTrackingOnGesture(false);
+ trackingSettings.setMyLocationTrackingMode(MyLocationTracking.TRACKING_FOLLOW);
+ assertFalse("DismissTrackingOnGesture should be false", trackingSettings.isDismissTrackingOnGesture());
+ }
+}
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/maps/UiSettingsTest.java b/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/maps/UiSettingsTest.java
index 9c867bf776..79ed1926de 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/maps/UiSettingsTest.java
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/maps/UiSettingsTest.java
@@ -204,4 +204,11 @@ public class UiSettingsTest {
assertEquals("Scroll gesture should be disabled", false, uiSettings.isScrollGesturesEnabled());
}
+
+ @Test
+ public void testInvalidate() {
+ UiSettings uiSettings = new UiSettings(mMapView);
+ uiSettings.invalidate();
+ }
+
} \ No newline at end of file