@@ -23,6 +23,7 @@ import com.mapbox.navigation.core.mapmatching.MapMatchingFailure
2323import com.mapbox.navigation.core.mapmatching.MapMatchingOptions
2424import com.mapbox.navigation.core.mapmatching.MapMatchingSuccessfulResult
2525import com.mapbox.navigation.core.reroute.RerouteState
26+ import com.mapbox.navigation.core.reroute.RerouteStateV2
2627import com.mapbox.navigation.core.routerefresh.RouteRefreshExtra
2728import com.mapbox.navigation.instrumentation_tests.R
2829import com.mapbox.navigation.testing.ui.BaseCoreNoCleanUpTest
@@ -32,11 +33,14 @@ import com.mapbox.navigation.testing.ui.utils.coroutines.getSuccessfulResultOrTh
3233import com.mapbox.navigation.testing.ui.utils.coroutines.requestMapMatching
3334import com.mapbox.navigation.testing.ui.utils.coroutines.requestRoutes
3435import com.mapbox.navigation.testing.ui.utils.coroutines.rerouteStates
36+ import com.mapbox.navigation.testing.ui.utils.coroutines.rerouteStatesV2
3537import com.mapbox.navigation.testing.ui.utils.coroutines.routeProgressUpdates
3638import com.mapbox.navigation.testing.ui.utils.coroutines.routesUpdates
3739import com.mapbox.navigation.testing.ui.utils.coroutines.sdkTest
3840import com.mapbox.navigation.testing.ui.utils.coroutines.setNavigationRoutesAsync
3941import com.mapbox.navigation.testing.utils.assertions.assertRerouteFailedTransition
42+ import com.mapbox.navigation.testing.utils.assertions.assertRerouteFailedTransitionV2
43+ import com.mapbox.navigation.testing.utils.assertions.assertSuccessfulRouteAppliedRerouteStateTransition
4044import com.mapbox.navigation.testing.utils.history.MapboxHistoryTestRule
4145import com.mapbox.navigation.testing.utils.http.MockDirectionsRefreshHandler
4246import com.mapbox.navigation.testing.utils.http.MockDirectionsRequestHandler
@@ -57,6 +61,7 @@ import kotlinx.coroutines.flow.drop
5761import kotlinx.coroutines.flow.filter
5862import kotlinx.coroutines.flow.first
5963import kotlinx.coroutines.withContext
64+ import kotlinx.coroutines.yield
6065import okhttp3.mockwebserver.MockResponse
6166import org.junit.Assert.assertEquals
6267import org.junit.Assert.assertNull
@@ -183,9 +188,13 @@ class CoreMapMatchingTests : BaseCoreNoCleanUpTest() {
183188 historyRecorderRule = mapboxHistoryTestRule,
184189 ) { navigation ->
185190 val rerouteStates = mutableListOf<RerouteState >()
191+ val rerouteStatesV2 = mutableListOf<RerouteStateV2 >()
186192 navigation.getRerouteController()!! .registerRerouteStateObserver {
187193 rerouteStates.add(it)
188194 }
195+ navigation.getRerouteController()!! .registerRerouteStateV2Observer {
196+ rerouteStatesV2.add(it)
197+ }
189198
190199 val (options, directionOptions) =
191200 setupAlternativeRoutesFromMapMatchingAndDirectionsAPI()
@@ -213,6 +222,7 @@ class CoreMapMatchingTests : BaseCoreNoCleanUpTest() {
213222 regularOnlineRerouteFlow,
214223 rerouteStates,
215224 )
225+ assertSuccessfulRouteAppliedRerouteStateTransition(rerouteStatesV2)
216226 }
217227 }
218228
@@ -222,9 +232,13 @@ class CoreMapMatchingTests : BaseCoreNoCleanUpTest() {
222232 historyRecorderRule = mapboxHistoryTestRule,
223233 ) { navigation ->
224234 val rerouteStates = mutableListOf<RerouteState >()
235+ val rerouteStatesV2 = mutableListOf<RerouteStateV2 >()
225236 navigation.getRerouteController()!! .registerRerouteStateObserver {
226237 rerouteStates.add(it)
227238 }
239+ navigation.getRerouteController()!! .registerRerouteStateV2Observer {
240+ rerouteStatesV2.add(it)
241+ }
228242
229243 val (primaryMapMatched, _, mapMatchedAlternativeOptions) =
230244 setupAlternativeRoutesFromMapMatchingAndDirectionsAPI()
@@ -253,6 +267,7 @@ class CoreMapMatchingTests : BaseCoreNoCleanUpTest() {
253267 regularOnlineRerouteFlow,
254268 rerouteStates,
255269 )
270+ assertSuccessfulRouteAppliedRerouteStateTransition(rerouteStatesV2)
256271 }
257272 }
258273
@@ -303,9 +318,13 @@ class CoreMapMatchingTests : BaseCoreNoCleanUpTest() {
303318 historyRecorderRule = mapboxHistoryTestRule,
304319 ) { navigation ->
305320 val rerouteStates = mutableListOf<RerouteState >()
321+ val rerouteStatesV2 = mutableListOf<RerouteStateV2 >()
306322 navigation.getRerouteController()!! .registerRerouteStateObserver {
307323 rerouteStates.add(it)
308324 }
325+ navigation.getRerouteController()!! .registerRerouteStateV2Observer {
326+ rerouteStatesV2.add(it)
327+ }
309328 val options = setupTestMapMatchingRoute()
310329 val result = navigation.requestMapMatching(options).getSuccessfulOrThrowException()
311330 navigation.setNavigationRoutes(result.navigationRoutes)
@@ -324,10 +343,21 @@ class CoreMapMatchingTests : BaseCoreNoCleanUpTest() {
324343 navigation.getRerouteController()?.rerouteStates()?.first {
325344 it !is RerouteState .Idle
326345 }
346+ navigation.getRerouteController()?.rerouteStatesV2()?.first {
347+ it !is RerouteStateV2 .Idle
348+ }
327349 navigation.getRerouteController()?.rerouteStates()?.first {
328350 it is RerouteState .Idle
329351 }
352+ navigation.getRerouteController()?.rerouteStatesV2()?.first {
353+ it is RerouteStateV2 .Idle
354+ }
355+
356+ // let the rerouteStatesV2Observer be notified
357+ yield ()
358+
330359 assertRerouteFailedTransition(rerouteStates)
360+ assertRerouteFailedTransitionV2(rerouteStatesV2)
331361 }
332362 }
333363 }
@@ -338,9 +368,13 @@ class CoreMapMatchingTests : BaseCoreNoCleanUpTest() {
338368 historyRecorderRule = mapboxHistoryTestRule,
339369 ) { navigation ->
340370 val rerouteStates = mutableListOf<RerouteState >()
371+ val rerouteStatesV2 = mutableListOf<RerouteStateV2 >()
341372 navigation.getRerouteController()!! .registerRerouteStateObserver {
342373 rerouteStates.add(it)
343374 }
375+ navigation.getRerouteController()!! .registerRerouteStateV2Observer {
376+ rerouteStatesV2.add(it)
377+ }
344378 val options = setupTestMapMatchingRoute()
345379 val result = navigation.requestMapMatching(options).getSuccessfulOrThrowException()
346380
@@ -373,6 +407,7 @@ class CoreMapMatchingTests : BaseCoreNoCleanUpTest() {
373407 .drop(3 )
374408 .first()
375409 assertRerouteFailedTransition(rerouteStates)
410+ assertRerouteFailedTransitionV2(rerouteStatesV2)
376411 }
377412 }
378413 }
@@ -386,9 +421,13 @@ class CoreMapMatchingTests : BaseCoreNoCleanUpTest() {
386421 val geometryToDeviate = setupMockRouteAfterDeviation()
387422
388423 val rerouteStates = mutableListOf<RerouteState >()
424+ val rerouteStatesV2 = mutableListOf<RerouteStateV2 >()
389425 navigation.getRerouteController()!! .registerRerouteStateObserver {
390426 rerouteStates.add(it)
391427 }
428+ navigation.getRerouteController()!! .registerRerouteStateV2Observer {
429+ rerouteStatesV2.add(it)
430+ }
392431
393432 val options = setupAlternativeRoutesFromMapMatchingAndDirectionsAPI()
394433 .primaryMapMatchedRouteOptions
@@ -427,6 +466,7 @@ class CoreMapMatchingTests : BaseCoreNoCleanUpTest() {
427466 )
428467
429468 assertEquals(regularOnlineRerouteFlow, rerouteStates)
469+ assertSuccessfulRouteAppliedRerouteStateTransition(rerouteStatesV2)
430470 }
431471 }
432472
@@ -439,9 +479,13 @@ class CoreMapMatchingTests : BaseCoreNoCleanUpTest() {
439479 val geometryToDeviate = setupMockRouteAfterDeviation()
440480
441481 val rerouteStates = mutableListOf<RerouteState >()
482+ val rerouteStatesV2 = mutableListOf<RerouteStateV2 >()
442483 navigation.getRerouteController()!! .registerRerouteStateObserver {
443484 rerouteStates.add(it)
444485 }
486+ navigation.getRerouteController()!! .registerRerouteStateV2Observer {
487+ rerouteStatesV2.add(it)
488+ }
445489
446490 val options = setupTwoLegsMapMatchingRoute()
447491 val mapMatchingResult =
@@ -491,6 +535,7 @@ class CoreMapMatchingTests : BaseCoreNoCleanUpTest() {
491535 )
492536
493537 assertEquals(regularOnlineRerouteFlow, rerouteStates)
538+ assertSuccessfulRouteAppliedRerouteStateTransition(rerouteStatesV2)
494539 }
495540 }
496541
@@ -501,9 +546,13 @@ class CoreMapMatchingTests : BaseCoreNoCleanUpTest() {
501546 rerouteStrategyForMapMatchedRoutes = RerouteDisabled ,
502547 ) { navigation ->
503548 val rerouteStates = mutableListOf<RerouteState >()
549+ val rerouteStatesV2 = mutableListOf<RerouteStateV2 >()
504550 navigation.getRerouteController()!! .registerRerouteStateObserver {
505551 rerouteStates.add(it)
506552 }
553+ navigation.getRerouteController()!! .registerRerouteStateV2Observer {
554+ rerouteStatesV2.add(it)
555+ }
507556
508557 val waitForReroute = CompletableDeferred <Unit >()
509558 navigation.registerOffRouteObserver { offRoute ->
@@ -536,6 +585,8 @@ class CoreMapMatchingTests : BaseCoreNoCleanUpTest() {
536585 )
537586
538587 assertEquals(expectedStates, rerouteStates)
588+ assertRerouteFailedTransitionV2(rerouteStatesV2)
589+ assertEquals(message, (rerouteStatesV2[2 ] as RerouteStateV2 .Failed ).message)
539590 }
540591 }
541592
0 commit comments