Skip to content

Commit bff53ff

Browse files
committed
added route preview test
1 parent 78b2d65 commit bff53ff

4 files changed

Lines changed: 93 additions & 5 deletions

File tree

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
package com.mapbox.navigation.instrumentation_tests.core
2+
3+
import android.location.Location
4+
import com.mapbox.api.directions.v5.DirectionsCriteria
5+
import com.mapbox.api.directions.v5.models.RouteOptions
6+
import com.mapbox.navigation.base.options.NavigationOptions
7+
import com.mapbox.navigation.base.route.NavigationRoute
8+
import com.mapbox.navigation.base.route.RouterOrigin
9+
import com.mapbox.navigation.core.MapboxNavigation
10+
import com.mapbox.navigation.core.MapboxNavigationProvider
11+
import com.mapbox.navigation.core.RoutesSetError
12+
import com.mapbox.navigation.core.directions.session.RoutesExtra
13+
import com.mapbox.navigation.instrumentation_tests.activity.EmptyTestActivity
14+
import com.mapbox.navigation.instrumentation_tests.utils.MapboxNavigationRule
15+
import com.mapbox.navigation.instrumentation_tests.utils.coroutines.sdkTest
16+
import com.mapbox.navigation.instrumentation_tests.utils.coroutines.setNavigationRoutesAsync
17+
import com.mapbox.navigation.instrumentation_tests.utils.coroutines.waitForNewRoute
18+
import com.mapbox.navigation.instrumentation_tests.utils.coroutines.waitForPreviewRoute
19+
import com.mapbox.navigation.instrumentation_tests.utils.coroutines.withLogOnTimeout
20+
import com.mapbox.navigation.instrumentation_tests.utils.routes.RoutesProvider
21+
import com.mapbox.navigation.instrumentation_tests.utils.routes.RoutesProvider.toNavigationRoutes
22+
import com.mapbox.navigation.testing.ui.BaseTest
23+
import com.mapbox.navigation.testing.ui.utils.getMapboxAccessTokenFromResources
24+
import com.mapbox.navigation.testing.ui.utils.runOnMainSync
25+
import kotlinx.coroutines.async
26+
import kotlinx.coroutines.delay
27+
import org.junit.Assert
28+
import org.junit.Assert.assertEquals
29+
import org.junit.Assert.assertNotNull
30+
import org.junit.Assert.assertTrue
31+
import org.junit.Before
32+
import org.junit.Rule
33+
import org.junit.Test
34+
import java.util.concurrent.TimeUnit
35+
import kotlin.coroutines.resume
36+
import kotlin.coroutines.suspendCoroutine
37+
38+
class PreviewRoutesTest : BaseTest<EmptyTestActivity>(EmptyTestActivity::class.java) {
39+
40+
override fun setupMockLocation(): Location = mockLocationUpdatesRule.generateLocationUpdate {
41+
latitude = 38.894721
42+
longitude = -77.031991
43+
}
44+
45+
@get:Rule
46+
val mapboxNavigationRule = MapboxNavigationRule()
47+
private lateinit var mapboxNavigation: MapboxNavigation
48+
49+
@Before
50+
fun setUp() {
51+
runOnMainSync {
52+
mapboxNavigation = MapboxNavigationProvider.create(
53+
NavigationOptions.Builder(activity)
54+
.accessToken(getMapboxAccessTokenFromResources(activity))
55+
.build()
56+
)
57+
}
58+
}
59+
60+
@Test
61+
fun preview_routes() = sdkTest {
62+
val routes = RoutesProvider.dc_very_short(activity).toNavigationRoutes()
63+
mapboxNavigation.startTripSession()
64+
val routeObserverDeffer = async {
65+
mapboxNavigation.waitForPreviewRoute()
66+
}
67+
68+
mapboxNavigation.previewNavigationRoutes(routes)
69+
70+
val currentRoutes = mapboxNavigation.getNavigationRoutes()
71+
val routeFromCallback = routeObserverDeffer.await()
72+
assertEquals(routes, currentRoutes)
73+
assertEquals(routes, routeFromCallback.navigationRoutes)
74+
assertEquals(RoutesExtra.ROUTES_UPDATE_REASON_PREVIEW, routeFromCallback.reason)
75+
}
76+
77+
}

