summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortobrun <tobrun.van.nuland@gmail.com>2019-09-16 15:17:38 +0200
committertobrun <tobrun.van.nuland@gmail.com>2019-09-16 15:17:38 +0200
commit27823ecebcc33ae351af622f94de18bdabd66d8e (patch)
treed9d5f42b6c1a905bfbdc6ce7d1e86611f77944f3
parent2eed5486ffd4986331b8cd78d6181eb6478fb552 (diff)
downloadqtlocation-mapboxgl-27823ecebcc33ae351af622f94de18bdabd66d8e.tar.gz
[android] add reproducible invalid reference test
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/style/StyleDetachTest.kt71
1 files changed, 71 insertions, 0 deletions
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/style/StyleDetachTest.kt b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/style/StyleDetachTest.kt
new file mode 100644
index 0000000000..cbfca53163
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/style/StyleDetachTest.kt
@@ -0,0 +1,71 @@
+package com.mapbox.mapboxsdk.style
+
+import android.os.Handler
+import android.os.Looper
+import android.support.test.rule.ActivityTestRule
+import android.support.test.runner.AndroidJUnit4
+import com.mapbox.mapboxsdk.log.Logger
+import com.mapbox.mapboxsdk.maps.MapboxMap
+import com.mapbox.mapboxsdk.maps.Style
+import com.mapbox.mapboxsdk.style.sources.GeoJsonSource
+import com.mapbox.mapboxsdk.testapp.activity.espresso.EspressoTestActivity
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import java.util.*
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
+import java.util.concurrent.TimeoutException
+import kotlin.concurrent.schedule
+
+/**
+ * Test to validate weak reference setup
+ */
+@RunWith(AndroidJUnit4::class)
+class StyleDetachTest {
+
+ @Rule
+ @JvmField
+ var rule = ActivityTestRule(EspressoTestActivity::class.java)
+
+ private val countDownLatch = CountDownLatch(1)
+ private val handler = Handler(Looper.getMainLooper())
+
+ @Test
+ fun styleDetachTest() {
+ rule.activity.apply {
+ runOnUiThread {
+ mapView.getMapAsync {
+ setupStyle(it)
+ }
+ }
+ }
+
+ if (!countDownLatch.await(15, TimeUnit.SECONDS)) {
+ throw TimeoutException()
+ }
+ }
+
+ fun setupStyle(map: MapboxMap) {
+ val source = GeoJsonSource("id")
+ Timer().schedule(200, 500) {
+ Logger.e(TAG, "Update geojson")
+ handler.post { source.setGeoJson("") }
+ }
+
+ map.setStyle(Style.Builder().fromUri(Style.MAPBOX_STREETS).withSource(source)) {
+ handler.postDelayed({
+ Logger.e(TAG, "Set new style")
+ map.setStyle(Style.SATELLITE)
+ Handler().postDelayed({
+ Logger.e(TAG, "End test")
+ countDownLatch.countDown()
+ }, 2000)
+ }, 1000)
+ }
+ }
+
+ companion object {
+ const val TAG = "StyleDetachTest"
+ }
+} \ No newline at end of file