-
Notifications
You must be signed in to change notification settings - Fork 319
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fixed an issue where remaining waypoints would always return 0 and br…
…eak reroute handling
- Loading branch information
1 parent
81a06b6
commit 7437dc6
Showing
7 changed files
with
186 additions
and
5 deletions.
There are no files selected for viewing
130 changes: 130 additions & 0 deletions
130
.../src/androidTest/java/com/mapbox/navigation/instrumentation_tests/core/CoreRerouteTest.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,130 @@ | ||
package com.mapbox.navigation.instrumentation_tests.core | ||
|
||
import androidx.test.espresso.Espresso | ||
import com.mapbox.api.directions.v5.models.RouteOptions | ||
import com.mapbox.geojson.Point | ||
import com.mapbox.navigation.base.internal.extensions.applyDefaultParams | ||
import com.mapbox.navigation.base.options.NavigationOptions | ||
import com.mapbox.navigation.base.trip.model.RouteProgressState | ||
import com.mapbox.navigation.core.MapboxNavigation | ||
import com.mapbox.navigation.core.MapboxNavigationProvider | ||
import com.mapbox.navigation.instrumentation_tests.R | ||
import com.mapbox.navigation.instrumentation_tests.activity.EmptyTestActivity | ||
import com.mapbox.navigation.instrumentation_tests.utils.MapboxNavigationRule | ||
import com.mapbox.navigation.instrumentation_tests.utils.assertions.RouteProgressStateTransitionAssertion | ||
import com.mapbox.navigation.instrumentation_tests.utils.http.MockDirectionsRequestHandler | ||
import com.mapbox.navigation.instrumentation_tests.utils.idling.RouteProgressStateIdlingResource | ||
import com.mapbox.navigation.instrumentation_tests.utils.location.MockLocationReplayerRule | ||
import com.mapbox.navigation.instrumentation_tests.utils.readRawFileText | ||
import com.mapbox.navigation.instrumentation_tests.utils.routes.MockRoutesProvider | ||
import com.mapbox.navigation.instrumentation_tests.utils.runOnMainSync | ||
import com.mapbox.navigation.testing.ui.BaseTest | ||
import com.mapbox.navigation.testing.ui.utils.getMapboxAccessTokenFromResources | ||
import org.junit.Before | ||
import org.junit.Rule | ||
import org.junit.Test | ||
|
||
class CoreRerouteTest : BaseTest<EmptyTestActivity>(EmptyTestActivity::class.java) { | ||
|
||
@get:Rule | ||
val mapboxNavigationRule = MapboxNavigationRule() | ||
|
||
@get:Rule | ||
val mockLocationReplayerRule = MockLocationReplayerRule(mockLocationUpdatesRule) | ||
|
||
private lateinit var mapboxNavigation: MapboxNavigation | ||
|
||
private lateinit var offRouteIdlingResource: RouteProgressStateIdlingResource | ||
private lateinit var locationTrackingIdlingResource: RouteProgressStateIdlingResource | ||
|
||
@Before | ||
fun setup() { | ||
Espresso.onIdle() | ||
|
||
mapboxNavigation = MapboxNavigationProvider.create( | ||
NavigationOptions.Builder(activity) | ||
.accessToken(getMapboxAccessTokenFromResources(activity)) | ||
.build() | ||
) | ||
locationTrackingIdlingResource = RouteProgressStateIdlingResource( | ||
mapboxNavigation, | ||
RouteProgressState.LOCATION_TRACKING | ||
) | ||
offRouteIdlingResource = RouteProgressStateIdlingResource( | ||
mapboxNavigation, | ||
RouteProgressState.OFF_ROUTE | ||
) | ||
} | ||
|
||
@Test | ||
fun reroute_completes() { | ||
// prepare | ||
val mockRoute = MockRoutesProvider.dc_very_short(activity) | ||
|
||
val originLocation = mockLocationUpdatesRule.generateLocationUpdate { | ||
latitude = mockRoute.routeWaypoints.first().latitude() | ||
longitude = mockRoute.routeWaypoints.first().longitude() | ||
} | ||
|
||
val offRouteLocationUpdate = mockLocationUpdatesRule.generateLocationUpdate { | ||
latitude = originLocation.latitude + 0.002 | ||
longitude = originLocation.longitude | ||
} | ||
|
||
mockWebServerRule.requestHandlers.addAll(mockRoute.mockRequestHandlers) | ||
mockWebServerRule.requestHandlers.add( | ||
MockDirectionsRequestHandler( | ||
profile = "driving", | ||
jsonResponse = readRawFileText(activity, R.raw.reroute_response_dc_very_short), | ||
expectedCoordinates = listOf( | ||
Point.fromLngLat( | ||
offRouteLocationUpdate.longitude, | ||
offRouteLocationUpdate.latitude | ||
), | ||
mockRoute.routeWaypoints.last() | ||
) | ||
) | ||
) | ||
locationTrackingIdlingResource.register() | ||
|
||
val expectedStates = RouteProgressStateTransitionAssertion(mapboxNavigation) { | ||
optionalState(RouteProgressState.ROUTE_INVALID) | ||
requiredState(RouteProgressState.LOCATION_TRACKING) | ||
requiredState(RouteProgressState.OFF_ROUTE) | ||
optionalState(RouteProgressState.ROUTE_INITIALIZED) | ||
requiredState(RouteProgressState.LOCATION_TRACKING) | ||
} | ||
|
||
// start a route | ||
runOnMainSync { | ||
mockLocationUpdatesRule.pushLocationUpdate(originLocation) | ||
mapboxNavigation.startTripSession() | ||
mapboxNavigation.requestRoutes( | ||
RouteOptions.builder().applyDefaultParams() | ||
.baseUrl(mockWebServerRule.baseUrl) | ||
.accessToken(getMapboxAccessTokenFromResources(activity)) | ||
.coordinates(mockRoute.routeWaypoints).build() | ||
) | ||
} | ||
|
||
// wait for tracking to start | ||
Espresso.onIdle() | ||
locationTrackingIdlingResource.unregister() | ||
|
||
// push off route location and wait for the off route event | ||
offRouteIdlingResource.register() | ||
runOnMainSync { | ||
mockLocationReplayerRule.loopUpdate(offRouteLocationUpdate, times = 5) | ||
} | ||
Espresso.onIdle() | ||
offRouteIdlingResource.unregister() | ||
|
||
// wait for tracking to start again | ||
locationTrackingIdlingResource.register() | ||
Espresso.onIdle() | ||
locationTrackingIdlingResource.unregister() | ||
|
||
// assert results | ||
expectedStates.assert() | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1 change: 1 addition & 0 deletions
1
instrumentation-tests/src/main/res/raw/reroute_response_dc_very_short.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
{"routes":[{"weight_name":"auto","weight":170.807,"duration":120.945,"distance":581.831,"legs":[{"annotation":{"congestion":["unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown","unknown"],"distance":[26.9,30.5,12.6,13.9,67.8,105.1,1.2,13.8,8.3,3.8,111.3,12.1,12.4,40.4,13.8,7.4,12,6.9,12.8,15.1,36.9,12.6,3.8]},"admins":[{"iso_3166_1_alpha3":"USA","iso_3166_1":"US"}],"weight":170.807,"duration":120.945,"steps":[{"bannerInstructions":[{"primary":{"components":[{"type":"text","text":"F Street Northwest"}],"type":"turn","modifier":"right","text":"F Street Northwest"},"distanceAlongGeometry":71.042}],"voiceInstructions":[{"ssmlAnnouncement":"<speak><amazon:effect name=\"drc\"><prosody rate=\"1.08\">Drive north on 14th Street Northwest. Then Turn right onto F Street Northwest.</prosody></amazon:effect></speak>","announcement":"Drive north on 14th Street Northwest. Then Turn right onto F Street Northwest.","distanceAlongGeometry":71.042}],"intersections":[{"entry":[true],"bearings":[0],"duration":2.95,"mapbox_streets_v8":{"class":"secondary"},"is_urban":true,"admin_index":0,"out":0,"weight":3.614,"geometry_index":0,"location":[-77.03195,38.896721]},{"entry":[true,false],"in":1,"bearings":[0,180],"duration":3.382,"turn_weight":0.5,"mapbox_streets_v8":{"class":"secondary"},"is_urban":true,"admin_index":0,"out":0,"weight":4.643,"geometry_index":1,"location":[-77.03195,38.896963]},{"bearings":[0,180],"entry":[true,false],"in":1,"turn_weight":2,"turn_duration":0.007,"mapbox_streets_v8":{"class":"secondary"},"is_urban":true,"admin_index":0,"out":0,"geometry_index":2,"location":[-77.03195,38.897237]}],"maneuver":{"type":"depart","instruction":"Drive north on 14th Street Northwest.","bearing_after":0,"bearing_before":0,"location":[-77.03195,38.896721]},"name":"14th Street Northwest","duration":7.757,"distance":71.042,"driving_side":"right","weight":11.994,"mode":"driving","geometry":"adaeiAz_t|qCcN?cP?aF?"},{"bannerInstructions":[{"primary":{"components":[{"type":"text","text":"13th Street Northwest"}],"type":"turn","modifier":"right","text":"13th Street Northwest"},"distanceAlongGeometry":202}],"voiceInstructions":[{"ssmlAnnouncement":"<speak><amazon:effect name=\"drc\"><prosody rate=\"1.08\">In 700 feet, Turn right onto 13th Street Northwest.</prosody></amazon:effect></speak>","announcement":"In 700 feet, Turn right onto 13th Street Northwest.","distanceAlongGeometry":185.667},{"ssmlAnnouncement":"<speak><amazon:effect name=\"drc\"><prosody rate=\"1.08\">Turn right onto 13th Street Northwest.</prosody></amazon:effect></speak>","announcement":"Turn right onto 13th Street Northwest.","distanceAlongGeometry":87.111}],"intersections":[{"entry":[true,false],"in":1,"bearings":[90,180],"duration":7.255,"turn_weight":8,"turn_duration":4.105,"mapbox_streets_v8":{"class":"secondary"},"is_urban":true,"admin_index":0,"out":0,"weight":11.859,"geometry_index":3,"location":[-77.03195,38.89735]},{"entry":[true,false],"in":1,"bearings":[90,270],"duration":38.932,"turn_weight":2,"turn_duration":0.007,"mapbox_streets_v8":{"class":"secondary"},"is_urban":true,"admin_index":0,"out":0,"weight":49.683,"geometry_index":4,"location":[-77.031789,38.89735]},{"bearings":[90,270],"entry":[true,false],"in":1,"turn_weight":2,"turn_duration":0.007,"mapbox_streets_v8":{"class":"secondary"},"is_urban":true,"admin_index":0,"out":0,"geometry_index":6,"location":[-77.029794,38.897346]}],"maneuver":{"type":"turn","instruction":"Turn right onto F Street Northwest.","modifier":"right","bearing_after":90,"bearing_before":0,"location":[-77.03195,38.89735]},"name":"F Street Northwest","duration":49.569,"distance":202,"driving_side":"right","weight":67.676,"mode":"driving","geometry":"kkbeiAz_t|qC?aI@{o@DyjA?[?}H"},{"bannerInstructions":[{"sub":{"components":[{"active":false,"directions":["left"],"type":"lane","text":""},{"active":false,"directions":["left"],"type":"lane","text":""},{"active_direction":"right","active":true,"directions":["straight","right"],"type":"lane","text":""}],"text":""},"primary":{"components":[{"type":"text","text":"Pennsylvania Avenue Northwest"}],"type":"turn","modifier":"right","text":"Pennsylvania Avenue Northwest"},"distanceAlongGeometry":201}],"voiceInstructions":[{"ssmlAnnouncement":"<speak><amazon:effect name=\"drc\"><prosody rate=\"1.08\">In 700 feet, Turn right onto Pennsylvania Avenue Northwest.</prosody></amazon:effect></speak>","announcement":"In 700 feet, Turn right onto Pennsylvania Avenue Northwest.","distanceAlongGeometry":184.667},{"ssmlAnnouncement":"<speak><amazon:effect name=\"drc\"><prosody rate=\"1.08\">Turn right onto Pennsylvania Avenue Northwest. Then, in 400 feet, Your destination will be on the left.</prosody></amazon:effect></speak>","announcement":"Turn right onto Pennsylvania Avenue Northwest. Then, in 400 feet, Your destination will be on the left.","distanceAlongGeometry":123.861}],"intersections":[{"entry":[true,false],"in":1,"bearings":[180,270],"duration":5.621,"turn_weight":8,"turn_duration":4.105,"mapbox_streets_v8":{"class":"secondary"},"is_urban":true,"admin_index":0,"out":0,"weight":9.857,"geometry_index":8,"location":[-77.029621,38.897346]},{"entry":[false,true],"in":0,"bearings":[0,180],"duration":21.796,"turn_weight":2,"turn_duration":0.007,"mapbox_streets_v8":{"class":"secondary"},"is_urban":true,"admin_index":0,"out":1,"weight":28.147,"geometry_index":9,"location":[-77.029621,38.897271]},{"entry":[false,true],"in":0,"bearings":[0,180],"duration":2.281,"turn_weight":2,"turn_duration":0.007,"mapbox_streets_v8":{"class":"secondary"},"is_urban":true,"admin_index":0,"out":1,"weight":4.728,"geometry_index":11,"location":[-77.029624,38.896237]},{"entry":[false,true],"in":0,"bearings":[0,196],"duration":3.62,"turn_weight":6,"turn_duration":2.02,"mapbox_streets_v8":{"class":"secondary"},"is_urban":true,"admin_index":0,"out":1,"weight":7.92,"geometry_index":12,"location":[-77.029624,38.896128]},{"entry":[false,true],"in":0,"bearings":[16,181],"duration":5.382,"turn_weight":2,"turn_duration":0.048,"mapbox_streets_v8":{"class":"secondary"},"is_urban":true,"admin_index":0,"out":1,"weight":8.4,"geometry_index":13,"location":[-77.029663,38.896021]},{"bearings":[1,188],"entry":[false,true],"in":0,"turn_weight":2,"lanes":[{"indications":["left"],"valid":false,"active":false},{"indications":["left"],"valid":false,"active":false},{"indications":["straight"],"valid_indication":"straight","valid":true,"active":true}],"turn_duration":0.012,"mapbox_streets_v8":{"class":"secondary"},"is_urban":true,"admin_index":0,"out":1,"geometry_index":14,"location":[-77.029672,38.895658]}],"maneuver":{"type":"turn","instruction":"Turn right onto 13th Street Northwest.","modifier":"right","bearing_after":180,"bearing_before":90,"location":[-77.029621,38.897346]},"name":"13th Street Northwest","duration":40.578,"distance":201,"driving_side":"right","weight":63.293,"mode":"driving","geometry":"ckbeiAhno|qCtC?bA?n}@DxE?tElAtUPtFj@"},{"bannerInstructions":[{"primary":{"components":[{"type":"text","text":"Your destination will be on the left"}],"type":"arrive","modifier":"left","text":"Your destination will be on the left"},"distanceAlongGeometry":107.79},{"primary":{"components":[{"type":"text","text":"Your destination is on the left"}],"type":"arrive","modifier":"left","text":"Your destination is on the left"},"distanceAlongGeometry":79.167}],"voiceInstructions":[{"ssmlAnnouncement":"<speak><amazon:effect name=\"drc\"><prosody rate=\"1.08\">Your destination is on the left.</prosody></amazon:effect></speak>","announcement":"Your destination is on the left.","distanceAlongGeometry":79.167}],"intersections":[{"lanes":[{"indications":["left"],"valid":false,"active":false},{"indications":["left"],"valid":false,"active":false},{"indications":["straight","right"],"valid_indication":"right","valid":true,"active":true}],"location":[-77.029694,38.895535],"geometry_index":15,"admin_index":0,"weight":10.043,"is_urban":true,"mapbox_streets_v8":{"class":"primary"},"turn_duration":5.373,"turn_weight":9,"duration":6.242,"bearings":[8,288],"out":1,"in":0,"entry":[false,true]},{"entry":[false,true],"in":0,"bearings":[108,281],"duration":2.387,"turn_duration":0.028,"mapbox_streets_v8":{"class":"primary"},"is_urban":true,"admin_index":0,"out":1,"weight":2.83,"geometry_index":16,"location":[-77.029775,38.895556]},{"entry":[false,true],"in":0,"bearings":[101,274],"duration":1.614,"mapbox_streets_v8":{"class":"primary"},"is_urban":true,"admin_index":0,"out":1,"weight":1.937,"geometry_index":18,"location":[-77.029989,38.895589]},{"entry":[false,true],"in":0,"bearings":[94,270],"duration":6.455,"mapbox_streets_v8":{"class":"primary"},"is_urban":true,"admin_index":0,"out":1,"weight":7.746,"geometry_index":19,"location":[-77.030136,38.895597]},{"entry":[false,true],"in":0,"bearings":[90,269],"duration":5.362,"lanes":[{"indications":["left"],"valid":false,"active":false},{"indications":["straight"],"valid_indication":"straight","valid":true,"active":true},{"indications":["straight"],"valid_indication":"straight","valid":true,"active":false}],"turn_duration":2.019,"mapbox_streets_v8":{"class":"primary"},"is_urban":true,"admin_index":0,"out":1,"weight":4.095,"geometry_index":21,"location":[-77.030736,38.895595]},{"bearings":[89,269],"entry":[false,true],"in":0,"turn_duration":0.007,"mapbox_streets_v8":{"class":"primary"},"is_urban":true,"admin_index":0,"out":1,"geometry_index":22,"location":[-77.030881,38.895593]}],"maneuver":{"type":"turn","instruction":"Turn right onto Pennsylvania Avenue Northwest.","modifier":"right","bearing_after":288,"bearing_before":188,"location":[-77.029694,38.895535]},"name":"Pennsylvania Avenue Northwest","duration":23.041,"distance":107.79,"driving_side":"right","weight":27.845,"mode":"driving","geometry":"}y~diAzro|qCi@`Do@lGQ|COdH@zI@rYB`H@vA"},{"bannerInstructions":[],"voiceInstructions":[],"intersections":[{"bearings":[89],"entry":[true],"in":0,"admin_index":0,"geometry_index":23,"location":[-77.030925,38.895592]}],"maneuver":{"type":"arrive","instruction":"Your destination is on the left.","modifier":"left","bearing_after":0,"bearing_before":269,"location":[-77.030925,38.895592]},"name":"Pennsylvania Avenue Northwest","duration":0,"distance":0,"driving_side":"right","weight":0,"mode":"driving","geometry":"o}~diAx_r|qC??"}],"distance":581.831,"summary":"F Street Northwest, 13th Street Northwest"}],"geometry":"adaeiAz_t|qCcN?cP?aF??aI@{o@DyjA?[?}HtC?bA?n}@DxE?tElAtUPtFj@i@`Do@lGQ|COdH@zI@rYB`H@vA","voiceLocale":"en-US"}],"waypoints":[{"distance":3.551,"name":"14th Street Northwest","location":[-77.03195,38.896721]},{"distance":7.719,"name":"Pennsylvania Avenue Northwest","location":[-77.030925,38.895592]}],"code":"Ok","uuid":""} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.