instrumentation-tests/src/androidTest/java/com/mapbox/navigation/instrumentation_tests/utils/coroutines/TestUtils.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,10 +108,14 @@ suspend fun MapboxNavigation.waitForAlternativeRoute() {
108108
waitForRoutesUpdate(RoutesExtra.ROUTES_UPDATE_REASON_ALTERNATIVE)
109109
}
110110

111+
suspend fun MapboxNavigation.waitForPreviewRoute(): RoutesUpdatedResult {
112+
return waitForRoutesUpdate(RoutesExtra.ROUTES_UPDATE_REASON_PREVIEW)
113+
}
114+
111115
private suspend fun MapboxNavigation.waitForRoutesUpdate(
112116
@RoutesExtra.RoutesUpdateReason reason: String
113-
) {
114-
routesUpdates()
117+
): RoutesUpdatedResult {
118+
return routesUpdates()
115119
.filter { it.reason == reason }
116120
.first()
117121
}

libnavigation-core/src/main/java/com/mapbox/navigation/core/MapboxNavigation.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import com.mapbox.navigation.base.ExperimentalPreviewMapboxNavigationAPI
2323
import com.mapbox.navigation.base.extensions.applyDefaultNavigationOptions
2424
import com.mapbox.navigation.base.extensions.applyLanguageAndVoiceUnitOptions
2525
import com.mapbox.navigation.base.internal.NavigationRouterV2
26+
import com.mapbox.navigation.base.internal.route.nativeRoute
2627
import com.mapbox.navigation.base.internal.trip.notification.TripNotificationInterceptorOwner
2728
import com.mapbox.navigation.base.options.HistoryRecorderOptions
2829
import com.mapbox.navigation.base.options.NavigationOptions
@@ -130,6 +131,7 @@ import com.mapbox.navigator.FallbackVersionsObserver
130131
import com.mapbox.navigator.IncidentsOptions
131132
import com.mapbox.navigator.NavigatorConfig
132133
import com.mapbox.navigator.PollingConfig
134+
import com.mapbox.navigator.RouteParser
133135
import com.mapbox.navigator.RouterInterface
134136
import com.mapbox.navigator.TileEndpointConfiguration
135137
import com.mapbox.navigator.TilesConfig
@@ -837,16 +839,17 @@ class MapboxNavigation @VisibleForTesting internal constructor(
837839
initialLegIndex: Int = 0,
838840
) {
839841
//TODO: parse alternatives metadata using NN and set it route alternatives controller
840-
directionsSession.setRoutes(routes, initialLegIndex, RoutesExtra.ROUTES_UPDATE_REASON_NEW)
842+
directionsSession.setRoutes(routes, BasicSetRoutesInfo(RoutesExtra.ROUTES_UPDATE_REASON_PREVIEW, initialLegIndex))
841843
}
842844

843845
fun setPreviewedRoute() {
844846
val routes = directionsSession.routes
845847
if (routes.isNotEmpty()) {
846848
internalSetNavigationRoutes(
847849
routes,
848-
directionsSession.initialLegIndex,
849-
RoutesExtra.ROUTES_UPDATE_REASON_NEW
850+
BasicSetRoutesInfo(
851+
RoutesExtra.ROUTES_UPDATE_REASON_NEW
852+
)
850853
)
851854
}
852855
}

libnavigation-core/src/main/java/com/mapbox/navigation/core/directions/session/RoutesExtra.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ object RoutesExtra {
1919
*/
2020
const val ROUTES_UPDATE_REASON_NEW = "ROUTES_UPDATE_REASON_NEW"
2121

22+
23+
const val ROUTES_UPDATE_REASON_PREVIEW = "ROUTES_UPDATE_REASON_PREVIEW"
24+
2225
/**
2326
* Routes update reason is **alternative routes**.
2427
* @see [RoutesObserver]
@@ -48,6 +51,7 @@ object RoutesExtra {
4851
ROUTES_UPDATE_REASON_ALTERNATIVE,
4952
ROUTES_UPDATE_REASON_REROUTE,
5053
ROUTES_UPDATE_REASON_REFRESH,
54+
ROUTES_UPDATE_REASON_PREVIEW,
5155
)
5256
annotation class RoutesUpdateReason
5357
}

0 commit comments

Comments
 (0)