diff options
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/location')
10 files changed, 0 insertions, 3194 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/location/CompassEngineTest.java b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/location/CompassEngineTest.java deleted file mode 100644 index bebd828118..0000000000 --- a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/location/CompassEngineTest.java +++ /dev/null @@ -1,89 +0,0 @@ -package com.mapbox.mapboxsdk.location; - -import android.hardware.Sensor; -import android.hardware.SensorEventListener; -import android.hardware.SensorManager; -import android.view.WindowManager; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.junit.MockitoJUnitRunner; - -import static com.mapbox.mapboxsdk.location.LocationComponentCompassEngine.SENSOR_DELAY_MICROS; -import static junit.framework.Assert.assertEquals; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -@RunWith(MockitoJUnitRunner.class) -public class CompassEngineTest { - - private LocationComponentCompassEngine compassEngine; - - @Mock - private WindowManager windowManager; - - @Mock - private SensorManager sensorManager; - - @Mock - private Sensor compassSensor; - - @Mock - private CompassListener compassListener; - - @Before - public void setUp() throws Exception { - when(sensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR)).thenReturn(compassSensor); - compassEngine = new LocationComponentCompassEngine(windowManager, sensorManager); - } - - @Test - public void lastKnownCompassBearingAccuracyDefault() { - assertEquals("Last accuracy should match", compassEngine.getLastAccuracySensorStatus(), 0); - } - - @Test - public void lastKnownCompassAccuracyStatusValue() { - Sensor sensor = mock(Sensor.class); - compassEngine.onAccuracyChanged(sensor, 2); - assertEquals("Last accuracy should match", compassEngine.getLastAccuracySensorStatus(), 2); - } - - @Test - public void whenGyroscopeIsNull_fallbackToGravity() { - SensorManager sensorManager = mock(SensorManager.class); - when(sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE)).thenReturn(null); - new LocationComponentCompassEngine(windowManager, sensorManager); - - verify(sensorManager, times(1)).getDefaultSensor(Sensor.TYPE_ACCELEROMETER); - } - - @Test - public void whenGyroscopeIsNull_fallbackToMagneticField() { - SensorManager sensorManager = mock(SensorManager.class); - when(sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE)).thenReturn(null); - new LocationComponentCompassEngine(windowManager, sensorManager); - - verify(sensorManager, times(1)).getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD); - } - - @Test - public void listener_registerOnAdd() { - compassEngine.addCompassListener(compassListener); - verify(sensorManager) - .registerListener(any(SensorEventListener.class), eq(compassSensor), eq(SENSOR_DELAY_MICROS)); - } - - @Test - public void listener_unregisterOnRemove() { - compassEngine.addCompassListener(compassListener); - compassEngine.removeCompassListener(compassListener); - verify(sensorManager).unregisterListener(any(SensorEventListener.class), eq(compassSensor)); - } -} diff --git a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/location/LocationAnimatorCoordinatorTest.kt b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/location/LocationAnimatorCoordinatorTest.kt deleted file mode 100644 index 1b927d213a..0000000000 --- a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/location/LocationAnimatorCoordinatorTest.kt +++ /dev/null @@ -1,532 +0,0 @@ -package com.mapbox.mapboxsdk.location - -import android.animation.Animator -import android.location.Location -import android.util.SparseArray -import android.view.animation.LinearInterpolator -import com.mapbox.mapboxsdk.camera.CameraPosition -import com.mapbox.mapboxsdk.geometry.LatLng -import com.mapbox.mapboxsdk.location.LocationComponentConstants.DEFAULT_TRACKING_TILT_ANIM_DURATION -import com.mapbox.mapboxsdk.location.LocationComponentConstants.DEFAULT_TRACKING_ZOOM_ANIM_DURATION -import com.mapbox.mapboxsdk.location.MapboxAnimator.* -import com.mapbox.mapboxsdk.location.modes.CameraMode -import com.mapbox.mapboxsdk.location.modes.RenderMode -import com.mapbox.mapboxsdk.maps.MapboxMap -import com.mapbox.mapboxsdk.maps.Projection -import io.mockk.* -import junit.framework.Assert.assertEquals -import junit.framework.Assert.assertTrue -import org.junit.Before -import org.junit.Test -import org.junit.runner.RunWith -import org.mockito.Mockito -import org.robolectric.RobolectricTestRunner - -@RunWith(RobolectricTestRunner::class) -class LocationAnimatorCoordinatorTest { - - private lateinit var locationAnimatorCoordinator: LocationAnimatorCoordinator - private val cameraPosition: CameraPosition = CameraPosition.DEFAULT - - private val animatorProvider: MapboxAnimatorProvider = mockk() - private val animatorSetProvider: MapboxAnimatorSetProvider = mockk() - - private val projection: Projection = mockk() - - @Before - fun setUp() { - locationAnimatorCoordinator = LocationAnimatorCoordinator(projection, animatorSetProvider, animatorProvider) - configureAnimatorProvider() - every { projection.getMetersPerPixelAtLatitude(any()) } answers { 1.0 } - every { animatorSetProvider.startAnimation(any(), any(), any()) } answers {} - locationAnimatorCoordinator.updateAnimatorListenerHolders(getListenerHoldersSet( - ANIMATOR_LAYER_LATLNG, - ANIMATOR_CAMERA_LATLNG, - ANIMATOR_LAYER_GPS_BEARING, - ANIMATOR_LAYER_COMPASS_BEARING, - ANIMATOR_CAMERA_GPS_BEARING, - ANIMATOR_CAMERA_COMPASS_BEARING, - ANIMATOR_LAYER_ACCURACY, - ANIMATOR_ZOOM, - ANIMATOR_TILT - )) - } - - private fun configureAnimatorProvider() { - // workaround https://github.com/mockk/mockk/issues/229#issuecomment-457816131 - registerInstanceFactory { AnimationsValueChangeListener<Float> {} } - registerInstanceFactory { AnimationsValueChangeListener<LatLng> {} } - val previousFloatSlot = slot<Float>() - val targetFloatSlot = slot<Float>() - val listenerSlot = slot<MapboxAnimator.AnimationsValueChangeListener<*>>() - val maxFpsSlot = slot<Int>() - every { - animatorProvider.floatAnimator(capture(previousFloatSlot), capture(targetFloatSlot), capture(listenerSlot), capture(maxFpsSlot)) - } answers { - MapboxFloatAnimator(previousFloatSlot.captured, targetFloatSlot.captured, listenerSlot.captured, maxFpsSlot.captured) - } - - val previousLatLngSlot = slot<LatLng>() - val targetLatLngSlot = slot<LatLng>() - every { - animatorProvider.latLngAnimator(capture(previousLatLngSlot), capture(targetLatLngSlot), capture(listenerSlot), capture(maxFpsSlot)) - } answers { - MapboxLatLngAnimator(previousLatLngSlot.captured, targetLatLngSlot.captured, listenerSlot.captured, maxFpsSlot.captured) - } - - val callback = slot<MapboxMap.CancelableCallback>() - every { - animatorProvider.cameraAnimator(capture(previousFloatSlot), capture(targetFloatSlot), capture(listenerSlot), capture(callback)) - } answers { - MapboxCameraAnimatorAdapter(previousFloatSlot.captured, targetFloatSlot.captured, listenerSlot.captured, callback.captured) - } - every { - animatorProvider.cameraAnimator(capture(previousFloatSlot), capture(targetFloatSlot), capture(listenerSlot), null) - } answers { - MapboxCameraAnimatorAdapter(previousFloatSlot.captured, targetFloatSlot.captured, listenerSlot.captured, null) - } - } - - @Test - fun feedNewLocation_animatorsAreCreated() { - locationAnimatorCoordinator.feedNewLocation(Location(""), cameraPosition, false) - - assertTrue(locationAnimatorCoordinator.animatorArray[ANIMATOR_CAMERA_LATLNG] != null) - assertTrue(locationAnimatorCoordinator.animatorArray[ANIMATOR_CAMERA_GPS_BEARING] != null) - assertTrue(locationAnimatorCoordinator.animatorArray[ANIMATOR_LAYER_LATLNG] != null) - assertTrue(locationAnimatorCoordinator.animatorArray[ANIMATOR_LAYER_GPS_BEARING] != null) - } - - @Test - fun feedNewLocation_animatorValue() { - val location = Location("") - location.latitude = 51.0 - location.longitude = 17.0 - location.bearing = 35f - locationAnimatorCoordinator.feedNewLocation(location, cameraPosition, false) - - val cameraLatLngTarget = locationAnimatorCoordinator.animatorArray[ANIMATOR_CAMERA_LATLNG]?.target as LatLng - assertEquals(cameraLatLngTarget.latitude, cameraLatLngTarget.latitude) - - val layerLatLngTarget = locationAnimatorCoordinator.animatorArray[ANIMATOR_LAYER_LATLNG]?.target as LatLng - assertEquals(layerLatLngTarget.latitude, layerLatLngTarget.latitude) - - val cameraBearingTarget = locationAnimatorCoordinator.animatorArray[ANIMATOR_CAMERA_GPS_BEARING]?.target as Float - assertEquals(location.bearing, cameraBearingTarget) - - val layerBearingTarget = locationAnimatorCoordinator.animatorArray[ANIMATOR_LAYER_GPS_BEARING]?.target as Float - assertEquals(location.bearing, layerBearingTarget) - } - - @Test - fun feedNewLocation_animatorValue_correctRotation_1() { - val location = Location("") - location.latitude = 51.0 - location.longitude = 17.0 - location.bearing = 0f - - val animator = mockk<MapboxFloatAnimator>(relaxed = true) - every { animator.animatedValue } returns 270f - locationAnimatorCoordinator.animatorArray.put(ANIMATOR_LAYER_GPS_BEARING, animator) - - locationAnimatorCoordinator.feedNewLocation(location, cameraPosition, false) - - val layerBearingTarget = locationAnimatorCoordinator.animatorArray[ANIMATOR_LAYER_GPS_BEARING]?.target as Float - assertEquals(360f, layerBearingTarget) - } - - @Test - fun feedNewLocation_animatorValue_correctRotation_2() { - val location = Location("") - location.latitude = 51.0 - location.longitude = 17.0 - location.bearing = 90f - - val animator = mockk<MapboxFloatAnimator>(relaxed = true) - every { animator.animatedValue } returns 280f - locationAnimatorCoordinator.animatorArray.put(ANIMATOR_LAYER_GPS_BEARING, animator) - - locationAnimatorCoordinator.feedNewLocation(location, cameraPosition, false) - - val layerBearingTarget = locationAnimatorCoordinator.animatorArray[ANIMATOR_LAYER_GPS_BEARING]?.target as Float - assertEquals(450f, layerBearingTarget) - } - - @Test - fun feedNewLocation_animatorValue_correctRotation_3() { - val location = Location("") - location.latitude = 51.0 - location.longitude = 17.0 - location.bearing = 300f - - val animator = mockk<MapboxFloatAnimator>(relaxed = true) - every { animator.animatedValue } returns 450f - locationAnimatorCoordinator.animatorArray.put(ANIMATOR_LAYER_GPS_BEARING, animator) - - locationAnimatorCoordinator.feedNewLocation(location, cameraPosition, false) - - val layerBearingTarget = locationAnimatorCoordinator.animatorArray[ANIMATOR_LAYER_GPS_BEARING]?.target as Float - assertEquals(-60f, layerBearingTarget) - } - - @Test - fun feedNewLocation_animatorValue_correctRotation_4() { - val location = Location("") - location.latitude = 51.0 - location.longitude = 17.0 - location.bearing = 350f - - val animator = mockk<MapboxFloatAnimator>(relaxed = true) - every { animator.animatedValue } returns 10f - locationAnimatorCoordinator.animatorArray.put(ANIMATOR_LAYER_GPS_BEARING, animator) - - locationAnimatorCoordinator.feedNewLocation(location, cameraPosition, false) - - val layerBearingTarget = locationAnimatorCoordinator.animatorArray[ANIMATOR_LAYER_GPS_BEARING]?.target as Float - assertEquals(-10f, layerBearingTarget) - } - - @Test - fun feedNewLocation_animatorValue_correctRotation_5() { - val location = Location("") - location.latitude = 51.0 - location.longitude = 17.0 - location.bearing = 90f - - val animator = mockk<MapboxFloatAnimator>(relaxed = true) - every { animator.animatedValue } returns -280f - locationAnimatorCoordinator.animatorArray.put(ANIMATOR_LAYER_GPS_BEARING, animator) - - locationAnimatorCoordinator.feedNewLocation(location, cameraPosition, false) - - val layerBearingTarget = locationAnimatorCoordinator.animatorArray[ANIMATOR_LAYER_GPS_BEARING]?.target as Float - assertEquals(90f, layerBearingTarget) - } - - @Test - fun feedNewLocation_animatorValue_correctRotation_6() { - val location = Location("") - location.latitude = 51.0 - location.longitude = 17.0 - location.bearing = 270f - - val animator = mockk<MapboxFloatAnimator>(relaxed = true) - every { animator.animatedValue } returns -350f - locationAnimatorCoordinator.animatorArray.put(ANIMATOR_LAYER_GPS_BEARING, animator) - - locationAnimatorCoordinator.feedNewLocation(location, cameraPosition, false) - - val layerBearingTarget = locationAnimatorCoordinator.animatorArray[ANIMATOR_LAYER_GPS_BEARING]?.target as Float - assertEquals(-90f, layerBearingTarget) - } - - @Test - fun feedNewLocation_isNorth_animatorsAreCreated() { - val location = Location("") - location.latitude = 51.0 - location.longitude = 17.0 - location.bearing = 35f - locationAnimatorCoordinator.feedNewLocation(location, cameraPosition, false) - - assertTrue(locationAnimatorCoordinator.animatorArray[ANIMATOR_CAMERA_LATLNG] != null) - assertTrue(locationAnimatorCoordinator.animatorArray[ANIMATOR_CAMERA_GPS_BEARING] != null) - assertTrue(locationAnimatorCoordinator.animatorArray[ANIMATOR_LAYER_LATLNG] != null) - assertTrue(locationAnimatorCoordinator.animatorArray[ANIMATOR_LAYER_GPS_BEARING] != null) - } - - @Test - fun feedNewLocation_isNorth_animatorValue() { - val location = Location("") - location.latitude = 51.0 - location.longitude = 17.0 - location.bearing = 35f - locationAnimatorCoordinator.feedNewLocation(location, cameraPosition, true) - - val cameraLatLngTarget = locationAnimatorCoordinator.animatorArray[ANIMATOR_CAMERA_LATLNG]?.target as LatLng - assertEquals(cameraLatLngTarget.latitude, cameraLatLngTarget.latitude) - - val layerLatLngTarget = locationAnimatorCoordinator.animatorArray[ANIMATOR_LAYER_LATLNG]?.target as LatLng - assertEquals(layerLatLngTarget.latitude, layerLatLngTarget.latitude) - - val cameraBearingTarget = locationAnimatorCoordinator.animatorArray[ANIMATOR_CAMERA_GPS_BEARING]?.target as Float - assertEquals(0f, cameraBearingTarget) - - val layerBearingTarget = locationAnimatorCoordinator.animatorArray[ANIMATOR_LAYER_GPS_BEARING]?.target as Float - assertEquals(location.bearing, layerBearingTarget) - } - - @Test - fun feedNewCompassBearing_animatorsAreCreated() { - locationAnimatorCoordinator.feedNewCompassBearing(77f, cameraPosition) - - assertTrue(locationAnimatorCoordinator.animatorArray[ANIMATOR_CAMERA_COMPASS_BEARING] != null) - assertTrue(locationAnimatorCoordinator.animatorArray[ANIMATOR_LAYER_COMPASS_BEARING] != null) - } - - @Test - fun feedNewCompassBearing_animatorValue() { - val bearing = 77f - locationAnimatorCoordinator.feedNewCompassBearing(bearing, cameraPosition) - - val cameraBearingTarget = locationAnimatorCoordinator.animatorArray[ANIMATOR_CAMERA_COMPASS_BEARING]?.target as Float - assertEquals(bearing, cameraBearingTarget) - - val layerBearingTarget = locationAnimatorCoordinator.animatorArray[ANIMATOR_LAYER_COMPASS_BEARING]?.target as Float - assertEquals(bearing, layerBearingTarget) - } - - @Test - fun feedNewAccuracyRadius_animatorsCreated() { - locationAnimatorCoordinator.feedNewAccuracyRadius(150f, false) - - assertTrue(locationAnimatorCoordinator.animatorArray[ANIMATOR_LAYER_ACCURACY] != null) - } - - @Test - fun feedNewAccuracyRadius_animatorValue() { - val accuracy = 150f - locationAnimatorCoordinator.feedNewAccuracyRadius(accuracy, false) - - val layerAccuracy = locationAnimatorCoordinator.animatorArray[ANIMATOR_LAYER_ACCURACY]?.target as Float - assertEquals(layerAccuracy, accuracy) - } - - @Test - fun feedNewAccuracyRadius_noAnimation_animatorsCreated() { - locationAnimatorCoordinator.feedNewAccuracyRadius(150f, true) - - assertTrue(locationAnimatorCoordinator.animatorArray[ANIMATOR_LAYER_ACCURACY] != null) - } - - @Test - fun feedNewAccuracyRadius_noAnimation_animatorValue() { - val accuracy = 150f - locationAnimatorCoordinator.feedNewAccuracyRadius(accuracy, true) - - val layerAccuracy = locationAnimatorCoordinator.animatorArray[ANIMATOR_LAYER_ACCURACY]?.target as Float - assertEquals(layerAccuracy, accuracy) - } - - @Test - fun feedNewZoomLevel_animatorsCreated() { - locationAnimatorCoordinator.feedNewZoomLevel( - 15.0, - cameraPosition, - DEFAULT_TRACKING_ZOOM_ANIM_DURATION, - null - ) - - assertTrue(locationAnimatorCoordinator.animatorArray[ANIMATOR_ZOOM] != null) - } - - @Test - fun feedNewZoomLevel_animatorValue() { - val zoom = 15.0f - locationAnimatorCoordinator.feedNewZoomLevel( - zoom.toDouble(), - cameraPosition, - DEFAULT_TRACKING_ZOOM_ANIM_DURATION, - null - ) - - val animator = locationAnimatorCoordinator.animatorArray[ANIMATOR_ZOOM] - assertEquals(zoom, animator.target) - verify { animatorSetProvider.startAnimation(eq(listOf(animator)), any<LinearInterpolator>(), DEFAULT_TRACKING_ZOOM_ANIM_DURATION) } - } - - @Test - fun feedNewTiltLevel_animatorsCreated() { - locationAnimatorCoordinator.feedNewTilt( - 30.0, - cameraPosition, - DEFAULT_TRACKING_TILT_ANIM_DURATION, - null - ) - - assertTrue(locationAnimatorCoordinator.animatorArray[ANIMATOR_TILT] != null) - } - - @Test - fun feedNewTiltLevel_animatorValue() { - val tilt = 30.0f - locationAnimatorCoordinator.feedNewTilt( - tilt.toDouble(), - cameraPosition, - DEFAULT_TRACKING_TILT_ANIM_DURATION, - null - ) - - val animator = locationAnimatorCoordinator.animatorArray[ANIMATOR_TILT] - assertEquals(tilt, animator.target) - verify { animatorSetProvider.startAnimation(eq(listOf(animator)), any<LinearInterpolator>(), DEFAULT_TRACKING_TILT_ANIM_DURATION) } - } - - @Test - fun cancelAllAnimators() { - locationAnimatorCoordinator.feedNewLocation(Location(""), cameraPosition, true) - locationAnimatorCoordinator.cancelAllAnimations() - - assertTrue(locationAnimatorCoordinator.animatorArray[ANIMATOR_CAMERA_LATLNG] == null) - } - - @Test - fun cancelZoomAnimators() { - locationAnimatorCoordinator.feedNewZoomLevel( - 15.0, - cameraPosition, - DEFAULT_TRACKING_ZOOM_ANIM_DURATION, - null - ) - locationAnimatorCoordinator.cancelZoomAnimation() - - assertTrue(locationAnimatorCoordinator.animatorArray[ANIMATOR_ZOOM] == null) - } - - @Test - fun cancelTiltAnimation() { - locationAnimatorCoordinator.feedNewTilt( - 30.0, - cameraPosition, - DEFAULT_TRACKING_TILT_ANIM_DURATION, - null - ) - - locationAnimatorCoordinator.cancelTiltAnimation() - - assertTrue(locationAnimatorCoordinator.animatorArray[ANIMATOR_TILT] == null) - } - - @Test - fun resetAllCameraAnimations_empty() { - locationAnimatorCoordinator.resetAllCameraAnimations(cameraPosition, false) - assertTrue(locationAnimatorCoordinator.animatorArray.size() == 0) - } - - @Test - fun resetAllLayerAnimations_empty() { - locationAnimatorCoordinator.resetAllLayerAnimations() - assertTrue(locationAnimatorCoordinator.animatorArray.size() == 0) - } - - @Test - fun addNewListener() { - val listener = Mockito.mock(AnimationsValueChangeListener::class.java) - val holder = AnimatorListenerHolder(RenderMode.NORMAL, listener) - val set = HashSet<AnimatorListenerHolder>().also { - it.add(holder) - } - locationAnimatorCoordinator.updateAnimatorListenerHolders(set) - - assertTrue(locationAnimatorCoordinator.listeners.contains(listener)) - } - - @Test - fun updateListeners() { - val listener = Mockito.mock(AnimationsValueChangeListener::class.java) - val holder = AnimatorListenerHolder(RenderMode.NORMAL, listener) - val set = HashSet<AnimatorListenerHolder>().also { - it.add(holder) - } - locationAnimatorCoordinator.updateAnimatorListenerHolders(set) - - val listener2 = Mockito.mock(AnimationsValueChangeListener::class.java) - val holder2 = AnimatorListenerHolder(RenderMode.NORMAL, listener2) - val listener3 = Mockito.mock(AnimationsValueChangeListener::class.java) - val holder3 = AnimatorListenerHolder(CameraMode.TRACKING_GPS, listener3) - val set2 = HashSet<AnimatorListenerHolder>().also { - it.add(holder2) - it.add(holder3) - } - locationAnimatorCoordinator.updateAnimatorListenerHolders(set2) - - assertTrue(locationAnimatorCoordinator.listeners.size() == 2) - assertTrue(locationAnimatorCoordinator.listeners.contains(listener2)) - assertTrue(locationAnimatorCoordinator.listeners.contains(listener3)) - } - - @Test - fun feedNewCompassBearing_withAnimation() { - locationAnimatorCoordinator.setCompassAnimationEnabled(true) - locationAnimatorCoordinator.feedNewCompassBearing(77f, cameraPosition) - - val animators = mutableListOf<Animator>( - locationAnimatorCoordinator.animatorArray[ANIMATOR_LAYER_COMPASS_BEARING], - locationAnimatorCoordinator.animatorArray[ANIMATOR_CAMERA_COMPASS_BEARING]) - - verify(exactly = 1) { animatorSetProvider.startAnimation(eq(animators), ofType(LinearInterpolator::class), eq(LocationComponentConstants.COMPASS_UPDATE_RATE_MS)) } - } - - @Test - fun feedNewCompassBearing_withoutAnimation() { - locationAnimatorCoordinator.setCompassAnimationEnabled(false) - locationAnimatorCoordinator.feedNewCompassBearing(77f, cameraPosition) - - val animators = mutableListOf<Animator>( - locationAnimatorCoordinator.animatorArray[ANIMATOR_LAYER_COMPASS_BEARING], - locationAnimatorCoordinator.animatorArray[ANIMATOR_CAMERA_COMPASS_BEARING]) - - verify(exactly = 1) { animatorSetProvider.startAnimation(eq(animators), ofType(LinearInterpolator::class), eq(0)) } - } - - @Test - fun feedNewAccuracy_withAnimation() { - locationAnimatorCoordinator.setAccuracyAnimationEnabled(true) - locationAnimatorCoordinator.feedNewAccuracyRadius(150f, false) - - val animators = mutableListOf<Animator>( - locationAnimatorCoordinator.animatorArray[ANIMATOR_LAYER_ACCURACY]) - - verify(exactly = 1) { animatorSetProvider.startAnimation(eq(animators), ofType(LinearInterpolator::class), eq(LocationComponentConstants.ACCURACY_RADIUS_ANIMATION_DURATION)) } - } - - @Test - fun feedNewAccuracy_withoutAnimation() { - locationAnimatorCoordinator.setAccuracyAnimationEnabled(false) - locationAnimatorCoordinator.feedNewAccuracyRadius(150f, false) - - val animators = mutableListOf<Animator>( - locationAnimatorCoordinator.animatorArray[ANIMATOR_LAYER_ACCURACY]) - - verify(exactly = 1) { animatorSetProvider.startAnimation(eq(animators), ofType(LinearInterpolator::class), eq(0)) } - } - - @Test - fun maxFps_setter() { - locationAnimatorCoordinator.setMaxAnimationFps(5) - assertEquals(5, locationAnimatorCoordinator.maxAnimationFps) - } - - @Test - fun maxFps_moreThanZeroRequired() { - locationAnimatorCoordinator.setMaxAnimationFps(0) - assertEquals(Int.MAX_VALUE, locationAnimatorCoordinator.maxAnimationFps) - locationAnimatorCoordinator.setMaxAnimationFps(-1) - assertEquals(Int.MAX_VALUE, locationAnimatorCoordinator.maxAnimationFps) - } - - @Test - fun maxFps_givenToAnimator() { - locationAnimatorCoordinator.setMaxAnimationFps(5) - locationAnimatorCoordinator.feedNewLocation(Location(""), cameraPosition, false) - verify { animatorProvider.latLngAnimator(any(), any(), any(), 5) } - verify { animatorProvider.floatAnimator(any(), any(), any(), 5) } - } - - private fun getListenerHoldersSet(vararg animatorTypes: Int): Set<AnimatorListenerHolder> { - return HashSet<AnimatorListenerHolder>().also { - for (type in animatorTypes) { - it.add(AnimatorListenerHolder(type, mockk())) - } - } - } -} - -private fun <E> SparseArray<E>.contains(listener: AnimationsValueChangeListener<*>?): Boolean { - for (i in 0 until this.size()) { - val element = this.get(this.keyAt(i)) - if (element == listener) { - return true - } - } - return false -}
\ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/location/LocationCameraControllerTest.java b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/location/LocationCameraControllerTest.java deleted file mode 100644 index d1b8642c31..0000000000 --- a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/location/LocationCameraControllerTest.java +++ /dev/null @@ -1,1001 +0,0 @@ -package com.mapbox.mapboxsdk.location; - -import android.graphics.PointF; -import android.location.Location; - -import com.mapbox.android.gestures.AndroidGesturesManager; -import com.mapbox.android.gestures.MoveGestureDetector; -import com.mapbox.mapboxsdk.camera.CameraPosition; -import com.mapbox.mapboxsdk.camera.CameraUpdate; -import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; -import com.mapbox.mapboxsdk.geometry.LatLng; -import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.Projection; -import com.mapbox.mapboxsdk.maps.Transform; -import com.mapbox.mapboxsdk.maps.UiSettings; - -import junit.framework.Assert; - -import org.junit.Test; -import org.mockito.ArgumentCaptor; -import org.mockito.invocation.InvocationOnMock; -import org.mockito.stubbing.Answer; - -import java.util.Set; - -import static com.mapbox.mapboxsdk.location.LocationComponentConstants.TRANSITION_ANIMATION_DURATION_MS; -import static com.mapbox.mapboxsdk.location.MapboxAnimator.ANIMATOR_CAMERA_COMPASS_BEARING; -import static com.mapbox.mapboxsdk.location.MapboxAnimator.ANIMATOR_CAMERA_GPS_BEARING; -import static com.mapbox.mapboxsdk.location.MapboxAnimator.ANIMATOR_CAMERA_LATLNG; -import static com.mapbox.mapboxsdk.location.MapboxAnimator.ANIMATOR_TILT; -import static com.mapbox.mapboxsdk.location.MapboxAnimator.ANIMATOR_ZOOM; -import static com.mapbox.mapboxsdk.location.modes.CameraMode.NONE; -import static com.mapbox.mapboxsdk.location.modes.CameraMode.NONE_COMPASS; -import static com.mapbox.mapboxsdk.location.modes.CameraMode.NONE_GPS; -import static com.mapbox.mapboxsdk.location.modes.CameraMode.TRACKING; -import static com.mapbox.mapboxsdk.location.modes.CameraMode.TRACKING_COMPASS; -import static com.mapbox.mapboxsdk.location.modes.CameraMode.TRACKING_GPS; -import static com.mapbox.mapboxsdk.location.modes.CameraMode.TRACKING_GPS_NORTH; -import static junit.framework.Assert.assertNull; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.ArgumentMatchers.nullable; -import static org.mockito.Mockito.doAnswer; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -public class LocationCameraControllerTest { - - @Test - public void setCameraMode_mapTransitionsAreCancelled() { - MapboxMap mapboxMap = mock(MapboxMap.class); - LocationCameraController camera = buildCamera(mapboxMap); - camera.initializeOptions(mock(LocationComponentOptions.class)); - - camera.setCameraMode(TRACKING_GPS); - - verify(mapboxMap).cancelTransitions(); - } - - @Test - public void setCameraMode_gestureThresholdIsAdjusted() { - MoveGestureDetector moveGestureDetector = mock(MoveGestureDetector.class); - LocationCameraController camera = buildCamera(moveGestureDetector); - LocationComponentOptions options = mock(LocationComponentOptions.class); - float moveThreshold = 5f; - when(options.trackingInitialMoveThreshold()).thenReturn(moveThreshold); - when(options.trackingGesturesManagement()).thenReturn(true); - camera.initializeOptions(options); - - camera.setCameraMode(TRACKING_GPS); - - verify(moveGestureDetector).setMoveThreshold(moveThreshold); - } - - @Test - public void setCameraMode_gestureThresholdNotAdjustedWhenDisabled() { - MoveGestureDetector moveGestureDetector = mock(MoveGestureDetector.class); - LocationCameraController camera = buildCamera(moveGestureDetector); - LocationComponentOptions options = mock(LocationComponentOptions.class); - float moveThreshold = 5f; - when(options.trackingInitialMoveThreshold()).thenReturn(moveThreshold); - when(options.trackingGesturesManagement()).thenReturn(false); - camera.initializeOptions(options); - - camera.setCameraMode(TRACKING_GPS); - - verify(moveGestureDetector, times(0)).setMoveThreshold(moveThreshold); - verify(moveGestureDetector, times(0)).setMoveThreshold(0f); - } - - @Test - public void setCameraMode_gestureThresholdIsResetWhenNotTracking() { - MoveGestureDetector moveGestureDetector = mock(MoveGestureDetector.class); - LocationCameraController camera = buildCamera(moveGestureDetector); - LocationComponentOptions options = mock(LocationComponentOptions.class); - when(options.trackingGesturesManagement()).thenReturn(true); - camera.initializeOptions(options); - - camera.setCameraMode(NONE); - - verify(moveGestureDetector, times(2)).setMoveThreshold(0f); // one for initialization - } - - @Test - public void setCameraMode_notTrackingAdjustsFocalPoint() { - MapboxMap mapboxMap = mock(MapboxMap.class); - when(mapboxMap.getUiSettings()).thenReturn(mock(UiSettings.class)); - LocationCameraController camera = buildCamera(mapboxMap); - camera.initializeOptions(mock(LocationComponentOptions.class)); - - camera.setCameraMode(TRACKING_GPS); - camera.setCameraMode(NONE); - - verify(mapboxMap.getUiSettings()).setFocalPoint(null); - } - - @Test - public void setCameraMode_trackingChangeListenerCameraDismissedIsCalled() { - OnCameraTrackingChangedListener internalTrackingChangedListener = mock(OnCameraTrackingChangedListener.class); - LocationCameraController camera = buildCamera(internalTrackingChangedListener); - camera.initializeOptions(mock(LocationComponentOptions.class)); - - camera.setCameraMode(TRACKING_GPS); - camera.setCameraMode(NONE); - - verify(internalTrackingChangedListener).onCameraTrackingDismissed(); - } - - @Test - public void setCameraMode_internalCameraTrackingChangeListenerIsCalled() { - OnCameraTrackingChangedListener internalTrackingChangedListener = mock(OnCameraTrackingChangedListener.class); - LocationCameraController camera = buildCamera(internalTrackingChangedListener); - camera.initializeOptions(mock(LocationComponentOptions.class)); - int cameraMode = NONE; - - camera.setCameraMode(cameraMode); - - verify(internalTrackingChangedListener).onCameraTrackingChanged(cameraMode); - } - - @Test - public void setCameraMode_doNotNotifyAboutDuplicates_NONE() { - OnCameraTrackingChangedListener internalTrackingChangedListener = mock(OnCameraTrackingChangedListener.class); - LocationCameraController camera = buildCamera(internalTrackingChangedListener); - camera.initializeOptions(mock(LocationComponentOptions.class)); - int cameraMode = NONE; - - camera.setCameraMode(cameraMode); - camera.setCameraMode(cameraMode); - - verify(internalTrackingChangedListener, times(1)).onCameraTrackingChanged(cameraMode); - } - - @Test - public void setCameraMode_doNotNotifyAboutDuplicates_TRACKING_GPS() { - OnCameraTrackingChangedListener internalTrackingChangedListener = mock(OnCameraTrackingChangedListener.class); - LocationCameraController camera = buildCamera(internalTrackingChangedListener); - camera.initializeOptions(mock(LocationComponentOptions.class)); - int cameraMode = TRACKING_GPS; - - camera.setCameraMode(cameraMode); - camera.setCameraMode(cameraMode); - - verify(internalTrackingChangedListener, times(1)).onCameraTrackingChanged(cameraMode); - } - - @Test - public void setCameraMode_cancelTransitionsWhenSet() { - MapboxMap mapboxMap = mock(MapboxMap.class); - when(mapboxMap.getUiSettings()).thenReturn(mock(UiSettings.class)); - when(mapboxMap.getProjection()).thenReturn(mock(Projection.class)); - LocationCameraController camera = buildCamera(mapboxMap); - camera.initializeOptions(mock(LocationComponentOptions.class)); - - camera.setCameraMode(NONE_COMPASS); - verify(mapboxMap, times(1)).cancelTransitions(); - - camera.setCameraMode(NONE_GPS); - verify(mapboxMap, times(2)).cancelTransitions(); - - camera.setCameraMode(TRACKING); - verify(mapboxMap, times(3)).cancelTransitions(); - - camera.setCameraMode(TRACKING_COMPASS); - verify(mapboxMap, times(4)).cancelTransitions(); - - camera.setCameraMode(TRACKING_GPS); - verify(mapboxMap, times(5)).cancelTransitions(); - - camera.setCameraMode(TRACKING_GPS_NORTH); - verify(mapboxMap, times(6)).cancelTransitions(); - } - - @Test - public void setCameraMode_dontCancelTransitionsWhenNoneSet() { - MapboxMap mapboxMap = mock(MapboxMap.class); - when(mapboxMap.getUiSettings()).thenReturn(mock(UiSettings.class)); - when(mapboxMap.getProjection()).thenReturn(mock(Projection.class)); - LocationCameraController camera = buildCamera(mapboxMap); - camera.initializeOptions(mock(LocationComponentOptions.class)); - - camera.setCameraMode(NONE); - verify(mapboxMap, never()).cancelTransitions(); - } - - @Test - public void onNewLatLngValue_cameraModeTrackingUpdatesLatLng() { - Transform transform = mock(Transform.class); - LocationCameraController camera = buildCamera(transform); - camera.initializeOptions(mock(LocationComponentOptions.class)); - camera.setCameraMode(TRACKING); - LatLng latLng = mock(LatLng.class); - - getAnimationListener(ANIMATOR_CAMERA_LATLNG, camera.getAnimationListeners()).onNewAnimationValue(latLng); - - verify(transform).moveCamera(any(MapboxMap.class), any(CameraUpdate.class), - nullable(MapboxMap.CancelableCallback.class)); - } - - @Test - public void onNewLatLngValue_cameraModeTrackingGpsNorthUpdatesLatLng() { - Transform transform = mock(Transform.class); - LocationCameraController camera = buildCamera(transform); - camera.initializeOptions(mock(LocationComponentOptions.class)); - camera.setCameraMode(TRACKING_GPS_NORTH); - LatLng latLng = mock(LatLng.class); - - getAnimationListener(ANIMATOR_CAMERA_LATLNG, camera.getAnimationListeners()).onNewAnimationValue(latLng); - - verify(transform).moveCamera(any(MapboxMap.class), any(CameraUpdate.class), - nullable(MapboxMap.CancelableCallback.class)); - } - - @Test - public void onNewLatLngValue_cameraModeTrackingGpsUpdatesLatLng() { - Transform transform = mock(Transform.class); - LocationCameraController camera = buildCamera(transform); - camera.initializeOptions(mock(LocationComponentOptions.class)); - camera.setCameraMode(TRACKING_GPS); - LatLng latLng = mock(LatLng.class); - - getAnimationListener(ANIMATOR_CAMERA_LATLNG, camera.getAnimationListeners()).onNewAnimationValue(latLng); - - verify(transform).moveCamera(any(MapboxMap.class), any(CameraUpdate.class), - nullable(MapboxMap.CancelableCallback.class)); - } - - @Test - public void onNewLatLngValue_cameraModeTrackingCompassUpdatesLatLng() { - Transform transform = mock(Transform.class); - LocationCameraController camera = buildCamera(transform); - camera.initializeOptions(mock(LocationComponentOptions.class)); - camera.setCameraMode(TRACKING_COMPASS); - LatLng latLng = mock(LatLng.class); - - getAnimationListener(ANIMATOR_CAMERA_LATLNG, camera.getAnimationListeners()).onNewAnimationValue(latLng); - - verify(transform).moveCamera(any(MapboxMap.class), any(CameraUpdate.class), - nullable(MapboxMap.CancelableCallback.class)); - } - - @Test - public void onNewLatLngValue_cameraModeNoneIgnored() { - Transform transform = mock(Transform.class); - LocationCameraController camera = buildCamera(transform); - camera.initializeOptions(mock(LocationComponentOptions.class)); - camera.setCameraMode(NONE); - - assertNull(getAnimationListener(ANIMATOR_CAMERA_LATLNG, camera.getAnimationListeners())); - verify(transform, times(0)).moveCamera(any(MapboxMap.class), any(CameraUpdate.class), - nullable(MapboxMap.CancelableCallback.class)); - } - - @Test - public void onNewLatLngValue_focalPointIsAdjusted() { - MapboxMap mapboxMap = mock(MapboxMap.class); - UiSettings uiSettings = mock(UiSettings.class); - when(mapboxMap.getUiSettings()).thenReturn(uiSettings); - Projection projection = mock(Projection.class); - PointF pointF = mock(PointF.class); - when(projection.toScreenLocation(any(LatLng.class))).thenReturn(pointF); - when(mapboxMap.getProjection()).thenReturn(projection); - LocationCameraController camera = buildCamera(mapboxMap); - LocationComponentOptions options = mock(LocationComponentOptions.class); - when(options.trackingGesturesManagement()).thenReturn(true); - camera.initializeOptions(options); - camera.setCameraMode(TRACKING); - LatLng latLng = mock(LatLng.class); - - getAnimationListener(ANIMATOR_CAMERA_LATLNG, camera.getAnimationListeners()).onNewAnimationValue(latLng); - - verify(uiSettings).setFocalPoint(pointF); - } - - @Test - public void onNewGpsBearingValue_cameraModeTrackingGpsUpdatesBearing() { - Transform transform = mock(Transform.class); - LocationCameraController camera = buildCamera(transform); - camera.initializeOptions(mock(LocationComponentOptions.class)); - camera.setCameraMode(TRACKING_GPS); - float gpsBearing = 5f; - - getAnimationListener(ANIMATOR_CAMERA_GPS_BEARING, camera.getAnimationListeners()).onNewAnimationValue(gpsBearing); - - verify(transform).moveCamera(any(MapboxMap.class), any(CameraUpdate.class), - nullable(MapboxMap.CancelableCallback.class)); - } - - @Test - public void onNewGpsBearingValue_cameraModeNoneGpsUpdatesBearing() { - Transform transform = mock(Transform.class); - LocationCameraController camera = buildCamera(transform); - camera.initializeOptions(mock(LocationComponentOptions.class)); - camera.setCameraMode(NONE_GPS); - float gpsBearing = 5f; - - getAnimationListener(ANIMATOR_CAMERA_GPS_BEARING, camera.getAnimationListeners()).onNewAnimationValue(gpsBearing); - - verify(transform).moveCamera(any(MapboxMap.class), any(CameraUpdate.class), - nullable(MapboxMap.CancelableCallback.class)); - } - - @Test - public void onNewGpsBearingValue_cameraModeTrackingNorthUpdatesBearing() { - MapboxMap mapboxMap = mock(MapboxMap.class); - Transform transform = mock(Transform.class); - LocationCameraController camera = buildCamera(mapboxMap, transform); - CameraPosition cameraPosition = new CameraPosition.Builder().bearing(7d).build(); - when(mapboxMap.getCameraPosition()).thenReturn(cameraPosition); - camera.initializeOptions(mock(LocationComponentOptions.class)); - camera.setCameraMode(TRACKING_GPS_NORTH); - float gpsBearing = 5f; - - getAnimationListener(ANIMATOR_CAMERA_GPS_BEARING, camera.getAnimationListeners()).onNewAnimationValue(gpsBearing); - - verify(transform).moveCamera(eq(mapboxMap), any(CameraUpdate.class), - nullable(MapboxMap.CancelableCallback.class)); - } - - @Test - public void onNewGpsBearingValue_cameraModeTrackingNorthBearingZeroIgnored() { - MapboxMap mapboxMap = mock(MapboxMap.class); - Transform transform = mock(Transform.class); - LocationCameraController camera = buildCamera(mapboxMap, transform); - CameraPosition cameraPosition = new CameraPosition.Builder().bearing(0d).build(); - when(mapboxMap.getCameraPosition()).thenReturn(cameraPosition); - camera.initializeOptions(mock(LocationComponentOptions.class)); - camera.setCameraMode(TRACKING_GPS_NORTH); - float gpsBearing = 5f; - - getAnimationListener(ANIMATOR_CAMERA_GPS_BEARING, camera.getAnimationListeners()).onNewAnimationValue(gpsBearing); - - verify(transform, times(0)).moveCamera(eq(mapboxMap), any(CameraUpdate.class), - nullable(MapboxMap.CancelableCallback.class)); - } - - @Test - public void onNewGpsBearingValue_cameraModeNoneIgnored() { - Transform transform = mock(Transform.class); - LocationCameraController camera = buildCamera(transform); - camera.initializeOptions(mock(LocationComponentOptions.class)); - camera.setCameraMode(NONE); - - assertNull(getAnimationListener(ANIMATOR_CAMERA_GPS_BEARING, camera.getAnimationListeners())); - verify(transform, times(0)).moveCamera(any(MapboxMap.class), any(CameraUpdate.class), - nullable(MapboxMap.CancelableCallback.class)); - } - - @Test - public void onNewCompassBearingValue_cameraModeTrackingCompassUpdatesBearing() { - Transform transform = mock(Transform.class); - LocationCameraController camera = buildCamera(transform); - camera.initializeOptions(mock(LocationComponentOptions.class)); - camera.setCameraMode(TRACKING_COMPASS); - float compassBearing = 5f; - - getAnimationListener(ANIMATOR_CAMERA_COMPASS_BEARING, camera.getAnimationListeners()) - .onNewAnimationValue(compassBearing); - - verify(transform).moveCamera(any(MapboxMap.class), any(CameraUpdate.class), - nullable(MapboxMap.CancelableCallback.class)); - } - - @Test - public void onNewCompassBearingValue_cameraModeNoneCompassUpdatesBearing() { - Transform transform = mock(Transform.class); - LocationCameraController camera = buildCamera(transform); - camera.initializeOptions(mock(LocationComponentOptions.class)); - camera.setCameraMode(NONE_COMPASS); - float compassBearing = 5f; - - getAnimationListener(ANIMATOR_CAMERA_COMPASS_BEARING, camera.getAnimationListeners()) - .onNewAnimationValue(compassBearing); - - verify(transform).moveCamera(any(MapboxMap.class), any(CameraUpdate.class), - nullable(MapboxMap.CancelableCallback.class)); - } - - @Test - public void onNewCompassBearingValue_cameraModeNoneIgnored() { - Transform transform = mock(Transform.class); - LocationCameraController camera = buildCamera(transform); - camera.initializeOptions(mock(LocationComponentOptions.class)); - camera.setCameraMode(NONE); - - assertNull(getAnimationListener(ANIMATOR_CAMERA_COMPASS_BEARING, camera.getAnimationListeners())); - verify(transform, times(0)).moveCamera(any(MapboxMap.class), any(CameraUpdate.class), - nullable(MapboxMap.CancelableCallback.class)); - } - - @Test - public void onNewZoomValue_cameraIsUpdated() { - Transform transform = mock(Transform.class); - LocationCameraController camera = buildCamera(transform); - camera.initializeOptions(mock(LocationComponentOptions.class)); - camera.setCameraMode(TRACKING); - float zoom = 5f; - - getAnimationListener(ANIMATOR_ZOOM, camera.getAnimationListeners()).onNewAnimationValue(zoom); - - verify(transform).moveCamera(any(MapboxMap.class), any(CameraUpdate.class), - nullable(MapboxMap.CancelableCallback.class)); - } - - @Test - public void onNeTiltValue_cameraIsUpdated() { - Transform transform = mock(Transform.class); - LocationCameraController camera = buildCamera(transform); - camera.initializeOptions(mock(LocationComponentOptions.class)); - camera.setCameraMode(TRACKING); - float tilt = 5f; - - getAnimationListener(ANIMATOR_TILT, camera.getAnimationListeners()).onNewAnimationValue(tilt); - - verify(transform).moveCamera(any(MapboxMap.class), any(CameraUpdate.class), - nullable(MapboxMap.CancelableCallback.class)); - } - - @Test - public void gesturesManagement_enabled() { - MapboxMap mapboxMap = mock(MapboxMap.class); - AndroidGesturesManager initialGesturesManager = mock(AndroidGesturesManager.class); - AndroidGesturesManager internalGesturesManager = mock(AndroidGesturesManager.class); - when(mapboxMap.getGesturesManager()).thenReturn(initialGesturesManager); - LocationCameraController camera = buildCamera(mapboxMap, initialGesturesManager, internalGesturesManager); - LocationComponentOptions options = mock(LocationComponentOptions.class); - when(options.trackingGesturesManagement()).thenReturn(true); - camera.initializeOptions(options); - - verify(mapboxMap).setGesturesManager(internalGesturesManager, true, true); - } - - @Test - public void gesturesManagement_disabled() { - MapboxMap mapboxMap = mock(MapboxMap.class); - AndroidGesturesManager initialGesturesManager = mock(AndroidGesturesManager.class); - AndroidGesturesManager internalGesturesManager = mock(AndroidGesturesManager.class); - when(mapboxMap.getGesturesManager()).thenReturn(internalGesturesManager); - LocationCameraController camera = buildCamera(mapboxMap, initialGesturesManager, internalGesturesManager); - LocationComponentOptions options = mock(LocationComponentOptions.class); - when(options.trackingGesturesManagement()).thenReturn(false); - camera.initializeOptions(options); - - verify(mapboxMap).setGesturesManager(initialGesturesManager, true, true); - } - - @Test - public void gesturesManagement_optionNotChangedInitial() { - MapboxMap mapboxMap = mock(MapboxMap.class); - AndroidGesturesManager initialGesturesManager = mock(AndroidGesturesManager.class); - AndroidGesturesManager internalGesturesManager = mock(AndroidGesturesManager.class); - when(mapboxMap.getGesturesManager()).thenReturn(initialGesturesManager); - LocationCameraController camera = buildCamera(mapboxMap, initialGesturesManager, internalGesturesManager); - LocationComponentOptions options = mock(LocationComponentOptions.class); - when(options.trackingGesturesManagement()).thenReturn(false); - camera.initializeOptions(options); - - verify(mapboxMap, times(0)).setGesturesManager(initialGesturesManager, true, true); - } - - @Test - public void gesturesManagement_optionNotChangedInternal() { - MapboxMap mapboxMap = mock(MapboxMap.class); - AndroidGesturesManager initialGesturesManager = mock(AndroidGesturesManager.class); - AndroidGesturesManager internalGesturesManager = mock(AndroidGesturesManager.class); - when(mapboxMap.getGesturesManager()).thenReturn(internalGesturesManager); - LocationCameraController camera = buildCamera(mapboxMap, initialGesturesManager, internalGesturesManager); - LocationComponentOptions options = mock(LocationComponentOptions.class); - when(options.trackingGesturesManagement()).thenReturn(true); - camera.initializeOptions(options); - - verify(mapboxMap, times(0)).setGesturesManager(internalGesturesManager, true, true); - } - - @Test - public void onMove_notCancellingTransitionWhileNone() { - MapboxMap mapboxMap = mock(MapboxMap.class); - when(mapboxMap.getUiSettings()).thenReturn(mock(UiSettings.class)); - MoveGestureDetector moveGestureDetector = mock(MoveGestureDetector.class); - LocationCameraController camera = buildCamera(mapboxMap); - camera.initializeOptions(mock(LocationComponentOptions.class)); - - camera.setCameraMode(NONE); - camera.onMoveListener.onMove(moveGestureDetector); - verify(mapboxMap, times(0)).cancelTransitions(); - verify(moveGestureDetector, times(0)).interrupt(); - - // testing subsequent calls - camera.onMoveListener.onMove(moveGestureDetector); - verify(mapboxMap, times(0)).cancelTransitions(); - verify(moveGestureDetector, times(0)).interrupt(); - } - - @Test - public void onMove_cancellingTransitionWhileGps() { - MapboxMap mapboxMap = mock(MapboxMap.class); - when(mapboxMap.getUiSettings()).thenReturn(mock(UiSettings.class)); - MoveGestureDetector moveGestureDetector = mock(MoveGestureDetector.class); - LocationCameraController camera = buildCamera(mapboxMap); - camera.initializeOptions(mock(LocationComponentOptions.class)); - - camera.setCameraMode(TRACKING); - camera.onMoveListener.onMove(moveGestureDetector); - verify(mapboxMap, times(1)).cancelTransitions(); - verify(moveGestureDetector, times(1)).interrupt(); - - // testing subsequent calls - camera.onMoveListener.onMove(moveGestureDetector); - verify(mapboxMap, times(1)).cancelTransitions(); - verify(moveGestureDetector, times(1)).interrupt(); - } - - @Test - public void onMove_cancellingTransitionWhileBearing() { - MapboxMap mapboxMap = mock(MapboxMap.class); - MoveGestureDetector moveGestureDetector = mock(MoveGestureDetector.class); - LocationCameraController camera = buildCamera(mapboxMap); - camera.initializeOptions(mock(LocationComponentOptions.class)); - - camera.setCameraMode(NONE_COMPASS); - camera.onMoveListener.onMove(moveGestureDetector); - verify(mapboxMap, times(1)).cancelTransitions(); - verify(moveGestureDetector, times(1)).interrupt(); - - // testing subsequent calls - camera.onMoveListener.onMove(moveGestureDetector); - verify(mapboxMap, times(1)).cancelTransitions(); - verify(moveGestureDetector, times(1)).interrupt(); - } - - @Test - public void transition_locationIsNull() { - MapboxMap mapboxMap = mock(MapboxMap.class); - Transform transform = mock(Transform.class); - LocationCameraController camera = buildCamera(mapboxMap, transform); - camera.initializeOptions(mock(LocationComponentOptions.class)); - OnLocationCameraTransitionListener listener = mock(OnLocationCameraTransitionListener.class); - - camera.setCameraMode(TRACKING, null, TRANSITION_ANIMATION_DURATION_MS, null, null, null, listener); - Assert.assertEquals(TRACKING, camera.getCameraMode()); - verify(listener).onLocationCameraTransitionFinished(TRACKING); - verify(transform, times(0)) - .animateCamera(eq(mapboxMap), any(CameraUpdate.class), any(Integer.class), - any(MapboxMap.CancelableCallback.class)); - } - - @Test - public void transition_notTracking() { - MapboxMap mapboxMap = mock(MapboxMap.class); - Transform transform = mock(Transform.class); - LocationCameraController camera = buildCamera(mapboxMap, transform); - camera.initializeOptions(mock(LocationComponentOptions.class)); - OnLocationCameraTransitionListener listener = mock(OnLocationCameraTransitionListener.class); - Location location = mock(Location.class); - - camera.setCameraMode(NONE, location, TRANSITION_ANIMATION_DURATION_MS, null, null, null, listener); - verify(listener, times(1)).onLocationCameraTransitionFinished(NONE); - verify(transform, times(0)) - .animateCamera(eq(mapboxMap), any(CameraUpdate.class), any(Integer.class), - any(MapboxMap.CancelableCallback.class)); - } - - @Test - public void transition_trackingChanged() { - MapboxMap mapboxMap = mock(MapboxMap.class); - Transform transform = mock(Transform.class); - when(mapboxMap.getCameraPosition()).thenReturn(CameraPosition.DEFAULT); - Projection projection = mock(Projection.class); - when(mapboxMap.getProjection()).thenReturn(projection); - when(projection.getMetersPerPixelAtLatitude(any(Double.class))).thenReturn(Double.valueOf(1000)); - LocationCameraController camera = buildCamera(mapboxMap, transform); - camera.initializeOptions(mock(LocationComponentOptions.class)); - final OnLocationCameraTransitionListener listener = mock(OnLocationCameraTransitionListener.class); - Location location = mock(Location.class); - - doAnswer(new Answer<Void>() { - @Override - public Void answer(InvocationOnMock invocation) throws Throwable { - listener.onLocationCameraTransitionFinished(TRACKING); - return null; - } - }).when(transform).animateCamera(eq(mapboxMap), any(CameraUpdate.class), any(Integer.class), - any(MapboxMap.CancelableCallback.class)); - - camera.setCameraMode(TRACKING, location, TRANSITION_ANIMATION_DURATION_MS, null, null, null, listener); - verify(listener).onLocationCameraTransitionFinished(TRACKING); - verify(transform) - .animateCamera(eq(mapboxMap), any(CameraUpdate.class), any(Integer.class), - any(MapboxMap.CancelableCallback.class)); - } - - @Test - public void transition_trackingNotChanged() { - MapboxMap mapboxMap = mock(MapboxMap.class); - Transform transform = mock(Transform.class); - when(mapboxMap.getCameraPosition()).thenReturn(CameraPosition.DEFAULT); - Projection projection = mock(Projection.class); - when(mapboxMap.getProjection()).thenReturn(projection); - when(projection.getMetersPerPixelAtLatitude(any(Double.class))).thenReturn(Double.valueOf(1000)); - LocationCameraController camera = buildCamera(mapboxMap, transform); - camera.initializeOptions(mock(LocationComponentOptions.class)); - final OnLocationCameraTransitionListener listener = mock(OnLocationCameraTransitionListener.class); - Location location = mock(Location.class); - - camera.setCameraMode(TRACKING, location, TRANSITION_ANIMATION_DURATION_MS, null, null, null, listener); - - doAnswer(new Answer<Void>() { - @Override - public Void answer(InvocationOnMock invocation) throws Throwable { - listener.onLocationCameraTransitionFinished(TRACKING_GPS_NORTH); - return null; - } - }).when(transform).animateCamera(eq(mapboxMap), any(CameraUpdate.class), any(Integer.class), - any(MapboxMap.CancelableCallback.class)); - - camera.setCameraMode(TRACKING_GPS_NORTH, location, TRANSITION_ANIMATION_DURATION_MS, null, null, null, listener); - verify(listener, times(1)).onLocationCameraTransitionFinished(TRACKING_GPS_NORTH); - verify(transform, times(1)) - .animateCamera(eq(mapboxMap), any(CameraUpdate.class), any(Integer.class), - any(MapboxMap.CancelableCallback.class)); - } - - @Test - public void transition_canceled() { - MapboxMap mapboxMap = mock(MapboxMap.class); - Transform transform = mock(Transform.class); - when(mapboxMap.getCameraPosition()).thenReturn(CameraPosition.DEFAULT); - Projection projection = mock(Projection.class); - when(mapboxMap.getProjection()).thenReturn(projection); - when(projection.getMetersPerPixelAtLatitude(any(Double.class))).thenReturn(Double.valueOf(1000)); - LocationCameraController camera = buildCamera(mapboxMap, transform); - camera.initializeOptions(mock(LocationComponentOptions.class)); - final OnLocationCameraTransitionListener listener = mock(OnLocationCameraTransitionListener.class); - Location location = mock(Location.class); - - doAnswer(new Answer<Void>() { - @Override - public Void answer(InvocationOnMock invocation) throws Throwable { - listener.onLocationCameraTransitionCanceled(TRACKING); - return null; - } - }).when(transform).animateCamera(eq(mapboxMap), any(CameraUpdate.class), any(Integer.class), - any(MapboxMap.CancelableCallback.class)); - - camera.setCameraMode(TRACKING, location, TRANSITION_ANIMATION_DURATION_MS, null, null, null, listener); - verify(listener).onLocationCameraTransitionCanceled(TRACKING); - verify(transform) - .animateCamera(eq(mapboxMap), any(CameraUpdate.class), any(Integer.class), - any(MapboxMap.CancelableCallback.class)); - } - - @Test - public void transition_mapboxCallbackFinished() { - MapboxMap mapboxMap = mock(MapboxMap.class); - Transform transform = mock(Transform.class); - when(mapboxMap.getCameraPosition()).thenReturn(CameraPosition.DEFAULT); - Projection projection = mock(Projection.class); - when(mapboxMap.getProjection()).thenReturn(projection); - when(projection.getMetersPerPixelAtLatitude(any(Double.class))).thenReturn(Double.valueOf(1000)); - LocationCameraController camera = buildCamera(mapboxMap, transform); - camera.initializeOptions(mock(LocationComponentOptions.class)); - final OnLocationCameraTransitionListener listener = mock(OnLocationCameraTransitionListener.class); - Location location = mock(Location.class); - when(location.getLatitude()).thenReturn(1.0); - when(location.getLongitude()).thenReturn(1.0); - when(location.getBearing()).thenReturn(30f); - when(location.getAltitude()).thenReturn(0.0); - - ArgumentCaptor<MapboxMap.CancelableCallback> callbackCaptor - = ArgumentCaptor.forClass(MapboxMap.CancelableCallback.class); - - camera.setCameraMode(TRACKING, location, TRANSITION_ANIMATION_DURATION_MS, null, null, null, listener); - - CameraPosition.Builder builder = new CameraPosition.Builder().target(new LatLng(location)); - verify(transform).animateCamera( - eq(mapboxMap), - eq(CameraUpdateFactory.newCameraPosition(builder.build())), - eq((int) TRANSITION_ANIMATION_DURATION_MS), - callbackCaptor.capture()); - - Assert.assertTrue(camera.isTransitioning()); - - callbackCaptor.getValue().onFinish(); - - Assert.assertFalse(camera.isTransitioning()); - - verify(listener).onLocationCameraTransitionFinished(TRACKING); - } - - @Test - public void transition_mapboxCallbackFinishedImmediately() { - MapboxMap mapboxMap = mock(MapboxMap.class); - Transform transform = mock(Transform.class); - when(mapboxMap.getCameraPosition()).thenReturn(CameraPosition.DEFAULT); - Projection projection = mock(Projection.class); - when(mapboxMap.getProjection()).thenReturn(projection); - when(projection.getMetersPerPixelAtLatitude(any(Double.class))).thenReturn(Double.valueOf(1)); - LocationCameraController camera = buildCamera(mapboxMap, transform); - camera.initializeOptions(mock(LocationComponentOptions.class)); - final OnLocationCameraTransitionListener listener = mock(OnLocationCameraTransitionListener.class); - Location location = mock(Location.class); - when(location.getLatitude()).thenReturn(1.0); - when(location.getLongitude()).thenReturn(1.0); - when(location.getBearing()).thenReturn(30f); - when(location.getAltitude()).thenReturn(0.0); - - ArgumentCaptor<MapboxMap.CancelableCallback> callbackCaptor - = ArgumentCaptor.forClass(MapboxMap.CancelableCallback.class); - - camera.setCameraMode(TRACKING, location, TRANSITION_ANIMATION_DURATION_MS, null, null, null, listener); - - CameraPosition.Builder builder = new CameraPosition.Builder().target(new LatLng(location)); - verify(transform).moveCamera( - eq(mapboxMap), - eq(CameraUpdateFactory.newCameraPosition(builder.build())), - callbackCaptor.capture()); - - Assert.assertTrue(camera.isTransitioning()); - - callbackCaptor.getValue().onFinish(); - - Assert.assertFalse(camera.isTransitioning()); - - verify(listener).onLocationCameraTransitionFinished(TRACKING); - } - - @Test - public void transition_mapboxCallbackCanceled() { - MapboxMap mapboxMap = mock(MapboxMap.class); - Transform transform = mock(Transform.class); - when(mapboxMap.getCameraPosition()).thenReturn(CameraPosition.DEFAULT); - Projection projection = mock(Projection.class); - when(mapboxMap.getProjection()).thenReturn(projection); - when(projection.getMetersPerPixelAtLatitude(any(Double.class))).thenReturn(Double.valueOf(1000)); - LocationCameraController camera = buildCamera(mapboxMap, transform); - camera.initializeOptions(mock(LocationComponentOptions.class)); - final OnLocationCameraTransitionListener listener = mock(OnLocationCameraTransitionListener.class); - Location location = mock(Location.class); - when(location.getLatitude()).thenReturn(1.0); - when(location.getLongitude()).thenReturn(1.0); - when(location.getBearing()).thenReturn(30f); - when(location.getAltitude()).thenReturn(0.0); - - ArgumentCaptor<MapboxMap.CancelableCallback> callbackCaptor - = ArgumentCaptor.forClass(MapboxMap.CancelableCallback.class); - - camera.setCameraMode(TRACKING, location, TRANSITION_ANIMATION_DURATION_MS, null, null, null, listener); - - CameraPosition.Builder builder = new CameraPosition.Builder().target(new LatLng(location)); - verify(transform).animateCamera( - eq(mapboxMap), - eq(CameraUpdateFactory.newCameraPosition(builder.build())), - eq((int) TRANSITION_ANIMATION_DURATION_MS), - callbackCaptor.capture()); - - Assert.assertTrue(camera.isTransitioning()); - - callbackCaptor.getValue().onCancel(); - - Assert.assertFalse(camera.isTransitioning()); - - verify(listener).onLocationCameraTransitionCanceled(TRACKING); - } - - @Test - public void transition_mapboxAnimateBearing() { - MapboxMap mapboxMap = mock(MapboxMap.class); - Transform transform = mock(Transform.class); - when(mapboxMap.getCameraPosition()).thenReturn(CameraPosition.DEFAULT); - Projection projection = mock(Projection.class); - when(mapboxMap.getProjection()).thenReturn(projection); - when(projection.getMetersPerPixelAtLatitude(any(Double.class))).thenReturn(Double.valueOf(1000)); - LocationCameraController camera = buildCamera(mapboxMap, transform); - camera.initializeOptions(mock(LocationComponentOptions.class)); - final OnLocationCameraTransitionListener listener = mock(OnLocationCameraTransitionListener.class); - Location location = mock(Location.class); - when(location.getLatitude()).thenReturn(1.0); - when(location.getLongitude()).thenReturn(1.0); - when(location.getBearing()).thenReturn(30f); - when(location.getAltitude()).thenReturn(0.0); - - camera.setCameraMode(TRACKING_GPS, location, TRANSITION_ANIMATION_DURATION_MS, null, null, null, listener); - - CameraPosition.Builder builder = new CameraPosition.Builder().target(new LatLng(location)).bearing(30); - verify(transform).animateCamera( - eq(mapboxMap), - eq(CameraUpdateFactory.newCameraPosition(builder.build())), - eq((int) TRANSITION_ANIMATION_DURATION_MS), - any(MapboxMap.CancelableCallback.class)); - } - - @Test - public void transition_mapboxAnimateNorth() { - MapboxMap mapboxMap = mock(MapboxMap.class); - Transform transform = mock(Transform.class); - when(mapboxMap.getCameraPosition()).thenReturn(CameraPosition.DEFAULT); - Projection projection = mock(Projection.class); - when(mapboxMap.getProjection()).thenReturn(projection); - when(projection.getMetersPerPixelAtLatitude(any(Double.class))).thenReturn(Double.valueOf(1000)); - LocationCameraController camera = buildCamera(mapboxMap, transform); - camera.initializeOptions(mock(LocationComponentOptions.class)); - final OnLocationCameraTransitionListener listener = mock(OnLocationCameraTransitionListener.class); - Location location = mock(Location.class); - when(location.getLatitude()).thenReturn(1.0); - when(location.getLongitude()).thenReturn(1.0); - when(location.getBearing()).thenReturn(30f); - when(location.getAltitude()).thenReturn(0.0); - - camera.setCameraMode(TRACKING_GPS_NORTH, location, TRANSITION_ANIMATION_DURATION_MS, null, null, null, listener); - - CameraPosition.Builder builder = new CameraPosition.Builder().target(new LatLng(location)).bearing(0); - verify(transform).animateCamera( - eq(mapboxMap), - eq(CameraUpdateFactory.newCameraPosition(builder.build())), - eq((int) TRANSITION_ANIMATION_DURATION_MS), - any(MapboxMap.CancelableCallback.class)); - } - - @Test - public void transition_animatorValuesDuringTransition() { - MapboxMap mapboxMap = mock(MapboxMap.class); - Transform transform = mock(Transform.class); - when(mapboxMap.getCameraPosition()).thenReturn(CameraPosition.DEFAULT); - Projection projection = mock(Projection.class); - when(mapboxMap.getProjection()).thenReturn(projection); - when(projection.getMetersPerPixelAtLatitude(any(Double.class))).thenReturn(Double.valueOf(1000)); - LocationCameraController camera = buildCamera(mapboxMap, transform); - camera.initializeOptions(mock(LocationComponentOptions.class)); - final OnLocationCameraTransitionListener listener = mock(OnLocationCameraTransitionListener.class); - Location location = mock(Location.class); - - ArgumentCaptor<MapboxMap.CancelableCallback> callbackCaptor - = ArgumentCaptor.forClass(MapboxMap.CancelableCallback.class); - - camera.setCameraMode(TRACKING_GPS, location, TRANSITION_ANIMATION_DURATION_MS, null, null, null, listener); - - verify(transform).animateCamera( - eq(mapboxMap), - any(CameraUpdate.class), - eq((int) TRANSITION_ANIMATION_DURATION_MS), - callbackCaptor.capture()); - - LatLng latLng = new LatLng(10, 10); - getAnimationListener(ANIMATOR_CAMERA_LATLNG, camera.getAnimationListeners()).onNewAnimationValue(latLng); - getAnimationListener(ANIMATOR_CAMERA_GPS_BEARING, camera.getAnimationListeners()).onNewAnimationValue(10f); - getAnimationListener(ANIMATOR_TILT, camera.getAnimationListeners()).onNewAnimationValue(10f); - getAnimationListener(ANIMATOR_ZOOM, camera.getAnimationListeners()).onNewAnimationValue(10f); - - verify(transform, times(0)).moveCamera(eq(mapboxMap), any(CameraUpdate.class), - nullable(MapboxMap.CancelableCallback.class)); - - callbackCaptor.getValue().onFinish(); - - getAnimationListener(ANIMATOR_CAMERA_LATLNG, camera.getAnimationListeners()).onNewAnimationValue(latLng); - getAnimationListener(ANIMATOR_CAMERA_GPS_BEARING, camera.getAnimationListeners()).onNewAnimationValue(10f); - getAnimationListener(ANIMATOR_TILT, camera.getAnimationListeners()).onNewAnimationValue(10f); - getAnimationListener(ANIMATOR_ZOOM, camera.getAnimationListeners()).onNewAnimationValue(10f); - - verify(transform, times(4)).moveCamera(eq(mapboxMap), any(CameraUpdate.class), - nullable(MapboxMap.CancelableCallback.class)); - } - - @Test - public void transition_customAnimation() { - MapboxMap mapboxMap = mock(MapboxMap.class); - Transform transform = mock(Transform.class); - when(mapboxMap.getCameraPosition()).thenReturn(CameraPosition.DEFAULT); - Projection projection = mock(Projection.class); - when(mapboxMap.getProjection()).thenReturn(projection); - when(projection.getMetersPerPixelAtLatitude(any(Double.class))).thenReturn(Double.valueOf(1000)); - LocationCameraController camera = buildCamera(mapboxMap, transform); - camera.initializeOptions(mock(LocationComponentOptions.class)); - Location location = mock(Location.class); - CameraUpdate cameraUpdate = CameraUpdateFactory.newCameraPosition( - new CameraPosition.Builder() - .target(new LatLng(location)) - .zoom(14.0) - .bearing(13.0) - .tilt(45.0) - .build() - ); - - camera.setCameraMode(TRACKING, location, 1200, 14.0, 13.0, 45.0, null); - verify(transform) - .animateCamera(eq(mapboxMap), eq(cameraUpdate), eq(1200), any(MapboxMap.CancelableCallback.class)); - } - - private LocationCameraController buildCamera(OnCameraTrackingChangedListener onCameraTrackingChangedListener) { - MapboxMap mapboxMap = mock(MapboxMap.class); - when(mapboxMap.getUiSettings()).thenReturn(mock(UiSettings.class)); - Transform transform = mock(Transform.class); - Projection projection = mock(Projection.class); - when(mapboxMap.getProjection()).thenReturn(projection); - when(projection.getMetersPerPixelAtLatitude(any(Double.class))).thenReturn(Double.valueOf(1000)); - MoveGestureDetector moveGestureDetector = mock(MoveGestureDetector.class); - OnCameraMoveInvalidateListener onCameraMoveInvalidateListener = mock(OnCameraMoveInvalidateListener.class); - AndroidGesturesManager initialGesturesManager = mock(AndroidGesturesManager.class); - AndroidGesturesManager internalGesturesManager = mock(AndroidGesturesManager.class); - return new LocationCameraController(mapboxMap, transform, moveGestureDetector, - onCameraTrackingChangedListener, onCameraMoveInvalidateListener, initialGesturesManager, internalGesturesManager); - } - - private LocationCameraController buildCamera(MoveGestureDetector moveGestureDetector) { - MapboxMap mapboxMap = mock(MapboxMap.class); - when(mapboxMap.getUiSettings()).thenReturn(mock(UiSettings.class)); - Transform transform = mock(Transform.class); - Projection projection = mock(Projection.class); - when(mapboxMap.getProjection()).thenReturn(projection); - when(projection.getMetersPerPixelAtLatitude(any(Double.class))).thenReturn(Double.valueOf(1000)); - OnCameraTrackingChangedListener onCameraTrackingChangedListener = mock(OnCameraTrackingChangedListener.class); - OnCameraMoveInvalidateListener onCameraMoveInvalidateListener = mock(OnCameraMoveInvalidateListener.class); - AndroidGesturesManager initialGesturesManager = mock(AndroidGesturesManager.class); - AndroidGesturesManager internalGesturesManager = mock(AndroidGesturesManager.class); - return new LocationCameraController(mapboxMap, transform, moveGestureDetector, - onCameraTrackingChangedListener, onCameraMoveInvalidateListener, initialGesturesManager, internalGesturesManager); - } - - private LocationCameraController buildCamera(MapboxMap mapboxMap) { - Transform transform = mock(Transform.class); - MoveGestureDetector moveGestureDetector = mock(MoveGestureDetector.class); - OnCameraTrackingChangedListener onCameraTrackingChangedListener = mock(OnCameraTrackingChangedListener.class); - OnCameraMoveInvalidateListener onCameraMoveInvalidateListener = mock(OnCameraMoveInvalidateListener.class); - AndroidGesturesManager initialGesturesManager = mock(AndroidGesturesManager.class); - AndroidGesturesManager internalGesturesManager = mock(AndroidGesturesManager.class); - return new LocationCameraController(mapboxMap, transform, moveGestureDetector, - onCameraTrackingChangedListener, onCameraMoveInvalidateListener, initialGesturesManager, internalGesturesManager); - } - - private LocationCameraController buildCamera(Transform transform) { - MapboxMap mapboxMap = mock(MapboxMap.class); - when(mapboxMap.getUiSettings()).thenReturn(mock(UiSettings.class)); - Projection projection = mock(Projection.class); - when(mapboxMap.getProjection()).thenReturn(projection); - when(projection.getMetersPerPixelAtLatitude(any(Double.class))).thenReturn(Double.valueOf(1000)); - when(mapboxMap.getUiSettings()).thenReturn(mock(UiSettings.class)); - MoveGestureDetector moveGestureDetector = mock(MoveGestureDetector.class); - OnCameraTrackingChangedListener onCameraTrackingChangedListener = mock(OnCameraTrackingChangedListener.class); - OnCameraMoveInvalidateListener onCameraMoveInvalidateListener = mock(OnCameraMoveInvalidateListener.class); - AndroidGesturesManager initialGesturesManager = mock(AndroidGesturesManager.class); - AndroidGesturesManager internalGesturesManager = mock(AndroidGesturesManager.class); - return new LocationCameraController(mapboxMap, transform, moveGestureDetector, - onCameraTrackingChangedListener, onCameraMoveInvalidateListener, initialGesturesManager, internalGesturesManager); - } - - private LocationCameraController buildCamera(MapboxMap mapboxMap, Transform transform) { - when(mapboxMap.getUiSettings()).thenReturn(mock(UiSettings.class)); - MoveGestureDetector moveGestureDetector = mock(MoveGestureDetector.class); - OnCameraTrackingChangedListener onCameraTrackingChangedListener = mock(OnCameraTrackingChangedListener.class); - OnCameraMoveInvalidateListener onCameraMoveInvalidateListener = mock(OnCameraMoveInvalidateListener.class); - AndroidGesturesManager initialGesturesManager = mock(AndroidGesturesManager.class); - AndroidGesturesManager internalGesturesManager = mock(AndroidGesturesManager.class); - return new LocationCameraController(mapboxMap, transform, moveGestureDetector, - onCameraTrackingChangedListener, onCameraMoveInvalidateListener, initialGesturesManager, internalGesturesManager); - } - - private LocationCameraController buildCamera(MapboxMap mapboxMap, AndroidGesturesManager initialGesturesManager, - AndroidGesturesManager internalGesturesManager) { - Transform transform = mock(Transform.class); - MoveGestureDetector moveGestureDetector = mock(MoveGestureDetector.class); - OnCameraTrackingChangedListener onCameraTrackingChangedListener = mock(OnCameraTrackingChangedListener.class); - OnCameraMoveInvalidateListener onCameraMoveInvalidateListener = mock(OnCameraMoveInvalidateListener.class); - return new LocationCameraController(mapboxMap, transform, moveGestureDetector, - onCameraTrackingChangedListener, onCameraMoveInvalidateListener, initialGesturesManager, internalGesturesManager); - } - - private <T> MapboxAnimator.AnimationsValueChangeListener<T> getAnimationListener( - @MapboxAnimator.Type int animatorType, - Set<AnimatorListenerHolder> holders) { - for (AnimatorListenerHolder holder : holders) { - @MapboxAnimator.Type int type = holder.getAnimatorType(); - if (type == animatorType) { - return holder.getListener(); - } - } - - return null; - } -} diff --git a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/location/LocationComponentActivationOptionsTest.java b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/location/LocationComponentActivationOptionsTest.java deleted file mode 100644 index 2660c819d4..0000000000 --- a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/location/LocationComponentActivationOptionsTest.java +++ /dev/null @@ -1,119 +0,0 @@ -package com.mapbox.mapboxsdk.location; - -import android.content.Context; -import android.content.res.Resources; -import android.content.res.TypedArray; -import android.support.annotation.NonNull; - -import com.mapbox.mapboxsdk.R; -import com.mapbox.mapboxsdk.maps.Style; - -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.junit.MockitoJUnit; -import org.mockito.junit.MockitoJUnitRunner; -import org.mockito.junit.MockitoRule; - -import static org.junit.Assert.assertNotNull; -import static org.mockito.Mockito.when; - -@RunWith(MockitoJUnitRunner.class) -public class LocationComponentActivationOptionsTest { - - @Mock - private Context context; - @Mock - private TypedArray array; - @Mock - private Resources resources; - @Mock - private Style style; - - @Rule - public MockitoRule mockitoRule = MockitoJUnit.rule(); - - @NonNull - @Rule - public ExpectedException thrown = ExpectedException.none(); - - @Before - public void setUp() throws Exception { - when(context.obtainStyledAttributes(R.style.mapbox_LocationComponent, R.styleable.mapbox_LocationComponent)) - .thenReturn(array); - when(array.getResourceId(R.styleable.mapbox_LocationComponent_mapbox_foregroundDrawable, -1)) - .thenReturn(R.drawable.mapbox_user_icon); - when(context.getResources()).thenReturn(resources); - } - - @Test - public void sanity() throws Exception { - when(style.isFullyLoaded()).thenReturn(true); - - LocationComponentOptions locationComponentOptions = LocationComponentOptions.builder(context) - .accuracyAlpha(0.5f) - .build(); - assertNotNull(locationComponentOptions); - - LocationComponentActivationOptions locationComponentActivationOptions = - LocationComponentActivationOptions.builder(context, style) - .locationComponentOptions(locationComponentOptions) - .useDefaultLocationEngine(true) - .build(); - assertNotNull(locationComponentActivationOptions); - } - - @Test - public void includingBothStyleResAndComponentOptions_causesExceptionToBeThrown() throws Exception { - - thrown.expect(IllegalArgumentException.class); - thrown.expectMessage("You've provided both a style resource and a LocationComponentOptions" - + " object to the LocationComponentActivationOptions builder. You can't use both and " - + "you must choose one of the two to style the LocationComponent."); - - LocationComponentOptions locationComponentOptions = LocationComponentOptions.builder(context) - .accuracyAlpha(0.5f) - .build(); - - LocationComponentActivationOptions.builder(context, style) - .locationComponentOptions(locationComponentOptions) - .styleRes(R.style.mapbox_LocationComponent) - .build(); - } - - @Test - public void nullContext_causesExceptionToBeThrown() throws Exception { - thrown.expect(NullPointerException.class); - thrown.expectMessage("Context in LocationComponentActivationOptions is null."); - - LocationComponentActivationOptions.builder(null, style) - .build(); - } - - @Test - public void nullStyle_causesExceptionToBeThrown() throws Exception { - thrown.expect(NullPointerException.class); - thrown.expectMessage("Style in LocationComponentActivationOptions is null. Make sure the Style object isn't null." - + " Wait for the map to fully load before passing the Style object to LocationComponentActivationOptions."); - - LocationComponentActivationOptions.builder(context, null) - .build(); - } - - @Test - public void locationComponent_exceptionThrownWithDefaultLocationEngineButNotFullyLoadedStyle() throws Exception { - - when(style.isFullyLoaded()).thenReturn(false); - - thrown.expect(IllegalArgumentException.class); - thrown.expectMessage("Style in LocationComponentActivationOptions isn't fully loaded. Wait for the " - + "map to fully load before passing the Style object to " - + "LocationComponentActivationOptions."); - - LocationComponentActivationOptions.builder(context, style) - .build(); - } -}
\ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/location/LocationComponentOptionsTest.java b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/location/LocationComponentOptionsTest.java deleted file mode 100644 index b1e1f14cb1..0000000000 --- a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/location/LocationComponentOptionsTest.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.mapbox.mapboxsdk.location; - -import android.content.Context; -import android.content.res.Resources; -import android.content.res.TypedArray; - -import android.support.annotation.NonNull; -import com.mapbox.mapboxsdk.R; - -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.junit.MockitoJUnitRunner; - -import static org.junit.Assert.assertNotNull; -import static org.mockito.Mockito.when; - -@RunWith(MockitoJUnitRunner.class) -public class LocationComponentOptionsTest { - - @Mock - private Context context; - @Mock - private TypedArray array; - @Mock - private Resources resources; - - @NonNull - @Rule - public ExpectedException thrown = ExpectedException.none(); - - @Before - public void setUp() throws Exception { - when(context.obtainStyledAttributes(R.style.mapbox_LocationComponent, R.styleable.mapbox_LocationComponent)) - .thenReturn(array); - when(array.getResourceId(R.styleable.mapbox_LocationComponent_mapbox_foregroundDrawable, -1)) - .thenReturn(R.drawable.mapbox_user_icon); - when(context.getResources()).thenReturn(resources); - } - - @Test - public void sanity() throws Exception { - LocationComponentOptions locationComponentOptions = LocationComponentOptions.builder(context) - .accuracyAlpha(0.5f) - .build(); - assertNotNull(locationComponentOptions); - } - - @Test - public void passingOutOfRangeAccuracyAlpha_throwsException() throws Exception { - thrown.expect(IllegalArgumentException.class); - thrown.expectMessage("Accuracy alpha value must be between 0.0 and " - + "1.0."); - LocationComponentOptions.builder(context) - .accuracyAlpha(2f) - .build(); - } - - @Test - public void negativeElevation_causesExceptionToBeThrown() throws Exception { - thrown.expect(IllegalArgumentException.class); - thrown.expectMessage("Invalid shadow size -500.0. Must be >= 0"); - LocationComponentOptions.builder(context) - .elevation(-500) - .build(); - } - - @Test - public void passingBothLayerPositionOptions_throwsException() throws Exception { - thrown.expect(IllegalArgumentException.class); - thrown.expectMessage("You cannot set both layerAbove and layerBelow options." - + "Choose one or the other."); - LocationComponentOptions.builder(context) - .layerAbove("above") - .layerBelow("below") - .build(); - } -}
\ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/location/LocationComponentPositionManagerTest.kt b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/location/LocationComponentPositionManagerTest.kt deleted file mode 100644 index c8a75b6701..0000000000 --- a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/location/LocationComponentPositionManagerTest.kt +++ /dev/null @@ -1,130 +0,0 @@ -package com.mapbox.mapboxsdk.location - -import com.mapbox.mapboxsdk.maps.Style -import com.mapbox.mapboxsdk.style.layers.Layer -import io.mockk.mockk -import io.mockk.verify -import junit.framework.Assert.assertFalse -import junit.framework.Assert.assertTrue -import org.junit.Before -import org.junit.Test -import org.junit.runner.RunWith -import org.mockito.junit.MockitoJUnitRunner - -@RunWith(MockitoJUnitRunner::class) -class LocationComponentPositionManagerTest { - - private lateinit var style: Style - private lateinit var layer: Layer - - @Before - fun setup() { - style = mockk(relaxed = true) - layer = mockk(relaxed = true) - } - - @Test - fun update_noChange_null() { - val positionManager = LocationComponentPositionManager(style, null, null) - val requiresUpdate = positionManager.update(null, null) - assertFalse(requiresUpdate) - } - - @Test - fun update_noChange_above() { - val positionManager = LocationComponentPositionManager(style, "above", null) - val requiresUpdate = positionManager.update("above", null) - assertFalse(requiresUpdate) - } - - @Test - fun update_noChange_below() { - val positionManager = LocationComponentPositionManager(style, null, "below") - val requiresUpdate = positionManager.update(null, "below") - assertFalse(requiresUpdate) - } - - @Test - fun update_fromNull_above() { - val positionManager = LocationComponentPositionManager(style, null, null) - val requiresUpdate = positionManager.update("above", null) - assertTrue(requiresUpdate) - } - - @Test - fun update_fromNull_below() { - val positionManager = LocationComponentPositionManager(style, null, null) - val requiresUpdate = positionManager.update(null, "below") - assertTrue(requiresUpdate) - } - - @Test - fun update_toNull_above() { - val positionManager = LocationComponentPositionManager(style, "above", null) - val requiresUpdate = positionManager.update(null, null) - assertTrue(requiresUpdate) - } - - @Test - fun update_toNull_below() { - val positionManager = LocationComponentPositionManager(style, null, "below") - val requiresUpdate = positionManager.update(null, null) - assertTrue(requiresUpdate) - } - - @Test - fun update_fromValue_above() { - val positionManager = LocationComponentPositionManager(style, "above1", null) - val requiresUpdate = positionManager.update("above2", null) - assertTrue(requiresUpdate) - } - - @Test - fun update_fromValue_below() { - val positionManager = LocationComponentPositionManager(style, null, "below1") - val requiresUpdate = positionManager.update(null, "below2") - assertTrue(requiresUpdate) - } - - @Test - fun addLayer_noModifier() { - val positionManager = LocationComponentPositionManager(style, null, null) - positionManager.addLayerToMap(layer) - - verify { style.addLayer(layer) } - } - - @Test - fun addLayer_above() { - val positionManager = LocationComponentPositionManager(style, "above", null) - positionManager.addLayerToMap(layer) - - verify { style.addLayerAbove(layer, "above") } - } - - @Test - fun addLayer_below() { - val positionManager = LocationComponentPositionManager(style, null, "below") - positionManager.addLayerToMap(layer) - - verify { style.addLayerBelow(layer, "below") } - } - - @Test - fun addLayer_afterUpdate_above() { - val positionManager = LocationComponentPositionManager(style, null, null) - positionManager.update("above", null) - positionManager.addLayerToMap(layer) - - verify { style.addLayerAbove(layer, "above") } - } - - @Test - fun addLayer_afterUpdate_below() { - val positionManager = LocationComponentPositionManager(style, null, null) - positionManager.update(null, "below") - positionManager.addLayerToMap(layer) - - verify { style.addLayerBelow(layer, "below") } - } -}
\ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/location/LocationComponentTest.kt b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/location/LocationComponentTest.kt deleted file mode 100644 index 2994c29d5b..0000000000 --- a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/location/LocationComponentTest.kt +++ /dev/null @@ -1,453 +0,0 @@ -package com.mapbox.mapboxsdk.location - -import android.content.Context -import android.content.res.Resources -import android.content.res.TypedArray -import android.location.Location -import android.os.Looper -import com.mapbox.android.core.location.LocationEngine -import com.mapbox.android.core.location.LocationEngineRequest -import com.mapbox.mapboxsdk.R -import com.mapbox.mapboxsdk.camera.CameraPosition -import com.mapbox.mapboxsdk.location.LocationComponentConstants.TRANSITION_ANIMATION_DURATION_MS -import com.mapbox.mapboxsdk.location.modes.CameraMode -import com.mapbox.mapboxsdk.location.modes.RenderMode -import com.mapbox.mapboxsdk.maps.MapboxMap -import com.mapbox.mapboxsdk.maps.Style -import com.mapbox.mapboxsdk.maps.Transform -import org.junit.Assert -import org.junit.Before -import org.junit.Test -import org.junit.runner.RunWith -import org.mockito.ArgumentCaptor -import org.mockito.Mock -import org.mockito.Mockito.* -import org.mockito.MockitoAnnotations -import org.robolectric.RobolectricTestRunner - -@RunWith(RobolectricTestRunner::class) -class LocationComponentTest { - private lateinit var locationComponent: LocationComponent - - @Mock - private lateinit var locationComponentOptions: LocationComponentOptions - - @Mock - private lateinit var mapboxMap: MapboxMap - - @Mock - private lateinit var transform: Transform - - @Mock - private lateinit var context: Context - - @Mock - private lateinit var locationEngine: LocationEngine - - @Mock - private lateinit var locationEngineRequest: LocationEngineRequest - - @Mock - private lateinit var currentListener: LocationComponent.CurrentLocationEngineCallback - - @Mock - private lateinit var lastListener: LocationComponent.LastLocationEngineCallback - - @Mock - private lateinit var compassEngine: CompassEngine - - @Mock - private lateinit var locationLayerController: LocationLayerController - - @Mock - private lateinit var locationCameraController: LocationCameraController - - @Mock - private lateinit var locationAnimatorCoordinator: LocationAnimatorCoordinator - - @Mock - private lateinit var staleStateManager: StaleStateManager - - @Mock - private lateinit var locationEngineProvider: LocationComponent.InternalLocationEngineProvider - - @Mock - private lateinit var style: Style - - private lateinit var developerAnimationListeners: List<MapboxMap.OnDeveloperAnimationListener> - - @Before - fun before() { - MockitoAnnotations.initMocks(this) - developerAnimationListeners = mutableListOf() - locationComponent = LocationComponent(mapboxMap, transform, developerAnimationListeners, currentListener, lastListener, locationLayerController, locationCameraController, locationAnimatorCoordinator, staleStateManager, compassEngine, locationEngineProvider) - doReturn(locationEngine).`when`(locationEngineProvider).getBestLocationEngine(context, false) - doReturn(style).`when`(mapboxMap).style - } - - @Test - fun activateWithRequestTest() { - locationComponent.activateLocationComponent(context, mock(Style::class.java), locationEngine, locationEngineRequest, locationComponentOptions) - - Assert.assertEquals(locationEngineRequest, locationComponent.locationEngineRequest) - - doReturn(mock(TypedArray::class.java)).`when`(context) - .obtainStyledAttributes(R.style.mapbox_LocationComponent, R.styleable.mapbox_LocationComponent) - - val resources = mock(Resources::class.java) - - doReturn(resources).`when`(context).resources - doReturn(0f).`when`(resources) - .getDimension(R.dimen.mapbox_locationComponentTrackingMultiFingerMoveThreshold) - doReturn(0f).`when`(resources) - .getDimension(R.dimen.mapbox_locationComponentTrackingMultiFingerMoveThreshold) - locationComponent.activateLocationComponent(context, mock(Style::class.java), true, locationEngineRequest) - Assert.assertEquals(locationEngineRequest, locationComponent.locationEngineRequest) - } - - @Test - fun activateWithDefaultLocationEngineRequestAndOptionsTestDefaultLocationEngine() { - locationComponent.activateLocationComponent(context, mock(Style::class.java), true, locationEngineRequest, locationComponentOptions) - Assert.assertEquals(locationEngineRequest, locationComponent.locationEngineRequest) - Assert.assertNotNull(locationComponent.locationEngine) - } - - @Test - fun activateWithDefaultLocationEngineRequestAndOptionsTestCustomLocationEngine() { - locationComponent.activateLocationComponent(context, mock(Style::class.java), false, locationEngineRequest, locationComponentOptions) - Assert.assertEquals(locationEngineRequest, locationComponent.locationEngineRequest) - Assert.assertNull(locationComponent.locationEngine) - } - - @Test - fun locationUpdatesWhenEnabledDisableTest() { - locationComponent.activateLocationComponent(context, mock(Style::class.java), locationEngine, locationEngineRequest, locationComponentOptions) - verify(locationEngine, times(0)).removeLocationUpdates(currentListener) - verify(locationEngine, times(0)).requestLocationUpdates(eq(locationEngineRequest), eq(currentListener), any(Looper::class.java)) - - locationComponent.onStart() - verify(locationEngine, times(0)).removeLocationUpdates(currentListener) - verify(locationEngine, times(0)).requestLocationUpdates(eq(locationEngineRequest), eq(currentListener), any(Looper::class.java)) - - locationComponent.isLocationComponentEnabled = true - verify(locationEngine).requestLocationUpdates(eq(locationEngineRequest), eq(currentListener), any(Looper::class.java)) - - locationComponent.isLocationComponentEnabled = false - verify(locationEngine).requestLocationUpdates(eq(locationEngineRequest), eq(currentListener), any(Looper::class.java)) - verify(locationEngine).removeLocationUpdates(currentListener) - } - - @Test - fun locationUpdatesWhenStartedStoppedTest() { - locationComponent.activateLocationComponent(context, mock(Style::class.java), locationEngine, locationEngineRequest, locationComponentOptions) - locationComponent.onStart() - locationComponent.isLocationComponentEnabled = true - - locationComponent.onStop() - verify(locationEngine).removeLocationUpdates(currentListener) - - locationComponent.onStart() - verify(locationEngine, times(2)).requestLocationUpdates(eq(locationEngineRequest), eq(currentListener), any(Looper::class.java)) - } - - @Test - fun locationUpdatesWhenNewRequestTest() { - locationComponent.activateLocationComponent(context, mock(Style::class.java), locationEngine, locationEngineRequest, locationComponentOptions) - locationComponent.onStart() - locationComponent.isLocationComponentEnabled = true - - val newRequest = mock(LocationEngineRequest::class.java) - locationComponent.locationEngineRequest = newRequest - verify(locationEngine).removeLocationUpdates(currentListener) - verify(locationEngine).requestLocationUpdates(eq(newRequest), eq(currentListener), any(Looper::class.java)) - } - - @Test - fun lastLocationUpdateOnStartTest() { - locationComponent.activateLocationComponent(context, mock(Style::class.java), locationEngine, locationEngineRequest, locationComponentOptions) - locationComponent.onStart() - locationComponent.isLocationComponentEnabled = true - - verify(locationEngine).getLastLocation(lastListener) - } - - @Test - fun transitionCallbackFinishedTest() { - locationComponent.activateLocationComponent(context, mock(Style::class.java), locationEngine, locationEngineRequest, locationComponentOptions) - locationComponent.onStart() - locationComponent.isLocationComponentEnabled = true - `when`(mapboxMap.cameraPosition).thenReturn(CameraPosition.DEFAULT) - - val listener = mock(OnLocationCameraTransitionListener::class.java) - - val callback = ArgumentCaptor.forClass(OnLocationCameraTransitionListener::class.java) - locationComponent.setCameraMode(CameraMode.TRACKING, listener) - verify(locationCameraController).setCameraMode(eq(CameraMode.TRACKING), any(), eq(TRANSITION_ANIMATION_DURATION_MS), isNull(), isNull(), isNull(), callback.capture()) - callback.value.onLocationCameraTransitionFinished(CameraMode.TRACKING) - - verify(listener).onLocationCameraTransitionFinished(CameraMode.TRACKING) - verify(locationAnimatorCoordinator).resetAllCameraAnimations(CameraPosition.DEFAULT, false) - } - - @Test - fun transitionCallbackCanceledTest() { - locationComponent.activateLocationComponent(context, mock(Style::class.java), locationEngine, locationEngineRequest, locationComponentOptions) - locationComponent.onStart() - locationComponent.isLocationComponentEnabled = true - `when`(mapboxMap.cameraPosition).thenReturn(CameraPosition.DEFAULT) - - val listener = mock(OnLocationCameraTransitionListener::class.java) - - val callback = ArgumentCaptor.forClass(OnLocationCameraTransitionListener::class.java) - locationComponent.setCameraMode(CameraMode.TRACKING, listener) - verify(locationCameraController).setCameraMode(eq(CameraMode.TRACKING), any(), eq(TRANSITION_ANIMATION_DURATION_MS), isNull(), isNull(), isNull(), callback.capture()) - callback.value.onLocationCameraTransitionCanceled(CameraMode.TRACKING) - - verify(listener).onLocationCameraTransitionCanceled(CameraMode.TRACKING) - verify(locationAnimatorCoordinator).resetAllCameraAnimations(CameraPosition.DEFAULT, false) - } - - @Test - fun transitionCustomFinishedTest() { - locationComponent.activateLocationComponent(context, mock(Style::class.java), locationEngine, locationEngineRequest, locationComponentOptions) - locationComponent.onStart() - locationComponent.isLocationComponentEnabled = true - `when`(mapboxMap.cameraPosition).thenReturn(CameraPosition.DEFAULT) - - val listener = mock(OnLocationCameraTransitionListener::class.java) - - val callback = ArgumentCaptor.forClass(OnLocationCameraTransitionListener::class.java) - locationComponent.setCameraMode(CameraMode.TRACKING, 1200, 14.0, 13.0, 45.0, listener) - verify(locationCameraController).setCameraMode(eq(CameraMode.TRACKING), any(), eq(1200L), eq(14.0), eq(13.0), eq(45.0), callback.capture()) - callback.value.onLocationCameraTransitionFinished(CameraMode.TRACKING) - - verify(listener).onLocationCameraTransitionFinished(CameraMode.TRACKING) - verify(locationAnimatorCoordinator).resetAllCameraAnimations(CameraPosition.DEFAULT, false) - } - - @Test - fun compass_listenWhenConsumedByNoneCamera() { - locationComponent.activateLocationComponent(context, mock(Style::class.java), locationEngine, locationEngineRequest, locationComponentOptions) - locationComponent.onStart() - locationComponent.isLocationComponentEnabled = true - `when`(mapboxMap.cameraPosition).thenReturn(CameraPosition.DEFAULT) - - `when`(locationCameraController.isConsumingCompass).thenReturn(true) - locationComponent.cameraMode = CameraMode.NONE_COMPASS - verify(compassEngine).addCompassListener(any(CompassListener::class.java)) - } - - @Test - fun compass_listenWhenConsumedByTrackingCamera() { - locationComponent.activateLocationComponent(context, mock(Style::class.java), locationEngine, locationEngineRequest, locationComponentOptions) - locationComponent.onStart() - locationComponent.isLocationComponentEnabled = true - `when`(mapboxMap.cameraPosition).thenReturn(CameraPosition.DEFAULT) - - `when`(locationCameraController.isConsumingCompass).thenReturn(true) - locationComponent.cameraMode = CameraMode.TRACKING_COMPASS - verify(compassEngine).addCompassListener(any(CompassListener::class.java)) - } - - @Test - fun compass_listenWhenConsumedByLayer() { - locationComponent.activateLocationComponent(context, mock(Style::class.java), locationEngine, locationEngineRequest, locationComponentOptions) - locationComponent.onStart() - locationComponent.isLocationComponentEnabled = true - `when`(mapboxMap.cameraPosition).thenReturn(CameraPosition.DEFAULT) - - `when`(locationLayerController.isConsumingCompass).thenReturn(true) - locationComponent.renderMode = RenderMode.COMPASS - verify(compassEngine).addCompassListener(any(CompassListener::class.java)) - } - - @Test - fun compass_notListenWhenNotConsumed() { - locationComponent.activateLocationComponent(context, mock(Style::class.java), locationEngine, locationEngineRequest, locationComponentOptions) - locationComponent.onStart() - locationComponent.isLocationComponentEnabled = true - `when`(mapboxMap.cameraPosition).thenReturn(CameraPosition.DEFAULT) - - `when`(locationLayerController.isConsumingCompass).thenReturn(false) - `when`(locationCameraController.isConsumingCompass).thenReturn(false) - locationComponent.renderMode = RenderMode.GPS - locationComponent.renderMode = RenderMode.NORMAL - locationComponent.cameraMode = CameraMode.TRACKING - locationComponent.cameraMode = CameraMode.NONE - locationComponent.cameraMode = CameraMode.NONE_GPS - locationComponent.cameraMode = CameraMode.TRACKING_GPS - locationComponent.cameraMode = CameraMode.TRACKING_GPS_NORTH - verify(compassEngine, never()).addCompassListener(any(CompassListener::class.java)) - } - - @Test - fun compass_removeListenerOnChange() { - locationComponent.activateLocationComponent(context, mock(Style::class.java), locationEngine, locationEngineRequest, locationComponentOptions) - locationComponent.onStart() - locationComponent.isLocationComponentEnabled = true - `when`(mapboxMap.cameraPosition).thenReturn(CameraPosition.DEFAULT) - - `when`(locationLayerController.isConsumingCompass).thenReturn(true) - locationComponent.renderMode = RenderMode.COMPASS - `when`(locationLayerController.isConsumingCompass).thenReturn(false) - locationComponent.renderMode = RenderMode.NORMAL - verify(compassEngine).removeCompassListener(any(CompassListener::class.java)) - } - - @Test - fun compass_removeListenerOnStop() { - locationComponent.activateLocationComponent(context, mock(Style::class.java), locationEngine, locationEngineRequest, locationComponentOptions) - locationComponent.onStart() - locationComponent.isLocationComponentEnabled = true - `when`(mapboxMap.cameraPosition).thenReturn(CameraPosition.DEFAULT) - - `when`(locationLayerController.isConsumingCompass).thenReturn(true) - locationComponent.renderMode = RenderMode.COMPASS - locationComponent.onStop() - verify(compassEngine).removeCompassListener(any(CompassListener::class.java)) - } - - @Test - fun compass_reAddListenerOnStart() { - locationComponent.activateLocationComponent(context, mock(Style::class.java), locationEngine, locationEngineRequest, locationComponentOptions) - locationComponent.onStart() - locationComponent.isLocationComponentEnabled = true - `when`(mapboxMap.cameraPosition).thenReturn(CameraPosition.DEFAULT) - - `when`(locationLayerController.isConsumingCompass).thenReturn(true) - locationComponent.renderMode = RenderMode.COMPASS - locationComponent.onStop() - locationComponent.onStart() - verify(compassEngine, times(2)).addCompassListener(any(CompassListener::class.java)) - } - - @Test - fun compass_removeListenerOnStyleStartLoad() { - locationComponent.activateLocationComponent(context, mock(Style::class.java), locationEngine, locationEngineRequest, locationComponentOptions) - locationComponent.onStart() - locationComponent.isLocationComponentEnabled = true - `when`(mapboxMap.cameraPosition).thenReturn(CameraPosition.DEFAULT) - - `when`(locationLayerController.isConsumingCompass).thenReturn(true) - locationComponent.renderMode = RenderMode.COMPASS - locationComponent.onStartLoadingMap() - verify(compassEngine).removeCompassListener(any(CompassListener::class.java)) - } - - @Test - fun compass_reAddListenerOnStyleLoadFinished() { - locationComponent.activateLocationComponent(context, mock(Style::class.java), locationEngine, locationEngineRequest, locationComponentOptions) - locationComponent.onStart() - locationComponent.isLocationComponentEnabled = true - `when`(mapboxMap.cameraPosition).thenReturn(CameraPosition.DEFAULT) - - `when`(locationLayerController.isConsumingCompass).thenReturn(true) - locationComponent.renderMode = RenderMode.COMPASS - locationComponent.onStartLoadingMap() - locationComponent.onFinishLoadingStyle() - verify(compassEngine, times(2)).addCompassListener(any(CompassListener::class.java)) - } - - @Test - fun compass_reAddListenerOnlyWhenEnabled() { - locationComponent.activateLocationComponent(context, mock(Style::class.java), locationEngine, locationEngineRequest, locationComponentOptions) - locationComponent.onStart() - locationComponent.isLocationComponentEnabled = true - `when`(mapboxMap.cameraPosition).thenReturn(CameraPosition.DEFAULT) - - `when`(locationLayerController.isConsumingCompass).thenReturn(true) - locationComponent.renderMode = RenderMode.COMPASS - locationComponent.isLocationComponentEnabled = false - - locationComponent.onStartLoadingMap() - locationComponent.onFinishLoadingStyle() - verify(compassEngine).addCompassListener(any(CompassListener::class.java)) - } - - @Test - fun compass_notAdListenerWhenDisabled() { - locationComponent.activateLocationComponent(context, mock(Style::class.java), locationEngine, locationEngineRequest, locationComponentOptions) - locationComponent.onStart() - `when`(mapboxMap.cameraPosition).thenReturn(CameraPosition.DEFAULT) - - `when`(locationLayerController.isConsumingCompass).thenReturn(true) - locationComponent.renderMode = RenderMode.COMPASS - verify(compassEngine, never()).addCompassListener(any(CompassListener::class.java)) - } - - @Test - fun compass_notAdListenerWhenStopped() { - locationComponent.activateLocationComponent(context, mock(Style::class.java), locationEngine, locationEngineRequest, locationComponentOptions) - locationComponent.isLocationComponentEnabled = true - `when`(mapboxMap.cameraPosition).thenReturn(CameraPosition.DEFAULT) - - `when`(locationLayerController.isConsumingCompass).thenReturn(true) - locationComponent.renderMode = RenderMode.COMPASS - verify(compassEngine, never()).addCompassListener(any(CompassListener::class.java)) - } - - @Test - fun developerAnimationCalled() { - locationComponent.activateLocationComponent(context, mock(Style::class.java), locationEngine, locationEngineRequest, locationComponentOptions) - locationComponent.isLocationComponentEnabled = true - for (listener in developerAnimationListeners) { - listener.onDeveloperAnimationStarted() - } - verify(locationCameraController).setCameraMode(eq(CameraMode.NONE), isNull<Location>(), eq(TRANSITION_ANIMATION_DURATION_MS), isNull<Double>(), isNull<Double>(), isNull<Double>(), any()) - } - - @Test - fun internal_cameraTrackingChangedListener_onCameraTrackingDismissed() { - locationComponent.activateLocationComponent(context, mock(Style::class.java), locationEngine, locationEngineRequest, locationComponentOptions) - locationComponent.isLocationComponentEnabled = true - - val cameraChangeListener: OnCameraTrackingChangedListener = mock(OnCameraTrackingChangedListener::class.java) - locationComponent.addOnCameraTrackingChangedListener(cameraChangeListener) - - locationComponent.cameraTrackingChangedListener.onCameraTrackingDismissed() - - verify(cameraChangeListener).onCameraTrackingDismissed() - } - - @Test - fun internal_cameraTrackingChangedListener_onCameraTrackingChanged() { - locationComponent.activateLocationComponent(context, mock(Style::class.java), locationEngine, locationEngineRequest, locationComponentOptions) - locationComponent.isLocationComponentEnabled = true - - val cameraValueListener: AnimatorListenerHolder = mock(AnimatorListenerHolder::class.java) - val layerValueListener: AnimatorListenerHolder = mock(AnimatorListenerHolder::class.java) - `when`(locationCameraController.animationListeners).thenReturn(setOf(cameraValueListener)) - `when`(locationLayerController.animationListeners).thenReturn(setOf(layerValueListener)) - val cameraChangeListener: OnCameraTrackingChangedListener = mock(OnCameraTrackingChangedListener::class.java) - locationComponent.addOnCameraTrackingChangedListener(cameraChangeListener) - - locationComponent.cameraTrackingChangedListener.onCameraTrackingChanged(CameraMode.TRACKING_GPS) - - verify(locationAnimatorCoordinator).cancelZoomAnimation() - verify(locationAnimatorCoordinator).cancelTiltAnimation() - verify(locationAnimatorCoordinator).updateAnimatorListenerHolders(eq(setOf(cameraValueListener, layerValueListener))) - verify(locationAnimatorCoordinator).resetAllCameraAnimations(any(), anyBoolean()) - verify(locationAnimatorCoordinator).resetAllLayerAnimations() - verify(cameraChangeListener).onCameraTrackingChanged(CameraMode.TRACKING_GPS) - } - - @Test - fun internal_renderModeChangedListener_onRenderModeChanged() { - locationComponent.activateLocationComponent(context, mock(Style::class.java), locationEngine, locationEngineRequest, locationComponentOptions) - locationComponent.isLocationComponentEnabled = true - - val cameraListener: AnimatorListenerHolder = mock(AnimatorListenerHolder::class.java) - val layerListener: AnimatorListenerHolder = mock(AnimatorListenerHolder::class.java) - `when`(locationCameraController.animationListeners).thenReturn(setOf(cameraListener)) - `when`(locationLayerController.animationListeners).thenReturn(setOf(layerListener)) - val renderChangeListener: OnRenderModeChangedListener = mock(OnRenderModeChangedListener::class.java) - locationComponent.addOnRenderModeChangedListener(renderChangeListener) - - locationComponent.renderModeChangedListener.onRenderModeChanged(RenderMode.NORMAL) - - verify(locationAnimatorCoordinator).updateAnimatorListenerHolders(eq(setOf(cameraListener, layerListener))) - verify(locationAnimatorCoordinator).resetAllCameraAnimations(any(), anyBoolean()) - verify(locationAnimatorCoordinator).resetAllLayerAnimations() - verify(renderChangeListener).onRenderModeChanged(RenderMode.NORMAL) - } -}
\ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/location/LocationLayerControllerTest.java b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/location/LocationLayerControllerTest.java deleted file mode 100644 index ed2d015d85..0000000000 --- a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/location/LocationLayerControllerTest.java +++ /dev/null @@ -1,718 +0,0 @@ -package com.mapbox.mapboxsdk.location; - -import android.graphics.Bitmap; -import android.support.annotation.NonNull; - -import com.google.gson.JsonElement; -import com.mapbox.geojson.Feature; -import com.mapbox.mapboxsdk.geometry.LatLng; -import com.mapbox.mapboxsdk.location.modes.RenderMode; -import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.Style; -import com.mapbox.mapboxsdk.style.layers.Layer; -import com.mapbox.mapboxsdk.style.sources.GeoJsonSource; - -import org.junit.Before; -import org.junit.Test; -import org.mockito.Mockito; - -import java.util.Set; - -import static com.mapbox.mapboxsdk.location.LocationComponentConstants.ACCURACY_LAYER; -import static com.mapbox.mapboxsdk.location.LocationComponentConstants.BACKGROUND_ICON; -import static com.mapbox.mapboxsdk.location.LocationComponentConstants.BACKGROUND_LAYER; -import static com.mapbox.mapboxsdk.location.LocationComponentConstants.BACKGROUND_STALE_ICON; -import static com.mapbox.mapboxsdk.location.LocationComponentConstants.BEARING_ICON; -import static com.mapbox.mapboxsdk.location.LocationComponentConstants.BEARING_LAYER; -import static com.mapbox.mapboxsdk.location.LocationComponentConstants.FOREGROUND_ICON; -import static com.mapbox.mapboxsdk.location.LocationComponentConstants.FOREGROUND_LAYER; -import static com.mapbox.mapboxsdk.location.LocationComponentConstants.FOREGROUND_STALE_ICON; -import static com.mapbox.mapboxsdk.location.LocationComponentConstants.LOCATION_SOURCE; -import static com.mapbox.mapboxsdk.location.LocationComponentConstants.PROPERTY_ACCURACY_RADIUS; -import static com.mapbox.mapboxsdk.location.LocationComponentConstants.PROPERTY_COMPASS_BEARING; -import static com.mapbox.mapboxsdk.location.LocationComponentConstants.PROPERTY_FOREGROUND_ICON_OFFSET; -import static com.mapbox.mapboxsdk.location.LocationComponentConstants.PROPERTY_GPS_BEARING; -import static com.mapbox.mapboxsdk.location.LocationComponentConstants.PROPERTY_SHADOW_ICON_OFFSET; -import static com.mapbox.mapboxsdk.location.LocationComponentConstants.SHADOW_ICON; -import static com.mapbox.mapboxsdk.location.LocationComponentConstants.SHADOW_LAYER; -import static com.mapbox.mapboxsdk.location.MapboxAnimator.ANIMATOR_LAYER_ACCURACY; -import static com.mapbox.mapboxsdk.location.MapboxAnimator.ANIMATOR_LAYER_COMPASS_BEARING; -import static com.mapbox.mapboxsdk.location.MapboxAnimator.ANIMATOR_LAYER_GPS_BEARING; -import static com.mapbox.mapboxsdk.location.MapboxAnimator.ANIMATOR_LAYER_LATLNG; -import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.assertNull; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -public class LocationLayerControllerTest { - - private MapboxMap mapboxMap = mock(MapboxMap.class); - private Style style = mock(Style.class); - - @Before - public void before() { - when(mapboxMap.getStyle()).thenReturn(style); - } - - @Test - public void onInitialization_locationSourceIsAdded() { - OnRenderModeChangedListener internalRenderModeChangedListener = mock(OnRenderModeChangedListener.class); - LayerSourceProvider sourceProvider = buildLayerProvider(); - GeoJsonSource locationSource = mock(GeoJsonSource.class); - when(sourceProvider.generateSource(any(Feature.class))).thenReturn(locationSource); - LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class); - LocationComponentOptions options = mock(LocationComponentOptions.class); - - new LocationLayerController(mapboxMap, mapboxMap.getStyle(), sourceProvider, buildFeatureProvider(options), - bitmapProvider, options, internalRenderModeChangedListener); - - verify(style).addSource(locationSource); - } - - @Test - public void onInitialization_shadowLayerIsAdded() { - OnRenderModeChangedListener internalRenderModeChangedListener = mock(OnRenderModeChangedListener.class); - LayerSourceProvider sourceProvider = buildLayerProvider(); - Layer shadowLayer = mock(Layer.class); - when(sourceProvider.generateLayer(SHADOW_LAYER)).thenReturn(shadowLayer); - GeoJsonSource locationSource = mock(GeoJsonSource.class); - when(sourceProvider.generateSource(any(Feature.class))).thenReturn(locationSource); - LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class); - LocationComponentOptions options = mock(LocationComponentOptions.class); - - new LocationLayerController(mapboxMap, mapboxMap.getStyle(), sourceProvider, buildFeatureProvider(options), - bitmapProvider, options, internalRenderModeChangedListener); - - verify(style).addLayerBelow(shadowLayer, BACKGROUND_LAYER); - } - - @Test - public void onInitialization_backgroundLayerIsAdded() { - OnRenderModeChangedListener internalRenderModeChangedListener = mock(OnRenderModeChangedListener.class); - LayerSourceProvider sourceProvider = buildLayerProvider(); - Layer backgroundLayer = mock(Layer.class); - when(sourceProvider.generateLayer(BACKGROUND_LAYER)).thenReturn(backgroundLayer); - GeoJsonSource locationSource = mock(GeoJsonSource.class); - when(sourceProvider.generateSource(any(Feature.class))).thenReturn(locationSource); - LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class); - LocationComponentOptions options = mock(LocationComponentOptions.class); - - new LocationLayerController(mapboxMap, mapboxMap.getStyle(), sourceProvider, buildFeatureProvider(options), - bitmapProvider, options, internalRenderModeChangedListener); - - verify(style).addLayerBelow(backgroundLayer, FOREGROUND_LAYER); - } - - @Test - public void onInitialization_foregroundLayerIsAdded() { - OnRenderModeChangedListener internalRenderModeChangedListener = mock(OnRenderModeChangedListener.class); - LayerSourceProvider sourceProvider = buildLayerProvider(); - Layer foregroundLayer = mock(Layer.class); - when(sourceProvider.generateLayer(FOREGROUND_LAYER)).thenReturn(foregroundLayer); - GeoJsonSource locationSource = mock(GeoJsonSource.class); - when(sourceProvider.generateSource(any(Feature.class))).thenReturn(locationSource); - LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class); - LocationComponentOptions options = mock(LocationComponentOptions.class); - - new LocationLayerController(mapboxMap, mapboxMap.getStyle(), sourceProvider, buildFeatureProvider(options), - bitmapProvider, options, internalRenderModeChangedListener); - - verify(style).addLayerBelow(foregroundLayer, BEARING_LAYER); - } - - @Test - public void onInitialization_bearingLayerIsAdded() { - OnRenderModeChangedListener internalRenderModeChangedListener = mock(OnRenderModeChangedListener.class); - LayerSourceProvider sourceProvider = buildLayerProvider(); - Layer bearingLayer = mock(Layer.class); - when(sourceProvider.generateLayer(BEARING_LAYER)).thenReturn(bearingLayer); - GeoJsonSource locationSource = mock(GeoJsonSource.class); - when(sourceProvider.generateSource(any(Feature.class))).thenReturn(locationSource); - LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class); - LocationComponentOptions options = mock(LocationComponentOptions.class); - String layerBelow = "layer-below"; - when(options.layerBelow()).thenReturn(layerBelow); - - new LocationLayerController(mapboxMap, mapboxMap.getStyle(), sourceProvider, buildFeatureProvider(options), - bitmapProvider, options, internalRenderModeChangedListener); - - verify(style).addLayerBelow(bearingLayer, layerBelow); - } - - @Test - public void onInitialization_accuracyLayerIsAdded() { - OnRenderModeChangedListener internalRenderModeChangedListener = mock(OnRenderModeChangedListener.class); - LayerSourceProvider sourceProvider = buildLayerProvider(); - Layer accuracyLayer = mock(Layer.class); - when(sourceProvider.generateAccuracyLayer()).thenReturn(accuracyLayer); - GeoJsonSource locationSource = mock(GeoJsonSource.class); - when(sourceProvider.generateSource(any(Feature.class))).thenReturn(locationSource); - LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class); - LocationComponentOptions options = mock(LocationComponentOptions.class); - - new LocationLayerController(mapboxMap, mapboxMap.getStyle(), sourceProvider, buildFeatureProvider(options), - bitmapProvider, options, internalRenderModeChangedListener); - - verify(style).addLayerBelow(accuracyLayer, BACKGROUND_LAYER); - } - - @Test - public void onInitialization_numberOfCachedLayerIdsIsConstant() { - OnRenderModeChangedListener internalRenderModeChangedListener = mock(OnRenderModeChangedListener.class); - LayerSourceProvider sourceProvider = buildLayerProvider(); - GeoJsonSource locationSource = mock(GeoJsonSource.class); - when(sourceProvider.generateSource(any(Feature.class))).thenReturn(locationSource); - LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class); - LocationComponentOptions options = mock(LocationComponentOptions.class); - - LocationLayerController controller = - new LocationLayerController(mapboxMap, mapboxMap.getStyle(), sourceProvider, buildFeatureProvider(options), - bitmapProvider, options, internalRenderModeChangedListener); - - controller.initializeComponents(mapboxMap.getStyle(), options); - - assertEquals(5, controller.layerSet.size()); - } - - @Test - public void applyStyle_styleShadowWithValidElevation() { - OnRenderModeChangedListener internalRenderModeChangedListener = mock(OnRenderModeChangedListener.class); - LayerSourceProvider sourceProvider = buildLayerProvider(); - when(sourceProvider.generateSource(any(Feature.class))).thenReturn(mock(GeoJsonSource.class)); - LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class); - Bitmap bitmap = mock(Bitmap.class); - when(bitmapProvider.generateShadowBitmap(any(LocationComponentOptions.class))).thenReturn(bitmap); - LocationComponentOptions options = mock(LocationComponentOptions.class); - when(options.elevation()).thenReturn(2f); - - // Style is applied on initialization - new LocationLayerController(mapboxMap, mapboxMap.getStyle(), sourceProvider, buildFeatureProvider(options), - bitmapProvider, options, internalRenderModeChangedListener); - - verify(style).addImage(SHADOW_ICON, bitmap); - } - - @Test - public void applyStyle_ignoreStyleShadowWithInvalidElevation() { - OnRenderModeChangedListener internalRenderModeChangedListener = mock(OnRenderModeChangedListener.class); - LayerSourceProvider sourceProvider = buildLayerProvider(); - when(sourceProvider.generateSource(any(Feature.class))).thenReturn(mock(GeoJsonSource.class)); - LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class); - Bitmap bitmap = mock(Bitmap.class); - when(bitmapProvider.generateShadowBitmap(any(LocationComponentOptions.class))).thenReturn(bitmap); - LocationComponentOptions options = mock(LocationComponentOptions.class); - when(options.elevation()).thenReturn(0f); - - new LocationLayerController(mapboxMap, mapboxMap.getStyle(), sourceProvider, buildFeatureProvider(options), - bitmapProvider, options, internalRenderModeChangedListener); - - verify(style, times(0)).addImage(SHADOW_ICON, bitmap); - } - - @Test - public void applyStyle_styleForegroundFromOptions() { - OnRenderModeChangedListener internalRenderModeChangedListener = mock(OnRenderModeChangedListener.class); - LayerSourceProvider sourceProvider = buildLayerProvider(); - when(sourceProvider.generateSource(any(Feature.class))).thenReturn(mock(GeoJsonSource.class)); - LocationComponentOptions options = mock(LocationComponentOptions.class); - int drawableResId = 123; - int tintColor = 456; - when(options.foregroundDrawable()).thenReturn(drawableResId); - when(options.foregroundTintColor()).thenReturn(tintColor); - LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class); - Bitmap bitmap = mock(Bitmap.class); - when(bitmapProvider.generateBitmap(drawableResId, tintColor)).thenReturn(bitmap); - - new LocationLayerController(mapboxMap, mapboxMap.getStyle(), sourceProvider, buildFeatureProvider(options), - bitmapProvider, options, internalRenderModeChangedListener); - - verify(style).addImage(FOREGROUND_ICON, bitmap); - } - - @Test - public void applyStyle_styleForegroundStaleFromOptions() { - OnRenderModeChangedListener internalRenderModeChangedListener = mock(OnRenderModeChangedListener.class); - LayerSourceProvider sourceProvider = buildLayerProvider(); - when(sourceProvider.generateSource(any(Feature.class))).thenReturn(mock(GeoJsonSource.class)); - LocationComponentOptions options = mock(LocationComponentOptions.class); - int drawableResId = 123; - int tintColor = 456; - when(options.foregroundDrawableStale()).thenReturn(drawableResId); - when(options.foregroundStaleTintColor()).thenReturn(tintColor); - LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class); - Bitmap bitmap = mock(Bitmap.class); - when(bitmapProvider.generateBitmap(drawableResId, tintColor)).thenReturn(bitmap); - - new LocationLayerController(mapboxMap, mapboxMap.getStyle(), sourceProvider, buildFeatureProvider(options), - bitmapProvider, options, internalRenderModeChangedListener); - - verify(style).addImage(FOREGROUND_STALE_ICON, bitmap); - } - - @Test - public void applyStyle_styleBackgroundFromOptions() { - OnRenderModeChangedListener internalRenderModeChangedListener = mock(OnRenderModeChangedListener.class); - LayerSourceProvider sourceProvider = buildLayerProvider(); - when(sourceProvider.generateSource(any(Feature.class))).thenReturn(mock(GeoJsonSource.class)); - LocationComponentOptions options = mock(LocationComponentOptions.class); - int drawableResId = 123; - int tintColor = 456; - when(options.backgroundDrawable()).thenReturn(drawableResId); - when(options.backgroundTintColor()).thenReturn(tintColor); - LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class); - Bitmap bitmap = mock(Bitmap.class); - when(bitmapProvider.generateBitmap(drawableResId, tintColor)).thenReturn(bitmap); - - new LocationLayerController(mapboxMap, mapboxMap.getStyle(), sourceProvider, buildFeatureProvider(options), - bitmapProvider, options, internalRenderModeChangedListener); - - verify(style).addImage(BACKGROUND_ICON, bitmap); - } - - @Test - public void applyStyle_styleBackgroundStaleFromOptions() { - OnRenderModeChangedListener internalRenderModeChangedListener = mock(OnRenderModeChangedListener.class); - LayerSourceProvider sourceProvider = buildLayerProvider(); - when(sourceProvider.generateSource(any(Feature.class))).thenReturn(mock(GeoJsonSource.class)); - LocationComponentOptions options = mock(LocationComponentOptions.class); - int drawableResId = 123; - int tintColor = 456; - when(options.backgroundDrawableStale()).thenReturn(drawableResId); - when(options.backgroundStaleTintColor()).thenReturn(tintColor); - LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class); - Bitmap bitmap = mock(Bitmap.class); - when(bitmapProvider.generateBitmap(drawableResId, tintColor)).thenReturn(bitmap); - - new LocationLayerController(mapboxMap, mapboxMap.getStyle(), sourceProvider, buildFeatureProvider(options), - bitmapProvider, options, internalRenderModeChangedListener); - - verify(style).addImage(BACKGROUND_STALE_ICON, bitmap); - } - - @Test - public void applyStyle_styleBearingFromOptions() { - OnRenderModeChangedListener internalRenderModeChangedListener = mock(OnRenderModeChangedListener.class); - LayerSourceProvider sourceProvider = buildLayerProvider(); - when(sourceProvider.generateSource(any(Feature.class))).thenReturn(mock(GeoJsonSource.class)); - LocationComponentOptions options = mock(LocationComponentOptions.class); - int drawableResId = 123; - int tintColor = 456; - when(options.bearingDrawable()).thenReturn(drawableResId); - when(options.bearingTintColor()).thenReturn(tintColor); - LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class); - Bitmap bitmap = mock(Bitmap.class); - when(bitmapProvider.generateBitmap(drawableResId, tintColor)).thenReturn(bitmap); - - new LocationLayerController(mapboxMap, mapboxMap.getStyle(), sourceProvider, buildFeatureProvider(options), - bitmapProvider, options, internalRenderModeChangedListener); - - verify(style).addImage(BEARING_ICON, bitmap); - } - - @Test - public void applyStyle_layerBelowChanged() { - OnRenderModeChangedListener internalRenderModeChangedListener = mock(OnRenderModeChangedListener.class); - LayerSourceProvider sourceProvider = buildLayerProvider(); - when(sourceProvider.generateSource(any(Feature.class))).thenReturn(mock(GeoJsonSource.class)); - - LocationComponentOptions options = mock(LocationComponentOptions.class); - LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class); - Bitmap bitmap = mock(Bitmap.class); - when(bitmapProvider.generateShadowBitmap(any(LocationComponentOptions.class))).thenReturn(bitmap); - - LocationLayerController layerController = - new LocationLayerController(mapboxMap, mapboxMap.getStyle(), sourceProvider, buildFeatureProvider(options), - bitmapProvider, options, internalRenderModeChangedListener); - - Layer bearingLayer2 = mock(Layer.class); - when(sourceProvider.generateLayer(BEARING_LAYER)).thenReturn(bearingLayer2); - Layer foregroundLayer2 = mock(Layer.class); - when(sourceProvider.generateLayer(FOREGROUND_LAYER)).thenReturn(foregroundLayer2); - Layer backgroundLayer2 = mock(Layer.class); - when(sourceProvider.generateLayer(BACKGROUND_LAYER)).thenReturn(backgroundLayer2); - Layer shadowLayer2 = mock(Layer.class); - when(sourceProvider.generateLayer(SHADOW_LAYER)).thenReturn(shadowLayer2); - Layer accuracyLayer2 = mock(Layer.class); - when(sourceProvider.generateAccuracyLayer()).thenReturn(accuracyLayer2); - String layerBelow = "layer-below"; - when(options.layerBelow()).thenReturn(layerBelow); - - layerController.applyStyle(options); - - verify(style).removeLayer(BEARING_LAYER); - verify(style).removeLayer(FOREGROUND_LAYER); - verify(style).removeLayer(BACKGROUND_LAYER); - verify(style).removeLayer(SHADOW_LAYER); - verify(style).removeLayer(ACCURACY_LAYER); - - verify(style).addLayerBelow(bearingLayer2, layerBelow); - verify(style).addLayerBelow(foregroundLayer2, BEARING_LAYER); - verify(style).addLayerBelow(backgroundLayer2, FOREGROUND_LAYER); - verify(style).addLayerBelow(shadowLayer2, BACKGROUND_LAYER); - verify(style).addLayerBelow(accuracyLayer2, BACKGROUND_LAYER); - } - - @Test - public void applyStyle_layerBelowNotChanged() { - OnRenderModeChangedListener internalRenderModeChangedListener = mock(OnRenderModeChangedListener.class); - LayerSourceProvider sourceProvider = buildLayerProvider(); - when(sourceProvider.generateSource(any(Feature.class))).thenReturn(mock(GeoJsonSource.class)); - LocationComponentOptions options = mock(LocationComponentOptions.class); - LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class); - Bitmap bitmap = mock(Bitmap.class); - when(bitmapProvider.generateShadowBitmap(any(LocationComponentOptions.class))).thenReturn(bitmap); - - String layerBelow = "layer-below"; - when(options.layerBelow()).thenReturn(layerBelow); - - LocationLayerController layerController = - new LocationLayerController(mapboxMap, mapboxMap.getStyle(), sourceProvider, buildFeatureProvider(options), - bitmapProvider, options, internalRenderModeChangedListener); - - options = mock(LocationComponentOptions.class); - layerBelow = "layer-below"; - when(options.layerBelow()).thenReturn(layerBelow); - layerController.applyStyle(options); - - verify(style, times(0)).removeLayer(any(String.class)); - verify(style, times(5)).addLayerBelow(any(Layer.class), any(String.class)); - } - - @Test - public void applyStyle_layerBelowNotChangedNull() { - OnRenderModeChangedListener internalRenderModeChangedListener = mock(OnRenderModeChangedListener.class); - LayerSourceProvider sourceProvider = buildLayerProvider(); - when(sourceProvider.generateSource(any(Feature.class))).thenReturn(mock(GeoJsonSource.class)); - LocationComponentOptions options = mock(LocationComponentOptions.class); - LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class); - Bitmap bitmap = mock(Bitmap.class); - when(bitmapProvider.generateShadowBitmap(any(LocationComponentOptions.class))).thenReturn(bitmap); - - LocationLayerController layerController = - new LocationLayerController(mapboxMap, mapboxMap.getStyle(), sourceProvider, buildFeatureProvider(options), - bitmapProvider, options, internalRenderModeChangedListener); - - options = mock(LocationComponentOptions.class); - layerController.applyStyle(options); - - verify(style, times(0)).removeLayer(any(String.class)); - verify(style, times(1)).addLayer(any(Layer.class)); - verify(style, times(4)).addLayerBelow(any(Layer.class), Mockito.<String>any()); - } - - @Test - public void updateForegroundOffset_foregroundIconPropertyIsUpdated() { - OnRenderModeChangedListener internalRenderModeChangedListener = mock(OnRenderModeChangedListener.class); - LayerSourceProvider sourceProvider = buildLayerProvider(); - GeoJsonSource locationSource = mock(GeoJsonSource.class); - when(sourceProvider.generateSource(any(Feature.class))).thenReturn(locationSource); - LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class); - LocationComponentOptions options = mock(LocationComponentOptions.class); - Feature locationFeature = mock(Feature.class); - LocationLayerController layer = new LocationLayerController( - mapboxMap, mapboxMap.getStyle(), sourceProvider, buildFeatureProvider(locationFeature, options), - bitmapProvider, options, internalRenderModeChangedListener - ); - - layer.updateForegroundOffset(2d); - - verify(locationFeature).addProperty(eq(PROPERTY_FOREGROUND_ICON_OFFSET), any(JsonElement.class)); - } - - @Test - public void updateForegroundOffset_shadowPropertyIsUpdated() { - OnRenderModeChangedListener internalRenderModeChangedListener = mock(OnRenderModeChangedListener.class); - LayerSourceProvider sourceProvider = buildLayerProvider(); - GeoJsonSource locationSource = mock(GeoJsonSource.class); - when(sourceProvider.generateSource(any(Feature.class))).thenReturn(locationSource); - LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class); - LocationComponentOptions options = mock(LocationComponentOptions.class); - Feature locationFeature = mock(Feature.class); - LocationLayerController layer = new LocationLayerController( - mapboxMap, mapboxMap.getStyle(), sourceProvider, buildFeatureProvider(locationFeature, options), - bitmapProvider, options, internalRenderModeChangedListener - ); - layer.updateForegroundOffset(2d); - - verify(locationFeature).addProperty(eq(PROPERTY_SHADOW_ICON_OFFSET), any(JsonElement.class)); - } - - @Test - public void onNewLatLngValue_locationFeatureIsUpdated() { - OnRenderModeChangedListener internalRenderModeChangedListener = mock(OnRenderModeChangedListener.class); - GeoJsonSource locationSource = mock(GeoJsonSource.class); - when(style.getSourceAs(LOCATION_SOURCE)).thenReturn(locationSource); - LayerSourceProvider sourceProvider = buildLayerProvider(); - when(sourceProvider.generateSource(any(Feature.class))).thenReturn(locationSource); - LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class); - LocationComponentOptions options = mock(LocationComponentOptions.class); - Feature locationFeature = mock(Feature.class); - LocationLayerController layer = new LocationLayerController( - mapboxMap, mapboxMap.getStyle(), sourceProvider, buildFeatureProvider(locationFeature, options), - bitmapProvider, options, internalRenderModeChangedListener - ); - - getAnimationListener(ANIMATOR_LAYER_LATLNG, layer.getAnimationListeners()).onNewAnimationValue(new LatLng()); - - // wanted twice (once for initialization) - verify(locationSource, times(2)).setGeoJson(locationFeature); - } - - @Test - public void onNewGpsBearingValue_locationFeatureIsUpdated() { - OnRenderModeChangedListener internalRenderModeChangedListener = mock(OnRenderModeChangedListener.class); - GeoJsonSource locationSource = mock(GeoJsonSource.class); - when(style.getSourceAs(LOCATION_SOURCE)).thenReturn(locationSource); - LayerSourceProvider sourceProvider = buildLayerProvider(); - when(sourceProvider.generateSource(any(Feature.class))).thenReturn(locationSource); - LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class); - LocationComponentOptions options = mock(LocationComponentOptions.class); - Feature locationFeature = mock(Feature.class); - LocationLayerController layer = new LocationLayerController( - mapboxMap, mapboxMap.getStyle(), sourceProvider, buildFeatureProvider(locationFeature, options), - bitmapProvider, options, internalRenderModeChangedListener - ); - layer.setRenderMode(RenderMode.GPS); - float gpsBearing = 2f; - - getAnimationListener(ANIMATOR_LAYER_GPS_BEARING, layer.getAnimationListeners()).onNewAnimationValue(gpsBearing); - - verify(locationFeature).addNumberProperty(PROPERTY_GPS_BEARING, gpsBearing); - } - - @Test - public void onNewGpsBearingValue_updateIgnoredWithInvalidRenderMode() { - OnRenderModeChangedListener internalRenderModeChangedListener = mock(OnRenderModeChangedListener.class); - GeoJsonSource locationSource = mock(GeoJsonSource.class); - when(style.getSourceAs(LOCATION_SOURCE)).thenReturn(locationSource); - LayerSourceProvider sourceProvider = buildLayerProvider(); - when(sourceProvider.generateSource(any(Feature.class))).thenReturn(locationSource); - LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class); - LocationComponentOptions options = mock(LocationComponentOptions.class); - Feature locationFeature = mock(Feature.class); - LocationLayerController layer = new LocationLayerController( - mapboxMap, mapboxMap.getStyle(), sourceProvider, buildFeatureProvider(locationFeature, options), - bitmapProvider, options, internalRenderModeChangedListener - ); - layer.setRenderMode(RenderMode.COMPASS); - float gpsBearing = 2f; - - assertNull(getAnimationListener(ANIMATOR_LAYER_GPS_BEARING, layer.getAnimationListeners())); - verify(locationFeature, times(0)).addNumberProperty(PROPERTY_GPS_BEARING, gpsBearing); - } - - @Test - public void onNewCompassBearingValue_locationFeatureIsUpdated() { - OnRenderModeChangedListener internalRenderModeChangedListener = mock(OnRenderModeChangedListener.class); - GeoJsonSource locationSource = mock(GeoJsonSource.class); - when(style.getSourceAs(LOCATION_SOURCE)).thenReturn(locationSource); - LayerSourceProvider sourceProvider = buildLayerProvider(); - when(sourceProvider.generateSource(any(Feature.class))).thenReturn(locationSource); - LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class); - LocationComponentOptions options = mock(LocationComponentOptions.class); - Feature locationFeature = mock(Feature.class); - LocationLayerController layer = new LocationLayerController( - mapboxMap, mapboxMap.getStyle(), sourceProvider, buildFeatureProvider(locationFeature, options), - bitmapProvider, options, internalRenderModeChangedListener - ); - layer.setRenderMode(RenderMode.COMPASS); - float compassBearing = 2f; - - getAnimationListener(ANIMATOR_LAYER_COMPASS_BEARING, layer.getAnimationListeners()) - .onNewAnimationValue(compassBearing); - - verify(locationFeature).addNumberProperty(PROPERTY_COMPASS_BEARING, compassBearing); - } - - @Test - public void onNewCompassBearingValue_updateIgnoredWithInvalidRenderMode() { - OnRenderModeChangedListener internalRenderModeChangedListener = mock(OnRenderModeChangedListener.class); - GeoJsonSource locationSource = mock(GeoJsonSource.class); - when(style.getSourceAs(LOCATION_SOURCE)).thenReturn(locationSource); - LayerSourceProvider sourceProvider = buildLayerProvider(); - when(sourceProvider.generateSource(any(Feature.class))).thenReturn(locationSource); - LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class); - LocationComponentOptions options = mock(LocationComponentOptions.class); - Feature locationFeature = mock(Feature.class); - LocationLayerController layer = new LocationLayerController( - mapboxMap, mapboxMap.getStyle(), sourceProvider, buildFeatureProvider(locationFeature, options), - bitmapProvider, options, internalRenderModeChangedListener - ); - layer.setRenderMode(RenderMode.GPS); - float compassBearing = 2f; - - assertNull(getAnimationListener(ANIMATOR_LAYER_COMPASS_BEARING, layer.getAnimationListeners())); - verify(locationFeature, times(0)).addNumberProperty(PROPERTY_COMPASS_BEARING, compassBearing); - } - - @Test - public void onNewAccuracyRadiusValue_locationFeatureIsUpdated() { - OnRenderModeChangedListener internalRenderModeChangedListener = mock(OnRenderModeChangedListener.class); - GeoJsonSource locationSource = mock(GeoJsonSource.class); - when(style.getSourceAs(LOCATION_SOURCE)).thenReturn(locationSource); - LayerSourceProvider sourceProvider = buildLayerProvider(); - when(sourceProvider.generateSource(any(Feature.class))).thenReturn(locationSource); - LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class); - LocationComponentOptions options = mock(LocationComponentOptions.class); - Feature locationFeature = mock(Feature.class); - LocationLayerController layer = new LocationLayerController( - mapboxMap, mapboxMap.getStyle(), sourceProvider, buildFeatureProvider(locationFeature, options), - bitmapProvider, options, internalRenderModeChangedListener - ); - layer.setRenderMode(RenderMode.NORMAL); - float accuracyRadiusValue = 2f; - - getAnimationListener(ANIMATOR_LAYER_ACCURACY, layer.getAnimationListeners()) - .onNewAnimationValue(accuracyRadiusValue); - - verify(locationFeature).addNumberProperty(PROPERTY_ACCURACY_RADIUS, accuracyRadiusValue); - } - - @Test - public void onNewAccuracyRadiusValue_updateIgnoredWithInvalidRenderMode() { - OnRenderModeChangedListener internalRenderModeChangedListener = mock(OnRenderModeChangedListener.class); - GeoJsonSource locationSource = mock(GeoJsonSource.class); - when(style.getSourceAs(LOCATION_SOURCE)).thenReturn(locationSource); - LayerSourceProvider sourceProvider = buildLayerProvider(); - when(sourceProvider.generateSource(any(Feature.class))).thenReturn(locationSource); - LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class); - LocationComponentOptions options = mock(LocationComponentOptions.class); - Feature locationFeature = mock(Feature.class); - LocationLayerController layer = new LocationLayerController( - mapboxMap, mapboxMap.getStyle(), sourceProvider, buildFeatureProvider(locationFeature, options), - bitmapProvider, options, internalRenderModeChangedListener - ); - layer.setRenderMode(RenderMode.GPS); - float accuracyRadiusValue = 2f; - - assertNull(getAnimationListener(ANIMATOR_LAYER_ACCURACY, layer.getAnimationListeners())); - verify(locationFeature, times(0)) - .addNumberProperty(PROPERTY_ACCURACY_RADIUS, accuracyRadiusValue); - } - - @Test - public void renderModeChanged_doNotNotifyAboutDuplicates_NORMAL() { - OnRenderModeChangedListener internalRenderModeChangedListener = mock(OnRenderModeChangedListener.class); - LayerSourceProvider sourceProvider = buildLayerProvider(); - GeoJsonSource locationSource = mock(GeoJsonSource.class); - when(sourceProvider.generateSource(any(Feature.class))).thenReturn(locationSource); - LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class); - LocationComponentOptions options = mock(LocationComponentOptions.class); - - LocationLayerController controller = - new LocationLayerController(mapboxMap, mapboxMap.getStyle(), sourceProvider, buildFeatureProvider(options), - bitmapProvider, options, internalRenderModeChangedListener); - - controller.setRenderMode(RenderMode.NORMAL); - controller.setRenderMode(RenderMode.NORMAL); - - verify(internalRenderModeChangedListener, times(1)).onRenderModeChanged(RenderMode.NORMAL); - } - - @Test - public void renderModeChanged_doNotNotifyAboutDuplicates_GPS() { - OnRenderModeChangedListener internalRenderModeChangedListener = mock(OnRenderModeChangedListener.class); - LayerSourceProvider sourceProvider = buildLayerProvider(); - GeoJsonSource locationSource = mock(GeoJsonSource.class); - when(sourceProvider.generateSource(any(Feature.class))).thenReturn(locationSource); - LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class); - LocationComponentOptions options = mock(LocationComponentOptions.class); - - LocationLayerController controller = - new LocationLayerController(mapboxMap, mapboxMap.getStyle(), sourceProvider, buildFeatureProvider(options), - bitmapProvider, options, internalRenderModeChangedListener); - - controller.setRenderMode(RenderMode.GPS); - controller.setRenderMode(RenderMode.GPS); - - verify(internalRenderModeChangedListener, times(1)).onRenderModeChanged(RenderMode.GPS); - } - - @Test - public void layerHidden_renderModeChanged_layerShown_foregroundIconUpdated() { - OnRenderModeChangedListener internalRenderModeChangedListener = mock(OnRenderModeChangedListener.class); - LayerSourceProvider sourceProvider = buildLayerProvider(); - when(sourceProvider.generateSource(any(Feature.class))).thenReturn(mock(GeoJsonSource.class)); - LocationComponentOptions options = mock(LocationComponentOptions.class); - int drawableResId = 123; - int tintColor = 456; - when(options.foregroundDrawable()).thenReturn(drawableResId); - when(options.foregroundTintColor()).thenReturn(tintColor); - LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class); - Bitmap bitmap = mock(Bitmap.class); - when(bitmapProvider.generateBitmap(drawableResId, tintColor)).thenReturn(bitmap); - - LocationLayerController controller = - new LocationLayerController(mapboxMap, mapboxMap.getStyle(), sourceProvider, buildFeatureProvider(options), - bitmapProvider, options, internalRenderModeChangedListener); - - verify(style).addImage(FOREGROUND_ICON, bitmap); - - int drawableGpsResId = 789; - when(options.gpsDrawable()).thenReturn(drawableGpsResId); - - Bitmap bitmapGps = mock(Bitmap.class); - when(bitmapProvider.generateBitmap(drawableGpsResId, tintColor)).thenReturn(bitmapGps); - - controller.hide(); - - controller.setRenderMode(RenderMode.GPS); - - controller.show(); - - verify(style).addImage(FOREGROUND_ICON, bitmapGps); - } - - private LayerFeatureProvider buildFeatureProvider(@NonNull LocationComponentOptions options) { - LayerFeatureProvider provider = mock(LayerFeatureProvider.class); - when(provider.generateLocationFeature(null, options)).thenReturn(mock(Feature.class)); - return provider; - } - - private LayerFeatureProvider buildFeatureProvider(Feature feature, @NonNull LocationComponentOptions options) { - LayerFeatureProvider provider = mock(LayerFeatureProvider.class); - when(provider.generateLocationFeature(null, options)).thenReturn(feature); - return provider; - } - - private LayerSourceProvider buildLayerProvider() { - LayerSourceProvider layerSourceProvider = mock(LayerSourceProvider.class); - - Layer shadowLayer = mock(Layer.class); - when(shadowLayer.getId()).thenReturn(SHADOW_LAYER); - when(layerSourceProvider.generateLayer(SHADOW_LAYER)).thenReturn(shadowLayer); - - Layer backgroundLayer = mock(Layer.class); - when(backgroundLayer.getId()).thenReturn(BACKGROUND_LAYER); - when(layerSourceProvider.generateLayer(BACKGROUND_LAYER)).thenReturn(backgroundLayer); - - Layer foregroundLayer = mock(Layer.class); - when(foregroundLayer.getId()).thenReturn(FOREGROUND_LAYER); - when(layerSourceProvider.generateLayer(FOREGROUND_LAYER)).thenReturn(foregroundLayer); - - Layer bearingLayer = mock(Layer.class); - when(bearingLayer.getId()).thenReturn(BEARING_LAYER); - when(layerSourceProvider.generateLayer(BEARING_LAYER)).thenReturn(bearingLayer); - - Layer accuracyLayer = mock(Layer.class); - when(accuracyLayer.getId()).thenReturn(ACCURACY_LAYER); - when(layerSourceProvider.generateAccuracyLayer()).thenReturn(accuracyLayer); - return layerSourceProvider; - } - - private <T> MapboxAnimator.AnimationsValueChangeListener<T> getAnimationListener( - @MapboxAnimator.Type int animatorType, - Set<AnimatorListenerHolder> holders) { - for (AnimatorListenerHolder holder : holders) { - @MapboxAnimator.Type int type = holder.getAnimatorType(); - if (type == animatorType) { - return holder.getListener(); - } - } - return null; - } -}
\ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/location/MapboxAnimatorTest.kt b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/location/MapboxAnimatorTest.kt deleted file mode 100644 index 7c126c7832..0000000000 --- a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/location/MapboxAnimatorTest.kt +++ /dev/null @@ -1,43 +0,0 @@ -package com.mapbox.mapboxsdk.location - -import android.animation.ValueAnimator -import io.mockk.every -import io.mockk.mockk -import io.mockk.verify -import org.junit.Test -import org.junit.runner.RunWith -import org.robolectric.RobolectricTestRunner - -@RunWith(RobolectricTestRunner::class) -class MapboxAnimatorTest { - - @Test - fun fps_unlimited() { - val valueAnimator = mockk<ValueAnimator>() - every { valueAnimator.animatedValue } answers { 5f } - val listener = mockk<MapboxAnimator.AnimationsValueChangeListener<Float>>() - every { listener.onNewAnimationValue(any()) } answers {} - val mapboxAnimator = MapboxFloatAnimator(0f, 10f, listener, Int.MAX_VALUE) - - for (i in 0 until 5) - mapboxAnimator.onAnimationUpdate(valueAnimator) - - verify(exactly = 5) { listener.onNewAnimationValue(5f) } - } - - @Test - fun fps_limited() { - val valueAnimator = mockk<ValueAnimator>() - every { valueAnimator.animatedValue } answers { 5f } - val listener = mockk<MapboxAnimator.AnimationsValueChangeListener<Float>>() - every { listener.onNewAnimationValue(any()) } answers {} - val mapboxAnimator = MapboxFloatAnimator(0f, 10f, listener, 5) - - for (i in 0 until 5) { - mapboxAnimator.onAnimationUpdate(valueAnimator) - Thread.sleep(150) - } - - verify(exactly = 3) { listener.onNewAnimationValue(5f) } - } -}
\ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/location/UtilsTest.java b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/location/UtilsTest.java deleted file mode 100644 index bf5ee40f4a..0000000000 --- a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/location/UtilsTest.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.mapbox.mapboxsdk.location; - -import org.junit.Test; - -import static junit.framework.Assert.assertEquals; - -public final class UtilsTest { - - @Test - public void shortestRotation_doesReturnValueDistanceQuickestToZero() throws Exception { - float value = Utils.shortestRotation(0, 181); - assertEquals(360f, value); - value = Utils.shortestRotation(0, 179); - assertEquals(0f, value); - value = Utils.shortestRotation(0, 180); - assertEquals(0f, value); - } - - @Test - public void shortestRotation_doesReturnValueDistanceQuickestToFifty() throws Exception { - float value = Utils.shortestRotation(50, 231); - assertEquals(410f, value); - value = Utils.shortestRotation(50, 229); - assertEquals(50f, value); - value = Utils.shortestRotation(50, 180); - assertEquals(50f, value); - } -} |