summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorŁukasz Paczos <lukas.paczos@gmail.com>2018-07-18 14:42:02 +0200
committerŁukasz Paczos <lukasz.paczos@mapbox.com>2018-07-18 15:03:31 +0200
commitc29740e73fafaeeac880b4dc451256ab4be78013 (patch)
tree7c54f6da11804f1f6b239808485b25d7e17d6bbf
parent6d24ef9a03c2f441a7055d12612d36c589919d5e (diff)
downloadqtlocation-mapboxgl-c29740e73fafaeeac880b4dc451256ab4be78013.tar.gz
[android] VisibleRegion instrumentation tests
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/maps/VisibleRegionTest.kt342
1 files changed, 342 insertions, 0 deletions
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/maps/VisibleRegionTest.kt b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/maps/VisibleRegionTest.kt
new file mode 100644
index 0000000000..f09a5eff00
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/maps/VisibleRegionTest.kt
@@ -0,0 +1,342 @@
+package com.mapbox.mapboxsdk.testapp.maps
+
+import android.graphics.PointF
+import android.support.test.espresso.UiController
+import com.mapbox.mapboxsdk.camera.CameraUpdateFactory
+import com.mapbox.mapboxsdk.geometry.LatLng
+import com.mapbox.mapboxsdk.maps.MapView
+import com.mapbox.mapboxsdk.maps.MapboxMap
+import com.mapbox.mapboxsdk.testapp.action.MapboxMapAction.invoke
+import com.mapbox.mapboxsdk.testapp.activity.BaseActivityTest
+import com.mapbox.mapboxsdk.testapp.activity.espresso.EspressoTestActivity
+import org.junit.Assert.assertFalse
+import org.junit.Assert.assertTrue
+import org.junit.Test
+
+class VisibleRegionTest : BaseActivityTest() {
+
+ private lateinit var mapView: MapView
+
+ override fun getActivityClass(): Class<*> {
+ return EspressoTestActivity::class.java
+ }
+
+ override fun beforeTest() {
+ super.beforeTest()
+ mapView = (rule.activity as EspressoTestActivity).mapView
+ }
+
+ @Test
+ fun visibleRegionTest() {
+ validateTestSetup()
+ invoke(mapboxMap) { _: UiController, mapboxMap: MapboxMap ->
+ mapboxMap.moveCamera(CameraUpdateFactory.newLatLngZoom(LatLng(0.0, 0.0), 8.0))
+ val latLngs = listOf(
+ mapboxMap.getLatLngFromScreenCoords(0f, 0f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, 0f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width.toFloat(), 0f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width.toFloat(), mapView.height / 2f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width.toFloat(), mapView.height.toFloat()),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, mapView.height.toFloat()),
+ mapboxMap.getLatLngFromScreenCoords(0f, mapView.height.toFloat()),
+ mapboxMap.getLatLngFromScreenCoords(0f, mapView.height / 2f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, mapView.height / 2f)
+ )
+ val visibleRegion = mapboxMap.projection.visibleRegion
+ assertTrue(latLngs.all { visibleRegion.latLngBounds.contains(it) })
+ }
+ }
+
+ @Test
+ fun paddedVisibleRegionTest() {
+ validateTestSetup()
+ invoke(mapboxMap) { _: UiController, mapboxMap: MapboxMap ->
+ mapboxMap.moveCamera(CameraUpdateFactory.newLatLngZoom(LatLng(0.0, 0.0), 8.0))
+ val latLngs = listOf(
+ mapboxMap.getLatLngFromScreenCoords(0f, 0f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, 0f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width.toFloat(), 0f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width.toFloat(), mapView.height / 2f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width.toFloat(), mapView.height.toFloat()),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, mapView.height.toFloat()),
+ mapboxMap.getLatLngFromScreenCoords(0f, mapView.height.toFloat()),
+ mapboxMap.getLatLngFromScreenCoords(0f, mapView.height / 2f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, mapView.height / 2f)
+ )
+
+ mapboxMap.setPadding(
+ (mapView.width / 4f).toInt(),
+ (mapView.height / 4f).toInt(),
+ (mapView.width / 4f).toInt(),
+ (mapView.height / 4f).toInt())
+
+ val visibleRegion = mapboxMap.projection.getVisibleRegion(false)
+ val filtered = latLngs.filter { visibleRegion.latLngBounds.contains(it) }
+ assertTrue(filtered.size == 1)
+ assertTrue(filtered.contains(mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, mapView.height / 2f)))
+ }
+ }
+
+ @Test
+ fun paddedLeftVisibleRegionTest() {
+ validateTestSetup()
+ invoke(mapboxMap) { _: UiController, mapboxMap: MapboxMap ->
+ mapboxMap.moveCamera(CameraUpdateFactory.newLatLngZoom(LatLng(0.0, 0.0), 8.0))
+ val latLngs = listOf(
+ mapboxMap.getLatLngFromScreenCoords(0f, 0f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, 0f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width.toFloat(), 0f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width.toFloat(), mapView.height / 2f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width.toFloat(), mapView.height.toFloat()),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, mapView.height.toFloat()),
+ mapboxMap.getLatLngFromScreenCoords(0f, mapView.height.toFloat()),
+ mapboxMap.getLatLngFromScreenCoords(0f, mapView.height / 2f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, mapView.height / 2f)
+ )
+
+ mapboxMap.setPadding((mapView.width / 4f).toInt(), 0, 0, 0)
+
+ val visibleRegion = mapboxMap.projection.getVisibleRegion(false)
+ val filtered = latLngs.filter { visibleRegion.latLngBounds.contains(it) }
+ assertTrue(filtered.size == 6)
+ assertFalse(filtered.contains(mapboxMap.getLatLngFromScreenCoords(0f, mapView.height / 2f)))
+ }
+ }
+
+ @Test
+ fun paddedTopVisibleRegionTest() {
+ validateTestSetup()
+ invoke(mapboxMap) { _: UiController, mapboxMap: MapboxMap ->
+ mapboxMap.moveCamera(CameraUpdateFactory.newLatLngZoom(LatLng(0.0, 0.0), 8.0))
+ val latLngs = listOf(
+ mapboxMap.getLatLngFromScreenCoords(0f, 0f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, 0f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width.toFloat(), 0f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width.toFloat(), mapView.height / 2f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width.toFloat(), mapView.height.toFloat()),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, mapView.height.toFloat()),
+ mapboxMap.getLatLngFromScreenCoords(0f, mapView.height.toFloat()),
+ mapboxMap.getLatLngFromScreenCoords(0f, mapView.height / 2f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, mapView.height / 2f)
+ )
+
+ mapboxMap.setPadding(0, (mapView.height / 4f).toInt(), 0, 0)
+
+ val visibleRegion = mapboxMap.projection.getVisibleRegion(false)
+ val filtered = latLngs.filter { visibleRegion.latLngBounds.contains(it) }
+ assertTrue(filtered.size == 6)
+ assertFalse(filtered.contains(mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, 0f)))
+ }
+ }
+
+ @Test
+ fun paddedRightVisibleRegionTest() {
+ validateTestSetup()
+ invoke(mapboxMap) { _: UiController, mapboxMap: MapboxMap ->
+ mapboxMap.moveCamera(CameraUpdateFactory.newLatLngZoom(LatLng(0.0, 0.0), 8.0))
+ val latLngs = listOf(
+ mapboxMap.getLatLngFromScreenCoords(0f, 0f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, 0f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width.toFloat(), 0f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width.toFloat(), mapView.height / 2f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width.toFloat(), mapView.height.toFloat()),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, mapView.height.toFloat()),
+ mapboxMap.getLatLngFromScreenCoords(0f, mapView.height.toFloat()),
+ mapboxMap.getLatLngFromScreenCoords(0f, mapView.height / 2f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, mapView.height / 2f)
+ )
+
+ mapboxMap.setPadding(0, 0, (mapView.width / 4f).toInt(), 0)
+
+ val visibleRegion = mapboxMap.projection.getVisibleRegion(false)
+ val filtered = latLngs.filter { visibleRegion.latLngBounds.contains(it) }
+ assertTrue(filtered.size == 6)
+ assertFalse(filtered.contains(mapboxMap.getLatLngFromScreenCoords(mapView.width.toFloat(), mapView.height / 2f)))
+ }
+ }
+
+ @Test
+ fun paddedBottomVisibleRegionTest() {
+ validateTestSetup()
+ invoke(mapboxMap) { _: UiController, mapboxMap: MapboxMap ->
+ mapboxMap.moveCamera(CameraUpdateFactory.newLatLngZoom(LatLng(0.0, 0.0), 8.0))
+ val latLngs = listOf(
+ mapboxMap.getLatLngFromScreenCoords(0f, 0f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, 0f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width.toFloat(), 0f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width.toFloat(), mapView.height / 2f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width.toFloat(), mapView.height.toFloat()),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, mapView.height.toFloat()),
+ mapboxMap.getLatLngFromScreenCoords(0f, mapView.height.toFloat()),
+ mapboxMap.getLatLngFromScreenCoords(0f, mapView.height / 2f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, mapView.height / 2f)
+ )
+
+ mapboxMap.setPadding(0, 0, 0, (mapView.height / 4f).toInt())
+
+ val visibleRegion = mapboxMap.projection.getVisibleRegion(false)
+ val filtered = latLngs.filter { visibleRegion.latLngBounds.contains(it) }
+ assertTrue(filtered.size == 6)
+ assertFalse(filtered.contains(mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, mapView.height.toFloat())))
+ }
+ }
+
+ @Test
+ fun visibleRegionOverDatelineTest() {
+ validateTestSetup()
+ invoke(mapboxMap) { _: UiController, mapboxMap: MapboxMap ->
+ mapboxMap.moveCamera(CameraUpdateFactory.newLatLngZoom(LatLng(0.0, 180.0), 8.0))
+ val latLngs = listOf(
+ mapboxMap.getLatLngFromScreenCoords(0f, 0f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, 0f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width.toFloat(), 0f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width.toFloat(), mapView.height / 2f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width.toFloat(), mapView.height.toFloat()),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, mapView.height.toFloat()),
+ mapboxMap.getLatLngFromScreenCoords(0f, mapView.height.toFloat()),
+ mapboxMap.getLatLngFromScreenCoords(0f, mapView.height / 2f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, mapView.height / 2f)
+ )
+ val visibleRegion = mapboxMap.projection.visibleRegion
+ assertTrue(latLngs.all { visibleRegion.latLngBounds.contains(it) })
+ }
+ }
+
+ @Test
+ fun paddedVisibleRegionOverDatelineTest() {
+ validateTestSetup()
+ invoke(mapboxMap) { _: UiController, mapboxMap: MapboxMap ->
+ mapboxMap.moveCamera(CameraUpdateFactory.newLatLngZoom(LatLng(0.0, 180.0), 8.0))
+ val latLngs = listOf(
+ mapboxMap.getLatLngFromScreenCoords(0f, 0f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, 0f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width.toFloat(), 0f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width.toFloat(), mapView.height / 2f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width.toFloat(), mapView.height.toFloat()),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, mapView.height.toFloat()),
+ mapboxMap.getLatLngFromScreenCoords(0f, mapView.height.toFloat()),
+ mapboxMap.getLatLngFromScreenCoords(0f, mapView.height / 2f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, mapView.height / 2f)
+ )
+
+ mapboxMap.setPadding(
+ (mapView.width / 4f).toInt(),
+ (mapView.height / 4f).toInt(),
+ (mapView.width / 4f).toInt(),
+ (mapView.height / 4f).toInt())
+
+ val visibleRegion = mapboxMap.projection.getVisibleRegion(false)
+ val filtered = latLngs.filter { visibleRegion.latLngBounds.contains(it) }
+ assertTrue(filtered.size == 1)
+ assertTrue(filtered.contains(mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, mapView.height / 2f)))
+ }
+ }
+
+ @Test
+ fun paddedLeftVisibleRegionOverDatelineTest() {
+ validateTestSetup()
+ invoke(mapboxMap) { _: UiController, mapboxMap: MapboxMap ->
+ mapboxMap.moveCamera(CameraUpdateFactory.newLatLngZoom(LatLng(0.0, 180.0), 8.0))
+ val latLngs = listOf(
+ mapboxMap.getLatLngFromScreenCoords(0f, 0f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, 0f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width.toFloat(), 0f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width.toFloat(), mapView.height / 2f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width.toFloat(), mapView.height.toFloat()),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, mapView.height.toFloat()),
+ mapboxMap.getLatLngFromScreenCoords(0f, mapView.height.toFloat()),
+ mapboxMap.getLatLngFromScreenCoords(0f, mapView.height / 2f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, mapView.height / 2f)
+ )
+
+ mapboxMap.setPadding((mapView.width / 4f).toInt(), 0, 0, 0)
+
+ val visibleRegion = mapboxMap.projection.getVisibleRegion(false)
+ val filtered = latLngs.filter { visibleRegion.latLngBounds.contains(it) }
+ assertTrue(filtered.size == 6)
+ assertFalse(filtered.contains(mapboxMap.getLatLngFromScreenCoords(0f, mapView.height / 2f)))
+ }
+ }
+
+ @Test
+ fun paddedTopVisibleRegionOverDatelineTest() {
+ validateTestSetup()
+ invoke(mapboxMap) { _: UiController, mapboxMap: MapboxMap ->
+ mapboxMap.moveCamera(CameraUpdateFactory.newLatLngZoom(LatLng(0.0, 180.0), 8.0))
+ val latLngs = listOf(
+ mapboxMap.getLatLngFromScreenCoords(0f, 0f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, 0f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width.toFloat(), 0f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width.toFloat(), mapView.height / 2f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width.toFloat(), mapView.height.toFloat()),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, mapView.height.toFloat()),
+ mapboxMap.getLatLngFromScreenCoords(0f, mapView.height.toFloat()),
+ mapboxMap.getLatLngFromScreenCoords(0f, mapView.height / 2f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, mapView.height / 2f)
+ )
+
+ mapboxMap.setPadding(0, (mapView.height / 4f).toInt(), 0, 0)
+
+ val visibleRegion = mapboxMap.projection.getVisibleRegion(false)
+ val filtered = latLngs.filter { visibleRegion.latLngBounds.contains(it) }
+ assertTrue(filtered.size == 6)
+ assertFalse(filtered.contains(mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, 0f)))
+ }
+ }
+
+ @Test
+ fun paddedRightVisibleRegionOverDatelineTest() {
+ validateTestSetup()
+ invoke(mapboxMap) { _: UiController, mapboxMap: MapboxMap ->
+ mapboxMap.moveCamera(CameraUpdateFactory.newLatLngZoom(LatLng(0.0, 180.0), 8.0))
+ val latLngs = listOf(
+ mapboxMap.getLatLngFromScreenCoords(0f, 0f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, 0f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width.toFloat(), 0f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width.toFloat(), mapView.height / 2f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width.toFloat(), mapView.height.toFloat()),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, mapView.height.toFloat()),
+ mapboxMap.getLatLngFromScreenCoords(0f, mapView.height.toFloat()),
+ mapboxMap.getLatLngFromScreenCoords(0f, mapView.height / 2f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, mapView.height / 2f)
+ )
+
+ mapboxMap.setPadding(0, 0, (mapView.width / 4f).toInt(), 0)
+
+ val visibleRegion = mapboxMap.projection.getVisibleRegion(false)
+ val filtered = latLngs.filter { visibleRegion.latLngBounds.contains(it) }
+ assertTrue(filtered.size == 6)
+ assertFalse(filtered.contains(mapboxMap.getLatLngFromScreenCoords(mapView.width.toFloat(), mapView.height / 2f)))
+ }
+ }
+
+ @Test
+ fun paddedBottomVisibleRegionOverDatelineTest() {
+ validateTestSetup()
+ invoke(mapboxMap) { _: UiController, mapboxMap: MapboxMap ->
+ mapboxMap.moveCamera(CameraUpdateFactory.newLatLngZoom(LatLng(0.0, 180.0), 8.0))
+ val latLngs = listOf(
+ mapboxMap.getLatLngFromScreenCoords(0f, 0f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, 0f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width.toFloat(), 0f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width.toFloat(), mapView.height / 2f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width.toFloat(), mapView.height.toFloat()),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, mapView.height.toFloat()),
+ mapboxMap.getLatLngFromScreenCoords(0f, mapView.height.toFloat()),
+ mapboxMap.getLatLngFromScreenCoords(0f, mapView.height / 2f),
+ mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, mapView.height / 2f)
+ )
+
+ mapboxMap.setPadding(0, 0, 0, (mapView.height / 4f).toInt())
+
+ val visibleRegion = mapboxMap.projection.getVisibleRegion(false)
+ val filtered = latLngs.filter { visibleRegion.latLngBounds.contains(it) }
+ assertTrue(filtered.size == 6)
+ assertFalse(filtered.contains(mapboxMap.getLatLngFromScreenCoords(mapView.width / 2f, mapView.height.toFloat())))
+ }
+ }
+
+ private fun MapboxMap.getLatLngFromScreenCoords(x: Float, y: Float): LatLng {
+ return this.projection.fromScreenLocation(PointF(x, y))
+ }
+} \ No newline at end of file