summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/style/CustomGeometrySourceTest.kt
blob: a6238ebf1482d6973ff42e467cb22a1dcc4c5773 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package com.mapbox.mapboxsdk.testapp.style

import android.support.test.espresso.Espresso.onView
import android.support.test.espresso.matcher.ViewMatchers.isRoot
import com.mapbox.mapboxsdk.style.sources.CustomGeometrySource
import com.mapbox.mapboxsdk.style.sources.CustomGeometrySource.THREAD_POOL_LIMIT
import com.mapbox.mapboxsdk.style.sources.CustomGeometrySource.THREAD_PREFIX
import com.mapbox.mapboxsdk.testapp.action.MapboxMapAction.invoke
import com.mapbox.mapboxsdk.testapp.action.OrientationAction.orientationLandscape
import com.mapbox.mapboxsdk.testapp.action.OrientationAction.orientationPortrait
import com.mapbox.mapboxsdk.testapp.action.WaitAction
import com.mapbox.mapboxsdk.testapp.activity.BaseTest
import com.mapbox.mapboxsdk.testapp.activity.style.GridSourceActivity
import com.mapbox.mapboxsdk.testapp.activity.style.GridSourceActivity.ID_GRID_LAYER
import com.mapbox.mapboxsdk.testapp.activity.style.GridSourceActivity.ID_GRID_SOURCE
import com.mapbox.mapboxsdk.testapp.utils.TestingAsyncUtils
import org.junit.Assert
import org.junit.Ignore
import org.junit.Test

class CustomGeometrySourceTest : BaseTest() {

  override fun getActivityClass(): Class<*> = GridSourceActivity::class.java

  @Test
  @Ignore
  fun sourceNotLeakingThreadsTest() {
    validateTestSetup()
    WaitAction.invoke(4000)
    onView(isRoot()).perform(orientationLandscape())
    WaitAction.invoke(2000)
    onView(isRoot()).perform(orientationPortrait())
    WaitAction.invoke(2000)
    Assert.assertFalse("Threads should be shutdown when the source is destroyed.",
      Thread.getAllStackTraces().keys.filter {
        it.name.startsWith(THREAD_PREFIX)
      }.count() > THREAD_POOL_LIMIT)
  }

  @Test
  @Ignore
  fun threadsShutdownWhenSourceRemovedTest() {
    validateTestSetup()
    invoke(mapboxMap) { uiController, mapboxMap ->
      mapboxMap.style!!.removeLayer(ID_GRID_LAYER)
      TestingAsyncUtils.waitForLayer(uiController, mapView)
      mapboxMap.style!!.removeSource(ID_GRID_SOURCE)
      TestingAsyncUtils.waitForLayer(uiController, mapView)
      Assert.assertTrue("There should be no threads running when the source is removed.",
        Thread.getAllStackTraces().keys.filter {
          it.name.startsWith(CustomGeometrySource.THREAD_PREFIX)
        }.count() == 0)
    }
  }

  @Test
  @Ignore
  fun threadsRestartedWhenSourceReAddedTest() {
    validateTestSetup()
    invoke(mapboxMap) { uiController, mapboxMap ->
      mapboxMap.style!!.removeLayer((rule.activity as GridSourceActivity).layer)
      TestingAsyncUtils.waitForLayer(uiController, mapView)
      mapboxMap.style!!.removeSource(ID_GRID_SOURCE)
      TestingAsyncUtils.waitForLayer(uiController, mapView)
      mapboxMap.style!!.addSource((rule.activity as GridSourceActivity).source)
      mapboxMap.style!!.addLayer((rule.activity as GridSourceActivity).layer)
      TestingAsyncUtils.waitForLayer(uiController, mapView)
      Assert.assertTrue("Threads should be restarted when the source is re-added to the map.",
        Thread.getAllStackTraces().keys.filter {
          it.name.startsWith(CustomGeometrySource.THREAD_PREFIX)
        }.count() == CustomGeometrySource.THREAD_POOL_LIMIT)
    }
  }
}