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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
package com.mapbox.mapboxsdk.location
import android.content.Context
import android.content.res.Resources
import android.content.res.TypedArray
import android.os.Looper
import com.mapbox.android.core.location.LocationEngine
import com.mapbox.android.core.location.LocationEngineRequest
import com.mapbox.mapboxsdk.R
import com.mapbox.mapboxsdk.maps.MapboxMap
import org.junit.Assert
import org.junit.Before
import org.junit.Ignore
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.Mockito.*
import org.mockito.MockitoAnnotations
import org.robolectric.RobolectricTestRunner
@RunWith(RobolectricTestRunner::class)
class LocationComponentTest {
private lateinit var locationComponent: LocationComponent
@Mock
private lateinit var locationComponentOptions: LocationComponentOptions
@Mock
private lateinit var mapboxMap: MapboxMap
@Mock
private lateinit var context: Context
@Mock
private lateinit var locationEngine: LocationEngine
@Mock
private lateinit var locationEngineRequest: LocationEngineRequest
@Mock
private lateinit var currentListener: LocationComponent.CurrentLocationEngineCallback
@Mock
private lateinit var lastListener: LocationComponent.LastLocationEngineCallback
@Mock
private lateinit var compassEngine: CompassEngine
@Mock
private lateinit var locationLayerController: LocationLayerController
@Mock
private lateinit var locationCameraController: LocationCameraController
@Mock
private lateinit var locationAnimatorCoordinator: LocationAnimatorCoordinator
@Mock
private lateinit var staleStateManager: StaleStateManager
@Mock
private lateinit var locationEngineProvider: LocationComponent.InternalLocationEngineProvider
@Before
fun before() {
MockitoAnnotations.initMocks(this)
locationComponent = LocationComponent(mapboxMap, currentListener, lastListener, locationLayerController, locationCameraController, locationAnimatorCoordinator, staleStateManager, compassEngine, locationEngineProvider)
doReturn(locationEngine).`when`(locationEngineProvider).getBestLocationEngine(context, false)
}
@Test
@Ignore
fun activateWithRequestTest() {
locationComponent.activateLocationComponent(context, locationEngine, locationEngineRequest, locationComponentOptions)
Assert.assertEquals(locationEngineRequest, locationComponent.locationEngineRequest)
doReturn(mock(TypedArray::class.java)).`when`(context)
.obtainStyledAttributes(R.style.mapbox_LocationComponent, R.styleable.mapbox_LocationComponent)
val resources = mock(Resources::class.java)
doReturn(resources).`when`(context).resources
doReturn(0f).`when`(resources)
.getDimension(R.dimen.mapbox_locationComponentTrackingMultiFingerMoveThreshold)
doReturn(0f).`when`(resources)
.getDimension(R.dimen.mapbox_locationComponentTrackingMultiFingerMoveThreshold)
locationComponent.activateLocationComponent(context, true, locationEngineRequest)
Assert.assertEquals(locationEngineRequest, locationComponent.locationEngineRequest)
}
@Test
@Ignore
fun locationUpdatesWhenEnabledDisableTest() {
locationComponent.activateLocationComponent(context, locationEngine, locationEngineRequest, locationComponentOptions)
verify(locationEngine, times(0)).removeLocationUpdates(currentListener)
verify(locationEngine, times(0)).requestLocationUpdates(eq(locationEngineRequest), eq(currentListener), any(Looper::class.java))
locationComponent.onStart()
verify(locationEngine, times(0)).removeLocationUpdates(currentListener)
verify(locationEngine, times(0)).requestLocationUpdates(eq(locationEngineRequest), eq(currentListener), any(Looper::class.java))
locationComponent.isLocationComponentEnabled = true
verify(locationEngine).requestLocationUpdates(eq(locationEngineRequest), eq(currentListener), any(Looper::class.java))
locationComponent.isLocationComponentEnabled = false
verify(locationEngine).requestLocationUpdates(eq(locationEngineRequest), eq(currentListener), any(Looper::class.java))
verify(locationEngine).removeLocationUpdates(currentListener)
}
@Test
@Ignore
fun locationUpdatesWhenStartedStoppedTest() {
locationComponent.activateLocationComponent(context, locationEngine, locationEngineRequest, locationComponentOptions)
locationComponent.onStart()
locationComponent.isLocationComponentEnabled = true
locationComponent.onStop()
verify(locationEngine).removeLocationUpdates(currentListener)
locationComponent.onStart()
verify(locationEngine, times(2)).requestLocationUpdates(eq(locationEngineRequest), eq(currentListener), any(Looper::class.java))
}
@Test
@Ignore
fun locationUpdatesWhenNewRequestTest() {
locationComponent.activateLocationComponent(context, locationEngine, locationEngineRequest, locationComponentOptions)
locationComponent.onStart()
locationComponent.isLocationComponentEnabled = true
val newRequest = mock(LocationEngineRequest::class.java)
locationComponent.locationEngineRequest = newRequest
verify(locationEngine).removeLocationUpdates(currentListener)
verify(locationEngine).requestLocationUpdates(eq(newRequest), eq(currentListener), any(Looper::class.java))
}
@Test
@Ignore
fun lastLocationUpdateOnStartTest() {
locationComponent.activateLocationComponent(context, locationEngine, locationEngineRequest, locationComponentOptions)
locationComponent.onStart()
locationComponent.isLocationComponentEnabled = true
verify(locationEngine).getLastLocation(lastListener)
}
}
|