1
1
package com.mapbox.navigation.core.routealternatives
2
2
3
3
import com.mapbox.geojson.Point
4
+ import com.mapbox.navigation.base.utils.DecodeUtils
5
+ import com.mapbox.navigation.base.utils.DecodeUtils.stepsGeometryToPoints
4
6
import com.mapbox.navigation.core.RouteProgressData
7
+ import io.mockk.every
5
8
import io.mockk.mockk
9
+ import io.mockk.mockkStatic
10
+ import io.mockk.unmockkStatic
11
+ import org.junit.After
6
12
import org.junit.Assert.assertEquals
13
+ import org.junit.Before
7
14
import org.junit.Test
8
15
9
16
class AlternativeRouteProgressDataProviderTest {
10
17
18
+ @Before
19
+ fun setUp () {
20
+ mockkStatic(DecodeUtils ::class )
21
+ }
22
+
23
+ @After
24
+ fun tearDown () {
25
+ unmockkStatic(DecodeUtils ::class )
26
+ }
27
+
11
28
@Test
12
29
fun `fork passed` () {
13
30
val primaryRouteGeometryIndex = 200
@@ -18,7 +35,8 @@ class AlternativeRouteProgressDataProviderTest {
18
35
primaryForkLegGeometryIndex = 80 ,
19
36
alternativeForkLegIndex = 3 ,
20
37
alternativeForkRouteGeometryIndex = 90 ,
21
- alternativeForkLegGeometryIndex = 40
38
+ alternativeForkLegGeometryIndex = 40 ,
39
+ emptyList()
22
40
)
23
41
val expected = RouteProgressData (3 , 90 , 40 )
24
42
@@ -40,7 +58,8 @@ class AlternativeRouteProgressDataProviderTest {
40
58
primaryForkLegGeometryIndex = 40 ,
41
59
alternativeForkLegIndex = 5 ,
42
60
alternativeForkRouteGeometryIndex = 130 ,
43
- alternativeForkLegGeometryIndex = 80
61
+ alternativeForkLegGeometryIndex = 80 ,
62
+ emptyList()
44
63
)
45
64
val expected = RouteProgressData (5 , 130 , 80 )
46
65
@@ -62,7 +81,8 @@ class AlternativeRouteProgressDataProviderTest {
62
81
primaryForkLegGeometryIndex = 80 ,
63
82
alternativeForkLegIndex = 3 ,
64
83
alternativeForkRouteGeometryIndex = 90 ,
65
- alternativeForkLegGeometryIndex = 40
84
+ alternativeForkLegGeometryIndex = 40 ,
85
+ emptyList()
66
86
)
67
87
val expected = RouteProgressData (3 , 90 , 40 )
68
88
@@ -83,9 +103,16 @@ class AlternativeRouteProgressDataProviderTest {
83
103
primaryForkLegGeometryIndex = 80 ,
84
104
alternativeForkLegIndex = 5 ,
85
105
alternativeForkRouteGeometryIndex = 250 ,
86
- alternativeForkLegGeometryIndex = 80
106
+ alternativeForkLegGeometryIndex = 70 ,
107
+ listOf (
108
+ listOf (List (10 ) { mockk() }, List (7 ) { mockk() }, List (15 ) { mockk() }),
109
+ listOf (List (23 ) { mockk() }),
110
+ listOf (List (32 ) { mockk() }, List (19 ) { mockk() }),
111
+ listOf (List (14 ) { mockk() }, List (23 ) { mockk() }), // 135 points for legs #0-#3
112
+ listOf (List (8 ) { mockk() }),
113
+ )
87
114
)
88
- val expected = primaryRouteProgressData
115
+ val expected = RouteProgressData ( 4 , 200 , 65 )
89
116
90
117
val actual = AlternativeRouteProgressDataProvider .getRouteProgressData(
91
118
primaryRouteProgressData,
@@ -97,17 +124,22 @@ class AlternativeRouteProgressDataProviderTest {
97
124
98
125
@Test
99
126
fun `before fork, alternative starts after the primary route on the first leg` () {
100
- // primary leg and route indices diff is 165
101
127
val primaryRouteProgressData = RouteProgressData (4 , 200 , 35 )
102
128
val alternativeMetadata = alternativeRouteMetadata(
103
129
primaryForkLegIndex = 5 ,
104
130
primaryForkRouteGeometryIndex = 250 ,
105
131
primaryForkLegGeometryIndex = 85 ,
106
132
alternativeForkLegIndex = 5 ,
107
133
alternativeForkRouteGeometryIndex = 220 ,
108
- alternativeForkLegGeometryIndex = 59
109
- )
110
- val expected = RouteProgressData (4 , 170 , 9 )
134
+ alternativeForkLegGeometryIndex = 86 ,
135
+ listOf (
136
+ listOf (List (10 ) { mockk() }, List (7 ) { mockk() }, List (15 ) { mockk() }),
137
+ listOf (List (23 ) { mockk() }),
138
+ listOf (List (32 ) { mockk() }, List (19 ) { mockk() }),
139
+ listOf (List (14 ) { mockk() }, List (23 ) { mockk() }), // 135 points for legs #0-#3
140
+ listOf (List (8 ) { mockk() }),
141
+ ) )
142
+ val expected = RouteProgressData (4 , 170 , 35 )
111
143
112
144
val actual = AlternativeRouteProgressDataProvider .getRouteProgressData(
113
145
primaryRouteProgressData,
@@ -119,17 +151,23 @@ class AlternativeRouteProgressDataProviderTest {
119
151
120
152
@Test
121
153
fun `before fork, alternative starts after the primary route on the second leg` () {
122
- // primary leg and route indices diff is 165
123
154
val primaryRouteProgressData = RouteProgressData (4 , 200 , 35 )
124
155
val alternativeMetadata = alternativeRouteMetadata(
125
156
primaryForkLegIndex = 5 ,
126
157
primaryForkRouteGeometryIndex = 250 ,
127
158
primaryForkLegGeometryIndex = 85 ,
128
159
alternativeForkLegIndex = 3 ,
129
160
alternativeForkRouteGeometryIndex = 220 ,
130
- alternativeForkLegGeometryIndex = 59
161
+ alternativeForkLegGeometryIndex = 81 ,
162
+ listOf (
163
+ listOf (List (10 ) { mockk() }, List (7 ) { mockk() }, List (15 ) { mockk() }),
164
+ listOf (List (23 ) { mockk() }), // 135 points for legs #0-#1
165
+ listOf (List (32 ) { mockk() }, List (19 ) { mockk() }),
166
+ listOf (List (14 ) { mockk() }, List (23 ) { mockk() }),
167
+ listOf (List (8 ) { mockk() }),
168
+ )
131
169
)
132
- val expected = RouteProgressData (2 , 170 , 9 )
170
+ val expected = RouteProgressData (2 , 170 , 119 )
133
171
134
172
val actual = AlternativeRouteProgressDataProvider .getRouteProgressData(
135
173
primaryRouteProgressData,
@@ -149,7 +187,13 @@ class AlternativeRouteProgressDataProviderTest {
149
187
primaryForkLegGeometryIndex = 110 ,
150
188
alternativeForkLegIndex = 0 ,
151
189
alternativeForkRouteGeometryIndex = 90 ,
152
- alternativeForkLegGeometryIndex = 90
190
+ alternativeForkLegGeometryIndex = 20 ,
191
+ listOf (
192
+ listOf (List (10 ) { mockk() }, List (7 ) { mockk() }, List (15 ) { mockk() }),
193
+ listOf (List (23 ) { mockk() }),
194
+ listOf (List (32 ) { mockk() }, List (19 ) { mockk() }),
195
+ listOf (List (14 ) { mockk() }, List (23 ) { mockk() }),
196
+ )
153
197
)
154
198
val expected = RouteProgressData (0 , 40 , 40 )
155
199
@@ -171,9 +215,16 @@ class AlternativeRouteProgressDataProviderTest {
171
215
primaryForkLegGeometryIndex = 90 ,
172
216
alternativeForkLegIndex = 4 ,
173
217
alternativeForkRouteGeometryIndex = 250 ,
174
- alternativeForkLegGeometryIndex = 110
218
+ alternativeForkLegGeometryIndex = 10 ,
219
+ listOf (
220
+ listOf (List (10 ) { mockk() }, List (7 ) { mockk() }, List (15 ) { mockk() }),
221
+ listOf (List (23 ) { mockk() }),
222
+ listOf (List (32 ) { mockk() }, List (19 ) { mockk() }),
223
+ listOf (List (14 ) { mockk() }, List (23 ) { mockk() }), // 135 points for legs #0-#3
224
+ listOf (List (8 ) { mockk() }),
225
+ )
175
226
)
176
- val expected = RouteProgressData (4 , 200 , 60 )
227
+ val expected = RouteProgressData (4 , 200 , 65 )
177
228
178
229
val actual = AlternativeRouteProgressDataProvider .getRouteProgressData(
179
230
primaryRouteProgressData,
@@ -190,9 +241,14 @@ class AlternativeRouteProgressDataProviderTest {
190
241
alternativeForkLegIndex : Int ,
191
242
alternativeForkRouteGeometryIndex : Int ,
192
243
alternativeForkLegGeometryIndex : Int ,
244
+ stepsGeometries : List <List <List <Point >>>
193
245
): AlternativeRouteMetadata {
194
246
return AlternativeRouteMetadata (
195
- mockk(),
247
+ mockk {
248
+ every { directionsRoute } returns mockk {
249
+ every { stepsGeometryToPoints() } returns stepsGeometries
250
+ }
251
+ },
196
252
AlternativeRouteIntersection (
197
253
Point .fromLngLat(1.1 , 2.2 ),
198
254
alternativeForkRouteGeometryIndex,
0 commit comments