@@ -22,6 +22,7 @@ import com.mapbox.navigation.base.trip.model.RouteProgressState
2222import com.mapbox.navigation.core.MapboxNavigation
2323import com.mapbox.navigation.core.MapboxNavigationProvider
2424import com.mapbox.navigation.core.directions.session.RoutesExtra
25+ import com.mapbox.navigation.core.internal.extensions.flowLocationMatcherResult
2526import com.mapbox.navigation.core.reroute.NavigationRerouteController
2627import com.mapbox.navigation.core.reroute.RerouteController
2728import com.mapbox.navigation.core.reroute.RerouteState
@@ -35,6 +36,7 @@ import com.mapbox.navigation.instrumentation_tests.utils.http.MockDirectionsRefr
3536import com.mapbox.navigation.instrumentation_tests.utils.http.MockDirectionsRequestHandler
3637import com.mapbox.navigation.instrumentation_tests.utils.idling.RouteProgressStateIdlingResource
3738import com.mapbox.navigation.instrumentation_tests.utils.location.MockLocationReplayerRule
39+ import com.mapbox.navigation.instrumentation_tests.utils.location.stayOnPosition
3840import com.mapbox.navigation.instrumentation_tests.utils.readRawFileText
3941import com.mapbox.navigation.instrumentation_tests.utils.routes.MockRoute
4042import com.mapbox.navigation.instrumentation_tests.utils.routes.RoutesProvider
@@ -67,6 +69,7 @@ import org.junit.Rule
6769import org.junit.Test
6870import java.net.URI
6971import java.util.concurrent.TimeUnit
72+ import kotlin.math.abs
7073
7174class CoreRerouteTest : BaseTest <EmptyTestActivity >(EmptyTestActivity : :class.java) {
7275
@@ -853,6 +856,53 @@ class CoreRerouteTest : BaseTest<EmptyTestActivity>(EmptyTestActivity::class.jav
853856 assertEquals(routes[1 ], rerouteResult.navigationRoutes.first())
854857 }
855858
859+ @Test
860+ fun reroute_keeps_eta_model_parameter () = sdkTest {
861+ val mapboxNavigation = createMapboxNavigation()
862+ val coordinates = listOf (
863+ Point .fromLngLat(139.828785 , 36.503349 ),
864+ Point .fromLngLat(139.051904 , 35.982396 )
865+ )
866+ val offRouteLocation = mockLocationUpdatesRule.generateLocationUpdate {
867+ this .latitude = coordinates[0 ].latitude() + 0.002
868+ this .longitude = coordinates[0 ].longitude()
869+ }
870+ val handler = MockDirectionsRequestHandler (
871+ DirectionsCriteria .PROFILE_DRIVING_TRAFFIC ,
872+ readRawFileText(context, R .raw.route_response_enhanced_model),
873+ coordinates,
874+ relaxedExpectedCoordinates = true
875+ )
876+ mockWebServerRule.requestHandlers.add(handler)
877+
878+ mapboxNavigation.startTripSession()
879+ stayOnPosition(coordinates[0 ].latitude(), coordinates[0 ].longitude(), 0f ) {
880+ mapboxNavigation.flowLocationMatcherResult().filter {
881+ abs(it.enhancedLocation.latitude - coordinates[0 ].latitude()) < 0.001 &&
882+ abs(it.enhancedLocation.longitude - coordinates[0 ].longitude()) < 0.001
883+ }.first()
884+ val routes = mapboxNavigation.requestRoutes(
885+ RouteOptions .builder()
886+ .applyDefaultNavigationOptions()
887+ .applyLanguageAndVoiceUnitOptions(activity)
888+ .baseUrl(mockWebServerRule.baseUrl)
889+ .coordinatesList(coordinates)
890+ .unrecognizedProperties(mapOf (" eta_model" to " enhanced" ))
891+ .build()
892+ ).getSuccessfulResultOrThrowException().routes
893+
894+ mapboxNavigation.setNavigationRoutesAndWaitForUpdate(routes)
895+ }
896+ stayOnPosition(offRouteLocation.latitude, offRouteLocation.longitude, 0f ) {
897+ mapboxNavigation.routesUpdates()
898+ .filter { it.reason == RoutesExtra .ROUTES_UPDATE_REASON_REROUTE }
899+ .first()
900+
901+ val rerouteRequest = handler.handledRequests.last()
902+ assertEquals(" enhanced" , rerouteRequest.requestUrl?.queryParameter(" eta_model" ))
903+ }
904+ }
905+
856906 private fun createMapboxNavigation (customRefreshInterval : Long? = null): MapboxNavigation {
857907 var mapboxNavigation: MapboxNavigation ? = null
858908
0 commit comments