@@ -22,6 +22,7 @@ import com.mapbox.navigation.base.trip.model.RouteProgressState
22
22
import com.mapbox.navigation.core.MapboxNavigation
23
23
import com.mapbox.navigation.core.MapboxNavigationProvider
24
24
import com.mapbox.navigation.core.directions.session.RoutesExtra
25
+ import com.mapbox.navigation.core.internal.extensions.flowLocationMatcherResult
25
26
import com.mapbox.navigation.core.reroute.NavigationRerouteController
26
27
import com.mapbox.navigation.core.reroute.RerouteController
27
28
import com.mapbox.navigation.core.reroute.RerouteState
@@ -35,6 +36,7 @@ import com.mapbox.navigation.instrumentation_tests.utils.http.MockDirectionsRefr
35
36
import com.mapbox.navigation.instrumentation_tests.utils.http.MockDirectionsRequestHandler
36
37
import com.mapbox.navigation.instrumentation_tests.utils.idling.RouteProgressStateIdlingResource
37
38
import com.mapbox.navigation.instrumentation_tests.utils.location.MockLocationReplayerRule
39
+ import com.mapbox.navigation.instrumentation_tests.utils.location.stayOnPosition
38
40
import com.mapbox.navigation.instrumentation_tests.utils.readRawFileText
39
41
import com.mapbox.navigation.instrumentation_tests.utils.routes.MockRoute
40
42
import com.mapbox.navigation.instrumentation_tests.utils.routes.RoutesProvider
@@ -67,6 +69,7 @@ import org.junit.Rule
67
69
import org.junit.Test
68
70
import java.net.URI
69
71
import java.util.concurrent.TimeUnit
72
+ import kotlin.math.abs
70
73
71
74
class CoreRerouteTest : BaseTest <EmptyTestActivity >(EmptyTestActivity : :class.java) {
72
75
@@ -853,6 +856,53 @@ class CoreRerouteTest : BaseTest<EmptyTestActivity>(EmptyTestActivity::class.jav
853
856
assertEquals(routes[1 ], rerouteResult.navigationRoutes.first())
854
857
}
855
858
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
+
856
906
private fun createMapboxNavigation (customRefreshInterval : Long? = null): MapboxNavigation {
857
907
var mapboxNavigation: MapboxNavigation ? = null
858
908
0 commit comments