11package com.mapbox.navigation.core.routealternatives
22
33import com.mapbox.geojson.Point
4+ import com.mapbox.navigation.base.utils.DecodeUtils
5+ import com.mapbox.navigation.base.utils.DecodeUtils.stepsGeometryToPoints
46import com.mapbox.navigation.core.RouteProgressData
7+ import io.mockk.every
58import io.mockk.mockk
9+ import io.mockk.mockkStatic
10+ import io.mockk.unmockkStatic
11+ import org.junit.After
612import org.junit.Assert.assertEquals
13+ import org.junit.Before
714import org.junit.Test
815
916class AlternativeRouteProgressDataProviderTest {
1017
18+ @Before
19+ fun setUp () {
20+ mockkStatic(DecodeUtils ::class )
21+ }
22+
23+ @After
24+ fun tearDown () {
25+ unmockkStatic(DecodeUtils ::class )
26+ }
27+
1128 @Test
1229 fun `fork passed` () {
1330 val primaryRouteGeometryIndex = 200
@@ -18,7 +35,8 @@ class AlternativeRouteProgressDataProviderTest {
1835 primaryForkLegGeometryIndex = 80 ,
1936 alternativeForkLegIndex = 3 ,
2037 alternativeForkRouteGeometryIndex = 90 ,
21- alternativeForkLegGeometryIndex = 40
38+ alternativeForkLegGeometryIndex = 40 ,
39+ emptyList()
2240 )
2341 val expected = RouteProgressData (3 , 90 , 40 )
2442
@@ -40,7 +58,8 @@ class AlternativeRouteProgressDataProviderTest {
4058 primaryForkLegGeometryIndex = 40 ,
4159 alternativeForkLegIndex = 5 ,
4260 alternativeForkRouteGeometryIndex = 130 ,
43- alternativeForkLegGeometryIndex = 80
61+ alternativeForkLegGeometryIndex = 80 ,
62+ emptyList()
4463 )
4564 val expected = RouteProgressData (5 , 130 , 80 )
4665
@@ -62,7 +81,8 @@ class AlternativeRouteProgressDataProviderTest {
6281 primaryForkLegGeometryIndex = 80 ,
6382 alternativeForkLegIndex = 3 ,
6483 alternativeForkRouteGeometryIndex = 90 ,
65- alternativeForkLegGeometryIndex = 40
84+ alternativeForkLegGeometryIndex = 40 ,
85+ emptyList()
6686 )
6787 val expected = RouteProgressData (3 , 90 , 40 )
6888
@@ -83,9 +103,16 @@ class AlternativeRouteProgressDataProviderTest {
83103 primaryForkLegGeometryIndex = 80 ,
84104 alternativeForkLegIndex = 5 ,
85105 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+ )
87114 )
88- val expected = primaryRouteProgressData
115+ val expected = RouteProgressData ( 4 , 200 , 65 )
89116
90117 val actual = AlternativeRouteProgressDataProvider .getRouteProgressData(
91118 primaryRouteProgressData,
@@ -97,17 +124,22 @@ class AlternativeRouteProgressDataProviderTest {
97124
98125 @Test
99126 fun `before fork, alternative starts after the primary route on the first leg` () {
100- // primary leg and route indices diff is 165
101127 val primaryRouteProgressData = RouteProgressData (4 , 200 , 35 )
102128 val alternativeMetadata = alternativeRouteMetadata(
103129 primaryForkLegIndex = 5 ,
104130 primaryForkRouteGeometryIndex = 250 ,
105131 primaryForkLegGeometryIndex = 85 ,
106132 alternativeForkLegIndex = 5 ,
107133 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 )
111143
112144 val actual = AlternativeRouteProgressDataProvider .getRouteProgressData(
113145 primaryRouteProgressData,
@@ -119,17 +151,23 @@ class AlternativeRouteProgressDataProviderTest {
119151
120152 @Test
121153 fun `before fork, alternative starts after the primary route on the second leg` () {
122- // primary leg and route indices diff is 165
123154 val primaryRouteProgressData = RouteProgressData (4 , 200 , 35 )
124155 val alternativeMetadata = alternativeRouteMetadata(
125156 primaryForkLegIndex = 5 ,
126157 primaryForkRouteGeometryIndex = 250 ,
127158 primaryForkLegGeometryIndex = 85 ,
128159 alternativeForkLegIndex = 3 ,
129160 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+ )
131169 )
132- val expected = RouteProgressData (2 , 170 , 9 )
170+ val expected = RouteProgressData (2 , 170 , 119 )
133171
134172 val actual = AlternativeRouteProgressDataProvider .getRouteProgressData(
135173 primaryRouteProgressData,
@@ -149,7 +187,13 @@ class AlternativeRouteProgressDataProviderTest {
149187 primaryForkLegGeometryIndex = 110 ,
150188 alternativeForkLegIndex = 0 ,
151189 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+ )
153197 )
154198 val expected = RouteProgressData (0 , 40 , 40 )
155199
@@ -171,9 +215,16 @@ class AlternativeRouteProgressDataProviderTest {
171215 primaryForkLegGeometryIndex = 90 ,
172216 alternativeForkLegIndex = 4 ,
173217 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+ )
175226 )
176- val expected = RouteProgressData (4 , 200 , 60 )
227+ val expected = RouteProgressData (4 , 200 , 65 )
177228
178229 val actual = AlternativeRouteProgressDataProvider .getRouteProgressData(
179230 primaryRouteProgressData,
@@ -190,9 +241,14 @@ class AlternativeRouteProgressDataProviderTest {
190241 alternativeForkLegIndex : Int ,
191242 alternativeForkRouteGeometryIndex : Int ,
192243 alternativeForkLegGeometryIndex : Int ,
244+ stepsGeometries : List <List <List <Point >>>
193245 ): AlternativeRouteMetadata {
194246 return AlternativeRouteMetadata (
195- mockk(),
247+ mockk {
248+ every { directionsRoute } returns mockk {
249+ every { stepsGeometryToPoints() } returns stepsGeometries
250+ }
251+ },
196252 AlternativeRouteIntersection (
197253 Point .fromLngLat(1.1 , 2.2 ),
198254 alternativeForkRouteGeometryIndex,
0 commit comments