summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerTest.kt
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerTest.kt')
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerTest.kt177
1 files changed, 91 insertions, 86 deletions
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerTest.kt b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerTest.kt
index 121c8f2d22..d7823031fc 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerTest.kt
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerTest.kt
@@ -10,11 +10,8 @@ import android.support.test.espresso.UiController
import android.support.test.espresso.assertion.ViewAssertions.matches
import android.support.test.espresso.matcher.ViewMatchers.isDisplayed
import android.support.test.espresso.matcher.ViewMatchers.withId
-import android.support.test.filters.LargeTest
-import android.support.test.rule.ActivityTestRule
import android.support.test.rule.GrantPermissionRule
import android.support.test.rule.GrantPermissionRule.grant
-import android.support.test.runner.AndroidJUnit4
import com.mapbox.mapboxsdk.camera.CameraUpdateFactory
import com.mapbox.mapboxsdk.constants.Style
import com.mapbox.mapboxsdk.geometry.LatLng
@@ -23,10 +20,11 @@ import com.mapbox.mapboxsdk.plugins.locationlayer.LocationLayerConstants.*
import com.mapbox.mapboxsdk.plugins.locationlayer.modes.RenderMode
import com.mapbox.mapboxsdk.plugins.utils.*
import com.mapbox.mapboxsdk.plugins.utils.MapboxTestingUtils.Companion.MAPBOX_HEAVY_STYLE
+import com.mapbox.mapboxsdk.plugins.utils.MapboxTestingUtils.Companion.MAP_CONNECTION_DELAY
+import com.mapbox.mapboxsdk.plugins.utils.MapboxTestingUtils.Companion.MAP_RENDER_DELAY
import com.mapbox.mapboxsdk.plugins.utils.MapboxTestingUtils.Companion.pushSourceUpdates
-import com.mapbox.mapboxsdk.plugins.utils.PluginGenerationUtil.Companion.MAP_CONNECTION_DELAY
-import com.mapbox.mapboxsdk.plugins.utils.PluginGenerationUtil.Companion.MAP_RENDER_DELAY
import com.mapbox.mapboxsdk.style.sources.GeoJsonSource
+import com.mapbox.mapboxsdk.testapp.activity.BaseActivityTest
import com.mapbox.mapboxsdk.testapp.activity.SingleActivity
import org.hamcrest.CoreMatchers.`is`
import org.hamcrest.CoreMatchers.notNullValue
@@ -37,47 +35,32 @@ import org.junit.Assert.assertThat
import org.junit.Before
import org.junit.Rule
import org.junit.Test
-import org.junit.rules.TestName
-import org.junit.runner.RunWith
-import timber.log.Timber
-@RunWith(AndroidJUnit4::class)
-@LargeTest
-class LocationLayerTest {
-
- @Rule
- @JvmField
- val activityRule = ActivityTestRule(SingleActivity::class.java)
-
- @Rule
- @JvmField
- val nameRule = TestName()
+class LocationLayerTest : BaseActivityTest() {
@Rule
@JvmField
val permissionRule: GrantPermissionRule = grant(Manifest.permission.ACCESS_FINE_LOCATION)
- private lateinit var idlingResource: OnMapReadyIdlingResource
+ override fun getActivityClass(): Class<*> {
+ return SingleActivity::class.java
+ }
+
private lateinit var styleChangeIdlingResource: StyleChangeIdlingResource
- private lateinit var mapboxMap: MapboxMap
private val location: Location by lazy {
val initLocation = Location("test")
initLocation.latitude = 15.0
initLocation.longitude = 17.0
+ initLocation.bearing = 10f
initLocation.accuracy = 2000f
initLocation
}
@Before
- fun beforeTest() {
- Timber.e("@Before: ${nameRule.methodName} - register idle resource")
- // If idlingResource is null, throw Kotlin exception
- idlingResource = OnMapReadyIdlingResource(activityRule.activity)
+ override fun beforeTest() {
+ super.beforeTest()
styleChangeIdlingResource = StyleChangeIdlingResource()
- IdlingRegistry.getInstance().register(idlingResource)
IdlingRegistry.getInstance().register(styleChangeIdlingResource)
- onView(withId(android.R.id.content)).check(matches(isDisplayed()))
- mapboxMap = idlingResource.mapboxMap
}
//
@@ -86,9 +69,10 @@ class LocationLayerTest {
@Test
fun renderModeNormal_sourceDoesGetAdded() {
- val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction<LocationLayerPlugin> {
- override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
- uiController: UiController, context: Context) {
+ val pluginAction = object : LocationLayerPluginAction.OnPerformLocationLayerPluginAction {
+ override fun onLocationLayerPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.activateLocationLayerPlugin(context, false)
plugin.renderMode = RenderMode.NORMAL
uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
assertThat(mapboxMap.getSource(LOCATION_SOURCE), notNullValue())
@@ -103,12 +87,13 @@ class LocationLayerTest {
@Test
fun renderModeNormal_trackingNormalLayersDoGetAdded() {
- val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction<LocationLayerPlugin> {
- override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
- uiController: UiController, context: Context) {
+ val pluginAction = object : LocationLayerPluginAction.OnPerformLocationLayerPluginAction {
+ override fun onLocationLayerPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.activateLocationLayerPlugin(context, false)
plugin.renderMode = RenderMode.NORMAL
plugin.forceLocationUpdate(location)
- uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+ mapboxMap.waitForLayer(uiController, location, FOREGROUND_LAYER)
assertThat(mapboxMap.isLayerVisible(FOREGROUND_LAYER), `is`(true))
assertThat(mapboxMap.isLayerVisible(BACKGROUND_LAYER), `is`(true))
assertThat(mapboxMap.isLayerVisible(SHADOW_LAYER), `is`(true))
@@ -121,12 +106,13 @@ class LocationLayerTest {
@Test
fun renderModeCompass_bearingLayersDoGetAdded() {
- val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction<LocationLayerPlugin> {
- override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
- uiController: UiController, context: Context) {
+ val pluginAction = object : LocationLayerPluginAction.OnPerformLocationLayerPluginAction {
+ override fun onLocationLayerPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.activateLocationLayerPlugin(context, false)
plugin.renderMode = RenderMode.COMPASS
plugin.forceLocationUpdate(location)
- uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+ mapboxMap.waitForLayer(uiController, location, FOREGROUND_LAYER)
assertThat(mapboxMap.isLayerVisible(FOREGROUND_LAYER), `is`(true))
assertThat(mapboxMap.isLayerVisible(BACKGROUND_LAYER), `is`(true))
assertThat(mapboxMap.isLayerVisible(SHADOW_LAYER), `is`(true))
@@ -139,12 +125,13 @@ class LocationLayerTest {
@Test
fun renderModeGps_navigationLayersDoGetAdded() {
- val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction<LocationLayerPlugin> {
- override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
- uiController: UiController, context: Context) {
+ val pluginAction = object : LocationLayerPluginAction.OnPerformLocationLayerPluginAction {
+ override fun onLocationLayerPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.activateLocationLayerPlugin(context, false)
plugin.renderMode = RenderMode.GPS
plugin.forceLocationUpdate(location)
- uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+ mapboxMap.waitForLayer(uiController, location, FOREGROUND_LAYER)
assertThat(mapboxMap.isLayerVisible(FOREGROUND_LAYER), `is`(true))
assertThat(mapboxMap.isLayerVisible(BACKGROUND_LAYER), `is`(true))
assertThat(mapboxMap.isLayerVisible(SHADOW_LAYER), `is`(false))
@@ -157,11 +144,14 @@ class LocationLayerTest {
@Test
fun dontShowPuckWhenRenderModeSetAndPluginDisabled() {
- val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction<LocationLayerPlugin> {
- override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
- uiController: UiController, context: Context) {
+ val pluginAction = object : LocationLayerPluginAction.OnPerformLocationLayerPluginAction {
+ override fun onLocationLayerPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.activateLocationLayerPlugin(context, false)
plugin.forceLocationUpdate(location)
- plugin.isLocationLayerEnabled = false
+ mapboxMap.waitForLayer(uiController, location, FOREGROUND_LAYER)
+ plugin.deactivateLocationLayerPlugin()
+ mapboxMap.waitForLayer(uiController, location, FOREGROUND_LAYER, shouldDisappear = true)
plugin.renderMode = RenderMode.GPS
uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
assertThat(mapboxMap.isLayerVisible(FOREGROUND_LAYER), `is`(false))
@@ -176,12 +166,15 @@ class LocationLayerTest {
@Test
fun whenLocationLayerPluginDisabled_doesSetAllLayersToVisibilityNone() {
- val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction<LocationLayerPlugin> {
- override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
- uiController: UiController, context: Context) {
+ val pluginAction = object : LocationLayerPluginAction.OnPerformLocationLayerPluginAction {
+ override fun onLocationLayerPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.activateLocationLayerPlugin(context, false)
plugin.renderMode = RenderMode.NORMAL
plugin.forceLocationUpdate(location)
- plugin.isLocationLayerEnabled = false
+ mapboxMap.waitForLayer(uiController, location, FOREGROUND_LAYER)
+ plugin.deactivateLocationLayerPlugin()
+ mapboxMap.waitForLayer(uiController, location, FOREGROUND_LAYER, shouldDisappear = true)
uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
// Check that all layers visibilities are set to none
@@ -197,14 +190,17 @@ class LocationLayerTest {
@Test
fun onMapChange_locationLayerLayersDoGetRedrawn() {
- val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction<LocationLayerPlugin> {
- override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
- uiController: UiController, context: Context) {
+ val pluginAction = object : LocationLayerPluginAction.OnPerformLocationLayerPluginAction {
+ override fun onLocationLayerPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.activateLocationLayerPlugin(context, false)
plugin.renderMode = RenderMode.NORMAL
plugin.forceLocationUpdate(location)
+ mapboxMap.waitForLayer(uiController, location, FOREGROUND_LAYER)
mapboxMap.setStyleUrl(Style.LIGHT)
- plugin.forceLocationUpdate(location)
uiController.loopMainThreadForAtLeast(MAP_CONNECTION_DELAY)
+ plugin.forceLocationUpdate(location)
+ mapboxMap.waitForLayer(uiController, location, FOREGROUND_LAYER)
assertThat(plugin.renderMode, `is`(equalTo(RenderMode.NORMAL)))
@@ -229,18 +225,21 @@ class LocationLayerTest {
@Test
fun whenStyleChanged_continuesUsingStaleIcons() {
- val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction<LocationLayerPlugin> {
- override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
- uiController: UiController, context: Context) {
+ val pluginAction = object : LocationLayerPluginAction.OnPerformLocationLayerPluginAction {
+ override fun onLocationLayerPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.activateLocationLayerPlugin(context, false)
plugin.applyStyle(LocationLayerOptions.builder(context).staleStateTimeout(100).build())
plugin.forceLocationUpdate(location)
- uiController.loopMainThreadForAtLeast(200)
+ mapboxMap.waitForLayer(uiController, location, FOREGROUND_LAYER)
+ uiController.loopMainThreadForAtLeast(150)
uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
assertThat(mapboxMap.querySourceFeatures(LOCATION_SOURCE)[0].getBooleanProperty(PROPERTY_LOCATION_STALE), `is`(true))
mapboxMap.setStyleUrl(Style.LIGHT)
uiController.loopMainThreadForAtLeast(MAP_CONNECTION_DELAY)
+ mapboxMap.waitForLayer(uiController, location, FOREGROUND_LAYER)
assertThat(mapboxMap.querySourceFeatures(LOCATION_SOURCE)[0].getBooleanProperty(PROPERTY_LOCATION_STALE), `is`(true))
}
@@ -250,11 +249,12 @@ class LocationLayerTest {
@Test
fun whenStyleChanged_staleStateChanges() {
- val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction<LocationLayerPlugin> {
- override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
- uiController: UiController, context: Context) {
+ val pluginAction = object : LocationLayerPluginAction.OnPerformLocationLayerPluginAction {
+ override fun onLocationLayerPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.activateLocationLayerPlugin(context, false)
plugin.applyStyle(LocationLayerOptions.builder(context).staleStateTimeout(1).build())
- styleChangeIdlingResource.waitForStyle(idlingResource.mapView, mapboxMap, MAPBOX_HEAVY_STYLE)
+ styleChangeIdlingResource.waitForStyle((rule.activity as SingleActivity).mapView, mapboxMap, MAPBOX_HEAVY_STYLE)
pushSourceUpdates(styleChangeIdlingResource) {
plugin.forceLocationUpdate(location)
}
@@ -268,13 +268,17 @@ class LocationLayerTest {
@Test
fun whenStyleChanged_layerVisibilityUpdates() {
- val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction<LocationLayerPlugin> {
- override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
- uiController: UiController, context: Context) {
- styleChangeIdlingResource.waitForStyle(idlingResource.mapView, mapboxMap, MAPBOX_HEAVY_STYLE)
+ val pluginAction = object : LocationLayerPluginAction.OnPerformLocationLayerPluginAction {
+ override fun onLocationLayerPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ styleChangeIdlingResource.waitForStyle((rule.activity as SingleActivity).mapView, mapboxMap, MAPBOX_HEAVY_STYLE)
var show = true
pushSourceUpdates(styleChangeIdlingResource) {
- plugin.isLocationLayerEnabled = show
+ if (show) {
+ plugin.activateLocationLayerPlugin(context, false)
+ } else {
+ plugin.deactivateLocationLayerPlugin()
+ }
show = !show
}
@@ -289,13 +293,14 @@ class LocationLayerTest {
@Test
fun accuracy_visibleWithNewLocation() {
- val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction<LocationLayerPlugin> {
- override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
- uiController: UiController, context: Context) {
+ val pluginAction = object : LocationLayerPluginAction.OnPerformLocationLayerPluginAction {
+ override fun onLocationLayerPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.activateLocationLayerPlugin(context, false)
mapboxMap.moveCamera(CameraUpdateFactory.newLatLngZoom(LatLng(location), 16.0))
- uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
plugin.forceLocationUpdate(location)
- uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY + ACCURACY_RADIUS_ANIMATION_DURATION)
+ mapboxMap.waitForLayer(uiController, location, FOREGROUND_LAYER)
+ uiController.loopMainThreadForAtLeast(ACCURACY_RADIUS_ANIMATION_DURATION)
assertEquals(Utils.calculateZoomLevelRadius(mapboxMap, location) /*meters projected to radius on zoom 16*/,
mapboxMap.querySourceFeatures(LOCATION_SOURCE)[0]
@@ -307,12 +312,12 @@ class LocationLayerTest {
@Test
fun accuracy_visibleWhenCameraEased() {
- val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction<LocationLayerPlugin> {
- override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
- uiController: UiController, context: Context) {
- uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+ val pluginAction = object : LocationLayerPluginAction.OnPerformLocationLayerPluginAction {
+ override fun onLocationLayerPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.activateLocationLayerPlugin(context, false)
plugin.forceLocationUpdate(location)
- uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+ mapboxMap.waitForLayer(uiController, location, FOREGROUND_LAYER)
mapboxMap.easeCamera(CameraUpdateFactory.newLatLngZoom(LatLng(location), 16.0), 300)
uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY + 300)
@@ -326,9 +331,10 @@ class LocationLayerTest {
@Test
fun accuracy_visibleWhenCameraMoved() {
- val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction<LocationLayerPlugin> {
- override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
- uiController: UiController, context: Context) {
+ val pluginAction = object : LocationLayerPluginAction.OnPerformLocationLayerPluginAction {
+ override fun onLocationLayerPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.activateLocationLayerPlugin(context, false)
uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
plugin.forceLocationUpdate(location)
uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
@@ -344,13 +350,12 @@ class LocationLayerTest {
}
@After
- fun afterTest() {
- Timber.e("@After: ${nameRule.methodName} - unregister idle resource")
- IdlingRegistry.getInstance().unregister(idlingResource)
+ override fun afterTest() {
+ super.afterTest()
IdlingRegistry.getInstance().unregister(styleChangeIdlingResource)
}
- private fun executePluginTest(listener: GenericPluginAction.OnPerformGenericPluginAction<LocationLayerPlugin>) {
- onView(withId(android.R.id.content)).perform(GenericPluginAction(idlingResource.mapView, mapboxMap, PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity), listener))
+ private fun executePluginTest(listener: LocationLayerPluginAction.OnPerformLocationLayerPluginAction) {
+ onView(withId(R.id.content)).perform(LocationLayerPluginAction(mapboxMap, listener))
}
}