summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/offline/OfflineDownloadTest.kt
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/offline/OfflineDownloadTest.kt')
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/offline/OfflineDownloadTest.kt88
1 files changed, 88 insertions, 0 deletions
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/offline/OfflineDownloadTest.kt b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/offline/OfflineDownloadTest.kt
new file mode 100644
index 0000000000..5c574f9332
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/offline/OfflineDownloadTest.kt
@@ -0,0 +1,88 @@
+package com.mapbox.mapboxsdk.offline
+
+import android.support.test.rule.ActivityTestRule
+import android.support.test.runner.AndroidJUnit4
+import com.mapbox.geojson.Point
+import com.mapbox.mapboxsdk.log.Logger
+import com.mapbox.mapboxsdk.maps.Style
+import com.mapbox.mapboxsdk.testapp.activity.FeatureOverviewActivity
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
+import java.util.concurrent.TimeoutException
+
+/**
+ * Integration test that validates downloading an offline region from a point geometry at zoomlevel 17
+ */
+@RunWith(AndroidJUnit4::class)
+class OfflineDownloadTest : OfflineRegion.OfflineRegionObserver {
+
+ @Rule
+ @JvmField
+ var rule = ActivityTestRule(FeatureOverviewActivity::class.java)
+
+ private val countDownLatch = CountDownLatch(1)
+ private lateinit var offlineRegion: OfflineRegion
+
+ @Test(timeout = 30000)
+ fun offlineDownload() {
+ rule.runOnUiThreadActivity {
+ OfflineManager.getInstance(rule.activity).createOfflineRegion(
+ createTestRegionDefinition(),
+ ByteArray(0),
+ object : OfflineManager.CreateOfflineRegionCallback {
+ override fun onCreate(region: OfflineRegion?) {
+ region?.let {
+ offlineRegion = it
+ offlineRegion.setDownloadState(OfflineRegion.STATE_ACTIVE)
+ offlineRegion.setObserver(this@OfflineDownloadTest)
+ }
+ }
+
+ override fun onError(error: String?) {
+ Logger.e(TAG, "Error while creating offline region: $error")
+ }
+ })
+ }
+
+ if (!countDownLatch.await(30, TimeUnit.SECONDS)) {
+ throw TimeoutException()
+ }
+ }
+
+ override fun onStatusChanged(status: OfflineRegionStatus?) {
+ status?.let {
+ if (it.isComplete) {
+ offlineRegion.setDownloadState(OfflineRegion.STATE_INACTIVE)
+ countDownLatch.countDown()
+ }
+ }
+ }
+
+ override fun onError(error: OfflineRegionError?) {
+ Logger.e(TAG, "Error while downloading offline region: $error")
+ }
+
+ override fun mapboxTileCountLimitExceeded(limit: Long) {
+ Logger.e(TAG, "Tile count limited exceeded: $limit")
+ }
+
+ fun createTestRegionDefinition(): OfflineRegionDefinition {
+ return OfflineGeometryRegionDefinition(
+ Style.MAPBOX_STREETS,
+ Point.fromLngLat(50.847857, 4.360137),
+ 17.0,
+ 17.0,
+ 1.0f,
+ false
+ )
+ }
+
+ companion object {
+ const val TAG = "OfflineDownloadTest"
+ }
+}
+
+fun ActivityTestRule<*>.runOnUiThreadActivity(runnable: () -> Unit) = activity.runOnUiThread(runnable) \ No newline at end of file