@@ -17,6 +17,7 @@ import com.mapbox.navigation.core.MapboxNavigation
1717import com.mapbox.navigation.core.MapboxNavigationProvider
1818import com.mapbox.navigation.core.directions.session.RoutesExtra
1919import com.mapbox.navigation.core.directions.session.RoutesUpdatedResult
20+ import com.mapbox.navigation.core.internal.extensions.flowLocationMatcherResult
2021import com.mapbox.navigation.instrumentation_tests.R
2122import com.mapbox.navigation.instrumentation_tests.activity.EmptyTestActivity
2223import com.mapbox.navigation.instrumentation_tests.utils.MapboxNavigationRule
@@ -75,6 +76,7 @@ class EVRouteRefreshTest : BaseTest<EmptyTestActivity>(EmptyTestActivity::class.
7576 Point .fromLngLat(11.5852259 , 48.1760993 ),
7677 Point .fromLngLat(10.3406374 , 49.16479 )
7778 )
79+ private lateinit var routeHandler: MockDirectionsRequestHandler
7880
7981 override fun setupMockLocation (): Location = mockLocationUpdatesRule.generateLocationUpdate {
8082 latitude = twoCoordinates[0 ].latitude()
@@ -105,7 +107,7 @@ class EVRouteRefreshTest : BaseTest<EmptyTestActivity>(EmptyTestActivity::class.
105107 .build()
106108 )
107109 mockWebServerRule.requestHandlers.clear()
108- val routeHandler = MockDirectionsRequestHandler (
110+ routeHandler = MockDirectionsRequestHandler (
109111 " driving-traffic" ,
110112 readRawFileText(activity, R .raw.ev_route_response_for_refresh),
111113 twoCoordinates,
@@ -131,9 +133,9 @@ class EVRouteRefreshTest : BaseTest<EmptyTestActivity>(EmptyTestActivity::class.
131133 KEY_AUXILIARY_CONSUMPTION to " 300"
132134 )
133135 )
134- mapboxNavigation.setNavigationRoutes(requestedRoutes)
135136 mapboxNavigation.startTripSession()
136137 stayOnInitialPosition()
138+ mapboxNavigation.setNavigationRoutes(requestedRoutes)
137139 waitUntilRefresh()
138140
139141 checkDoesNotHaveParameters(
@@ -150,9 +152,9 @@ class EVRouteRefreshTest : BaseTest<EmptyTestActivity>(EmptyTestActivity::class.
150152 )
151153 val requestedRoutes = requestRoutes(twoCoordinates, electric = true )
152154
153- mapboxNavigation.setNavigationRoutes(requestedRoutes)
154155 mapboxNavigation.startTripSession()
155156 stayOnInitialPosition()
157+ mapboxNavigation.setNavigationRoutes(requestedRoutes)
156158 waitUntilRefresh()
157159
158160 checkDoesNotHaveParameters(
@@ -185,9 +187,9 @@ class EVRouteRefreshTest : BaseTest<EmptyTestActivity>(EmptyTestActivity::class.
185187 )
186188 mapboxNavigation.onEVDataUpdated(evData)
187189
188- mapboxNavigation.setNavigationRoutes(requestedRoutes)
189190 mapboxNavigation.startTripSession()
190191 stayOnInitialPosition()
192+ mapboxNavigation.setNavigationRoutes(requestedRoutes)
191193 waitUntilRefresh()
192194
193195 checkHasParameters(
@@ -205,9 +207,9 @@ class EVRouteRefreshTest : BaseTest<EmptyTestActivity>(EmptyTestActivity::class.
205207 refreshHandler.jsonResponseModifier = DynamicResponseModifier ()
206208 val requestedRoutes = requestRoutes(twoCoordinates, electric = true )
207209
208- mapboxNavigation.setNavigationRoutes(requestedRoutes)
209210 mapboxNavigation.startTripSession()
210211 stayOnInitialPosition()
212+ mapboxNavigation.setNavigationRoutes(requestedRoutes)
211213 waitUntilRefresh()
212214
213215 val noUpdaterRefreshUrl = refreshHandler.handledRequests.first().requestUrl!!
@@ -284,9 +286,9 @@ class EVRouteRefreshTest : BaseTest<EmptyTestActivity>(EmptyTestActivity::class.
284286 )
285287 mapboxNavigation.onEVDataUpdated(evData)
286288
287- mapboxNavigation.setNavigationRoutesAndWaitForUpdate(requestedRoutes)
288289 mapboxNavigation.startTripSession()
289290 stayOnInitialPosition()
291+ mapboxNavigation.setNavigationRoutesAndWaitForUpdate(requestedRoutes)
290292 val updatedRoutes = waitUntilRefresh().navigationRoutes
291293
292294 assertEquals(
@@ -332,10 +334,10 @@ class EVRouteRefreshTest : BaseTest<EmptyTestActivity>(EmptyTestActivity::class.
332334 KEY_AUXILIARY_CONSUMPTION to " 300"
333335 )
334336 mapboxNavigation.onEVDataUpdated(evData)
335- mapboxNavigation.setNavigationRoutes(requestedRoutes)
336- // corresponds to currentRouteGeometryIndex = 384
337- stayOnPosition(48.209765 , 11.478632 )
338337 mapboxNavigation.startTripSession()
338+ // corresponds to currentRouteGeometryIndex = 384
339+ waitUntilStayingOnPosition(48.209765 , 11.478632 )
340+ mapboxNavigation.setNavigationRoutes(requestedRoutes)
339341 mapboxNavigation.routeProgressUpdates().filter { progress ->
340342 progress.currentRouteGeometryIndex == geometryIndex
341343 }.first()
@@ -383,9 +385,9 @@ class EVRouteRefreshTest : BaseTest<EmptyTestActivity>(EmptyTestActivity::class.
383385 KEY_AUXILIARY_CONSUMPTION to " 300"
384386 )
385387 mapboxNavigation.onEVDataUpdated(evData)
386- mapboxNavigation.setNavigationRoutes(requestedRoutes)
387- stayOnInitialPosition()
388388 mapboxNavigation.startTripSession()
389+ stayOnInitialPosition()
390+ mapboxNavigation.setNavigationRoutes(requestedRoutes)
389391
390392 val updatedRoutes = waitUntilRefresh().navigationRoutes
391393
@@ -438,13 +440,21 @@ class EVRouteRefreshTest : BaseTest<EmptyTestActivity>(EmptyTestActivity::class.
438440 KEY_AUXILIARY_CONSUMPTION to " 300"
439441 )
440442 mapboxNavigation.onEVDataUpdated(evData)
441- mapboxNavigation.setNavigationRoutes(requestedRoutes, initialLegIndex = 1 )
442- // corresponds to currentRouteGeometryIndex = 774
443- stayOnPosition(48.391238 , 11.064252 , 90f )
444443 mapboxNavigation.startTripSession()
445- mapboxNavigation.routeProgressUpdates().filter { progress ->
446- progress.currentRouteGeometryIndex == routeGeometryIndex
447- }.first()
444+ // corresponds to currentRouteGeometryIndex = 774
445+ val geometryIndexLocation = Point .fromLngLat(11.064252 , 48.391238 )
446+ waitUntilStayingOnPosition(
447+ geometryIndexLocation.latitude(),
448+ geometryIndexLocation.longitude(),
449+ 90f
450+ )
451+ mapboxNavigation.setNavigationRoutes(requestedRoutes, initialLegIndex = 1 )
452+
453+ mapboxNavigation
454+ .routeProgressUpdates()
455+ .filter { progress ->
456+ progress.currentRouteGeometryIndex == routeGeometryIndex
457+ }.first()
448458
449459 val updatedRoutes = waitUntilRefresh().navigationRoutes
450460
@@ -475,11 +485,15 @@ class EVRouteRefreshTest : BaseTest<EmptyTestActivity>(EmptyTestActivity::class.
475485 )
476486 }
477487
478- private fun stayOnInitialPosition () {
479- stayOnPosition (twoCoordinates[0 ].latitude(), twoCoordinates[0 ].longitude())
488+ private suspend fun stayOnInitialPosition () {
489+ waitUntilStayingOnPosition (twoCoordinates[0 ].latitude(), twoCoordinates[0 ].longitude())
480490 }
481491
482- private fun stayOnPosition (latitude : Double , longitude : Double , bearing : Float = 190f) {
492+ private suspend fun waitUntilStayingOnPosition (
493+ latitude : Double ,
494+ longitude : Double ,
495+ bearing : Float = 190f
496+ ) {
483497 mockLocationReplayerRule.loopUpdate(
484498 mockLocationUpdatesRule.generateLocationUpdate {
485499 this .latitude = latitude
@@ -488,6 +502,10 @@ class EVRouteRefreshTest : BaseTest<EmptyTestActivity>(EmptyTestActivity::class.
488502 },
489503 times = 120
490504 )
505+ mapboxNavigation.flowLocationMatcherResult().filter {
506+ it.enhancedLocation.latitude == latitude &&
507+ it.enhancedLocation.longitude == longitude
508+ }.first()
491509 }
492510
493511 private fun generateRouteOptions (
@@ -608,6 +626,7 @@ class EVRouteRefreshTest : BaseTest<EmptyTestActivity>(EmptyTestActivity::class.
608626 twoCoordinates,
609627 relaxedExpectedCoordinates = true
610628 )
629+ mockWebServerRule.requestHandlers.remove(this .routeHandler)
611630 mockWebServerRule.requestHandlers.add(0 , routeHandler)
612631 }
613632}
0 commit comments