From ef917eb16632388e4c07562a08b996af74ef7d7f Mon Sep 17 00:00:00 2001 From: tobrun Date: Thu, 4 Jul 2019 12:55:29 +0200 Subject: [android] - add snapshotter and offline test --- .../mapboxsdk/offline/OfflineDownloadTest.kt | 88 ++++++++++++++++++++++ .../mapboxsdk/snapshotter/MapSnapshotterTest.kt | 26 +++++++ .../mapboxsdk/testapp/activity/BaseTest.java | 5 ++ .../snapshot/MapSnapshotterMarkerActivity.java | 9 +++ 4 files changed, 128 insertions(+) create mode 100644 platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/offline/OfflineDownloadTest.kt create mode 100644 platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/snapshotter/MapSnapshotterTest.kt 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 diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/snapshotter/MapSnapshotterTest.kt b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/snapshotter/MapSnapshotterTest.kt new file mode 100644 index 0000000000..e295b5b10b --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/snapshotter/MapSnapshotterTest.kt @@ -0,0 +1,26 @@ +package com.mapbox.mapboxsdk.snapshotter + +import android.support.test.rule.ActivityTestRule +import android.support.test.runner.AndroidJUnit4 +import com.mapbox.mapboxsdk.testapp.activity.snapshot.MapSnapshotterMarkerActivity +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith + +/** + * Integration test that validates if a snapshot is created with MapSnapshotterMarkerActivity + */ +@RunWith(AndroidJUnit4::class) +class MapSnapshotterTest { + + @Rule + @JvmField + var rule = ActivityTestRule(MapSnapshotterMarkerActivity::class.java) + + @Test(timeout = 10000) + fun mapSnapshotter() { + while (rule.activity.mapSnapshot == null) { + Thread.sleep(250) + } + } +} \ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/activity/BaseTest.java b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/activity/BaseTest.java index 054069f92c..45dac23611 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/activity/BaseTest.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/activity/BaseTest.java @@ -1,5 +1,6 @@ package com.mapbox.mapboxsdk.testapp.activity; +import android.content.Context; import android.support.annotation.CallSuper; import android.support.annotation.UiThread; import android.support.test.rule.ActivityTestRule; @@ -95,4 +96,8 @@ public abstract class BaseTest extends AppCenter { } } + protected Context getContext() { + return rule.getActivity(); + } + } \ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/snapshot/MapSnapshotterMarkerActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/snapshot/MapSnapshotterMarkerActivity.java index d7ceda699e..dea10198b6 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/snapshot/MapSnapshotterMarkerActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/snapshot/MapSnapshotterMarkerActivity.java @@ -6,6 +6,8 @@ import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.PointF; import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.annotation.VisibleForTesting; import android.support.v7.app.AppCompatActivity; import android.view.MotionEvent; import android.view.View; @@ -64,6 +66,7 @@ public class MapSnapshotterMarkerActivity extends AppCompatActivity implements M @SuppressLint("ClickableViewAccessibility") @Override public void onSnapshotReady(MapSnapshot snapshot) { + this.mapSnapshot = snapshot; Timber.i("Snapshot ready"); ImageView imageView = (ImageView) findViewById(R.id.snapshot_image); Bitmap image = addMarker(snapshot); @@ -93,4 +96,10 @@ public class MapSnapshotterMarkerActivity extends AppCompatActivity implements M return snapshot.getBitmap(); } + @VisibleForTesting + @Nullable + public MapSnapshot getMapSnapshot() { + return mapSnapshot; + } + } -- cgit v1.2.1