Skip to content

Commit 7dc2e2f

Browse files
committed
Use skip by index
1 parent 3578c0e commit 7dc2e2f

File tree

3 files changed

+19
-22
lines changed

3 files changed

+19
-22
lines changed

libnavigation-core/src/main/java/com/mapbox/navigation/core/replay/route/ReplayPolylineDecodeStream.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,11 +96,13 @@ class ReplayPolylineDecodeStream(
9696
}
9797

9898
/**
99-
* Skip the next [count] points of the geometry. Similar to decode except that this does not
100-
* hold any points in memory.
99+
* Skip the next [count] points of the geometry. Less points are skipped if there are less than
100+
* [count] points left in the iterator.
101+
*
102+
* @param count the number of points to skip.
101103
*/
102104
fun skip(count: Int) {
103105
var skipped = 0
104-
while (skipped++ < count && hasNext()) { next() }
106+
while (skipped++ <= count && hasNext()) { next() }
105107
}
106108
}

libnavigation-core/src/main/java/com/mapbox/navigation/core/replay/route/ReplayRouteSession.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,8 @@ import com.mapbox.navigation.core.replay.history.ReplayEventBase
1919
import com.mapbox.navigation.core.replay.history.ReplayEventUpdateLocation
2020
import com.mapbox.navigation.core.replay.history.ReplayEventsObserver
2121
import com.mapbox.navigation.core.trip.session.RouteProgressObserver
22-
import com.mapbox.navigation.utils.internal.logI
2322
import com.mapbox.navigation.utils.internal.logW
24-
import com.mapbox.turf.TurfConstants
25-
import java.util.*
23+
import java.util.Collections
2624

2725
/**
2826
* Used to create a replay trip session. Continue to use [MapboxNavigation.setNavigationRoutes] to

libnavigation-core/src/test/java/com/mapbox/navigation/core/replay/route/ReplayRouteSessionTest.kt

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@ import com.mapbox.navigation.core.replay.history.ReplayEventUpdateLocation
2121
import com.mapbox.navigation.core.replay.history.ReplayEventsObserver
2222
import com.mapbox.navigation.core.trip.session.RouteProgressObserver
2323
import com.mapbox.navigation.testing.LoggingFrontendTestRule
24-
import com.mapbox.turf.TurfConstants
25-
import com.mapbox.turf.TurfMeasurement
2624
import io.mockk.every
2725
import io.mockk.just
2826
import io.mockk.mockk
@@ -182,7 +180,7 @@ class ReplayRouteSessionTest {
182180
)
183181

184182
sut.onAttached(mapboxNavigation)
185-
routeProgressObserver.captured.onRouteProgressChanged(mockRouteProgress(0.0))
183+
routeProgressObserver.captured.onRouteProgressChanged(mockRouteProgress())
186184

187185
val pushedEvents = slot<List<ReplayEventBase>>()
188186
verify { replayer.pushEvents(capture(pushedEvents)) }
@@ -200,7 +198,7 @@ class ReplayRouteSessionTest {
200198
replayEventsObserver.captured.replayEvents(firstArg())
201199
replayer
202200
}
203-
val routeProgress = mockRouteProgress(0.0)
201+
val routeProgress = mockRouteProgress()
204202

205203
sut.setOptions(
206204
ReplayRouteSessionOptions.Builder()
@@ -301,18 +299,18 @@ class ReplayRouteSessionTest {
301299
progressObserver.captured.onRouteProgressChanged(
302300
mockk {
303301
every { navigationRoute } returns primaryRoute
304-
every { distanceTraveled } returns 100.0f
302+
every { currentRouteGeometryIndex } returns 15
305303
}
306304
)
307305
routesObserver.captured.onRoutesChanged(activeRoutes)
308306

309307
val pushedEvents = slot<List<ReplayEventBase>>()
310308
verify { replayer.pushEvents(capture(pushedEvents)) }
311-
verifyDistanceTraveled(pushedEvents.captured, primaryRoute, 100.0)
309+
verifySkipToIndex(pushedEvents.captured, primaryRoute, 15)
312310
}
313311

314312
@Test
315-
fun `onAttached - should skip to short routeProgress distanceTraveled`() {
313+
fun `onAttached - should skip to short routeProgress currentRouteGeometryIndex`() {
316314
val progressObserver = slot<RouteProgressObserver>()
317315
val routesObserver = slot<RoutesObserver>()
318316
every {
@@ -326,38 +324,37 @@ class ReplayRouteSessionTest {
326324
progressObserver.captured.onRouteProgressChanged(
327325
mockk {
328326
every { navigationRoute } returns primaryRoute
329-
every { distanceTraveled } returns 40.0f
327+
every { currentRouteGeometryIndex } returns 12
330328
}
331329
)
332330
routesObserver.captured.onRoutesChanged(activeRoutes)
333331

334332
val pushedEvents = slot<List<ReplayEventBase>>()
335333
verify { replayer.pushEvents(capture(pushedEvents)) }
336-
verifyDistanceTraveled(pushedEvents.captured, primaryRoute, 40.0)
334+
verifySkipToIndex(pushedEvents.captured, primaryRoute, 12)
337335
}
338336

339-
private fun verifyDistanceTraveled(
337+
private fun verifySkipToIndex(
340338
pushedEvents: List<ReplayEventBase>,
341339
primaryRoute: NavigationRoute,
342-
distanceTraveled: Double
340+
currentRouteGeometryIndex: Int
343341
) {
344342
val geometry = primaryRoute.directionsRoute.geometry()!!
345343
val fullRoute = PolylineUtils.decode(geometry, 6)
346-
val expected = TurfMeasurement.along(fullRoute, distanceTraveled, TurfConstants.UNIT_METERS)
344+
val expected = fullRoute[currentRouteGeometryIndex]
347345
val firstReplayLocation = (pushedEvents.first() as ReplayEventUpdateLocation).location
348346
val firstReplayPoint = Point.fromLngLat(firstReplayLocation.lon, firstReplayLocation.lat)
349-
val distanceToPoint = TurfMeasurement.distance(expected, firstReplayPoint)
350347

351-
assertTrue("1.0 > $distanceToPoint", 1.0 > distanceToPoint)
348+
assertEquals(expected, firstReplayPoint)
352349
}
353350

354351
private fun mockActiveRoutesUpdatedResult(): RoutesUpdatedResult = mockk {
355352
every { navigationRoutes } returns listOf(mockNavigationRoute())
356353
}
357354

358-
private fun mockRouteProgress(traveled: Double): RouteProgress = mockk {
355+
private fun mockRouteProgress(): RouteProgress = mockk {
359356
every { navigationRoute } returns mockNavigationRoute()
360-
every { distanceTraveled } returns traveled.toFloat()
357+
every { currentRouteGeometryIndex } returns 0
361358
}
362359

363360
private fun mockNavigationRoute(): NavigationRoute = mockk {

0 commit comments

Comments
 (0)