@@ -24,6 +24,7 @@ import com.mapbox.navigation.core.mapmatching.MapMatchingFailure
2424import com.mapbox.navigation.core.mapmatching.MapMatchingOptions
2525import com.mapbox.navigation.core.mapmatching.MapMatchingSuccessfulResult
2626import com.mapbox.navigation.core.reroute.RerouteState
27+ import com.mapbox.navigation.core.reroute.RerouteStateV2
2728import com.mapbox.navigation.core.routerefresh.RouteRefreshExtra
2829import com.mapbox.navigation.instrumentation_tests.R
2930import com.mapbox.navigation.testing.ui.BaseCoreNoCleanUpTest
@@ -33,11 +34,14 @@ import com.mapbox.navigation.testing.ui.utils.coroutines.getSuccessfulResultOrTh
3334import com.mapbox.navigation.testing.ui.utils.coroutines.requestMapMatching
3435import com.mapbox.navigation.testing.ui.utils.coroutines.requestRoutes
3536import com.mapbox.navigation.testing.ui.utils.coroutines.rerouteStates
37+ import com.mapbox.navigation.testing.ui.utils.coroutines.rerouteStatesV2
3638import com.mapbox.navigation.testing.ui.utils.coroutines.routeProgressUpdates
3739import com.mapbox.navigation.testing.ui.utils.coroutines.routesUpdates
3840import com.mapbox.navigation.testing.ui.utils.coroutines.sdkTest
3941import com.mapbox.navigation.testing.ui.utils.coroutines.setNavigationRoutesAsync
4042import com.mapbox.navigation.testing.utils.assertions.assertRerouteFailedTransition
43+ import com.mapbox.navigation.testing.utils.assertions.assertRerouteFailedTransitionV2
44+ import com.mapbox.navigation.testing.utils.assertions.assertSuccessfulRouteAppliedRerouteStateTransition
4145import com.mapbox.navigation.testing.utils.history.MapboxHistoryTestRule
4246import com.mapbox.navigation.testing.utils.http.MockDirectionsRefreshHandler
4347import com.mapbox.navigation.testing.utils.http.MockDirectionsRequestHandler
@@ -58,6 +62,7 @@ import kotlinx.coroutines.flow.drop
5862import kotlinx.coroutines.flow.filter
5963import kotlinx.coroutines.flow.first
6064import kotlinx.coroutines.withContext
65+ import kotlinx.coroutines.yield
6166import okhttp3.mockwebserver.MockResponse
6267import org.junit.Assert.assertEquals
6368import org.junit.Assert.assertNull
@@ -190,9 +195,13 @@ class CoreMapMatchingTests : BaseCoreNoCleanUpTest() {
190195 historyRecorderRule = mapboxHistoryTestRule,
191196 ) { navigation ->
192197 val rerouteStates = mutableListOf<RerouteState >()
198+ val rerouteStatesV2 = mutableListOf<RerouteStateV2 >()
193199 navigation.getRerouteController()!! .registerRerouteStateObserver {
194200 rerouteStates.add(it)
195201 }
202+ navigation.getRerouteController()!! .registerRerouteStateV2Observer {
203+ rerouteStatesV2.add(it)
204+ }
196205
197206 val (options, directionOptions) =
198207 setupAlternativeRoutesFromMapMatchingAndDirectionsAPI()
@@ -222,6 +231,7 @@ class CoreMapMatchingTests : BaseCoreNoCleanUpTest() {
222231 regularOnlineRerouteFlow,
223232 rerouteStates,
224233 )
234+ assertSuccessfulRouteAppliedRerouteStateTransition(rerouteStatesV2)
225235 }
226236 }
227237
@@ -231,9 +241,13 @@ class CoreMapMatchingTests : BaseCoreNoCleanUpTest() {
231241 historyRecorderRule = mapboxHistoryTestRule,
232242 ) { navigation ->
233243 val rerouteStates = mutableListOf<RerouteState >()
244+ val rerouteStatesV2 = mutableListOf<RerouteStateV2 >()
234245 navigation.getRerouteController()!! .registerRerouteStateObserver {
235246 rerouteStates.add(it)
236247 }
248+ navigation.getRerouteController()!! .registerRerouteStateV2Observer {
249+ rerouteStatesV2.add(it)
250+ }
237251
238252 val (primaryMapMatched, _, mapMatchedAlternativeOptions) =
239253 setupAlternativeRoutesFromMapMatchingAndDirectionsAPI()
@@ -263,6 +277,7 @@ class CoreMapMatchingTests : BaseCoreNoCleanUpTest() {
263277 regularOnlineRerouteFlow,
264278 rerouteStates,
265279 )
280+ assertSuccessfulRouteAppliedRerouteStateTransition(rerouteStatesV2)
266281 }
267282 }
268283
@@ -315,9 +330,13 @@ class CoreMapMatchingTests : BaseCoreNoCleanUpTest() {
315330 historyRecorderRule = mapboxHistoryTestRule,
316331 ) { navigation ->
317332 val rerouteStates = mutableListOf<RerouteState >()
333+ val rerouteStatesV2 = mutableListOf<RerouteStateV2 >()
318334 navigation.getRerouteController()!! .registerRerouteStateObserver {
319335 rerouteStates.add(it)
320336 }
337+ navigation.getRerouteController()!! .registerRerouteStateV2Observer {
338+ rerouteStatesV2.add(it)
339+ }
321340 val options = setupTestMapMatchingRoute()
322341 val result = navigation.requestMapMatching(options).getSuccessfulOrThrowException()
323342 navigation.setNavigationRoutes(listOf (result.matches.first().navigationRoute))
@@ -336,10 +355,21 @@ class CoreMapMatchingTests : BaseCoreNoCleanUpTest() {
336355 navigation.getRerouteController()?.rerouteStates()?.first {
337356 it !is RerouteState .Idle
338357 }
358+ navigation.getRerouteController()?.rerouteStatesV2()?.first {
359+ it !is RerouteStateV2 .Idle
360+ }
339361 navigation.getRerouteController()?.rerouteStates()?.first {
340362 it is RerouteState .Idle
341363 }
364+ navigation.getRerouteController()?.rerouteStatesV2()?.first {
365+ it is RerouteStateV2 .Idle
366+ }
367+
368+ // let the rerouteStatesV2Observer be notified
369+ yield ()
370+
342371 assertRerouteFailedTransition(rerouteStates)
372+ assertRerouteFailedTransitionV2(rerouteStatesV2)
343373 }
344374 }
345375 }
@@ -350,9 +380,13 @@ class CoreMapMatchingTests : BaseCoreNoCleanUpTest() {
350380 historyRecorderRule = mapboxHistoryTestRule,
351381 ) { navigation ->
352382 val rerouteStates = mutableListOf<RerouteState >()
383+ val rerouteStatesV2 = mutableListOf<RerouteStateV2 >()
353384 navigation.getRerouteController()!! .registerRerouteStateObserver {
354385 rerouteStates.add(it)
355386 }
387+ navigation.getRerouteController()!! .registerRerouteStateV2Observer {
388+ rerouteStatesV2.add(it)
389+ }
356390 val options = setupTestMapMatchingRoute()
357391 val result = navigation.requestMapMatching(options).getSuccessfulOrThrowException()
358392
@@ -385,6 +419,7 @@ class CoreMapMatchingTests : BaseCoreNoCleanUpTest() {
385419 .drop(3 )
386420 .first()
387421 assertRerouteFailedTransition(rerouteStates)
422+ assertRerouteFailedTransitionV2(rerouteStatesV2)
388423 }
389424 }
390425 }
@@ -398,9 +433,13 @@ class CoreMapMatchingTests : BaseCoreNoCleanUpTest() {
398433 val geometryToDeviate = setupMockRouteAfterDeviation()
399434
400435 val rerouteStates = mutableListOf<RerouteState >()
436+ val rerouteStatesV2 = mutableListOf<RerouteStateV2 >()
401437 navigation.getRerouteController()!! .registerRerouteStateObserver {
402438 rerouteStates.add(it)
403439 }
440+ navigation.getRerouteController()!! .registerRerouteStateV2Observer {
441+ rerouteStatesV2.add(it)
442+ }
404443
405444 val options = setupAlternativeRoutesFromMapMatchingAndDirectionsAPI()
406445 .primaryMapMatchedRouteOptions
@@ -442,6 +481,7 @@ class CoreMapMatchingTests : BaseCoreNoCleanUpTest() {
442481 )
443482
444483 assertEquals(regularOnlineRerouteFlow, rerouteStates)
484+ assertSuccessfulRouteAppliedRerouteStateTransition(rerouteStatesV2)
445485 }
446486 }
447487
@@ -454,9 +494,13 @@ class CoreMapMatchingTests : BaseCoreNoCleanUpTest() {
454494 val geometryToDeviate = setupMockRouteAfterDeviation()
455495
456496 val rerouteStates = mutableListOf<RerouteState >()
497+ val rerouteStatesV2 = mutableListOf<RerouteStateV2 >()
457498 navigation.getRerouteController()!! .registerRerouteStateObserver {
458499 rerouteStates.add(it)
459500 }
501+ navigation.getRerouteController()!! .registerRerouteStateV2Observer {
502+ rerouteStatesV2.add(it)
503+ }
460504
461505 val options = setupTwoLegsMapMatchingRoute()
462506 val mapMatchingResult =
@@ -509,6 +553,7 @@ class CoreMapMatchingTests : BaseCoreNoCleanUpTest() {
509553 )
510554
511555 assertEquals(regularOnlineRerouteFlow, rerouteStates)
556+ assertSuccessfulRouteAppliedRerouteStateTransition(rerouteStatesV2)
512557 }
513558 }
514559
@@ -519,9 +564,13 @@ class CoreMapMatchingTests : BaseCoreNoCleanUpTest() {
519564 rerouteStrategyForMapMatchedRoutes = RerouteDisabled ,
520565 ) { navigation ->
521566 val rerouteStates = mutableListOf<RerouteState >()
567+ val rerouteStatesV2 = mutableListOf<RerouteStateV2 >()
522568 navigation.getRerouteController()!! .registerRerouteStateObserver {
523569 rerouteStates.add(it)
524570 }
571+ navigation.getRerouteController()!! .registerRerouteStateV2Observer {
572+ rerouteStatesV2.add(it)
573+ }
525574
526575 val waitForReroute = CompletableDeferred <Unit >()
527576 navigation.registerOffRouteObserver { offRoute ->
@@ -555,6 +604,8 @@ class CoreMapMatchingTests : BaseCoreNoCleanUpTest() {
555604 )
556605
557606 assertEquals(expectedStates, rerouteStates)
607+ assertRerouteFailedTransitionV2(rerouteStatesV2)
608+ assertEquals(message, (rerouteStatesV2[2 ] as RerouteStateV2 .Failed ).message)
558609 }
559610 }
560611
0 commit comments