|
|
@@ -51,6 +51,32 @@ class FlashDeliveryRouteServiceTest {
|
|
|
assertEquals("STRAIGHT_LINE", result.source());
|
|
|
}
|
|
|
|
|
|
+ @Test
|
|
|
+ void estimatesStraightLineFallbackDurationBySelectedVehicle() {
|
|
|
+ RouteDistanceProvider provider = (a, b, c, d, vehicleType) -> { throw new IllegalStateException("down"); };
|
|
|
+ FlashDeliveryRouteService service = new FlashDeliveryRouteService(provider);
|
|
|
+
|
|
|
+ RouteDistance motorcycle = service.calculate(point("0", "0"), point("0", "0.01"),
|
|
|
+ FlashDeliveryVehicleType.MOTORCYCLE);
|
|
|
+ RouteDistance car = service.calculate(point("0", "0"), point("0", "0.01"),
|
|
|
+ FlashDeliveryVehicleType.CAR);
|
|
|
+
|
|
|
+ assertEquals("STRAIGHT_LINE", motorcycle.source());
|
|
|
+ assertEquals(161, motorcycle.durationSeconds());
|
|
|
+ assertEquals(134, car.durationSeconds());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void keepsStraightLineFallbackDurationAtLeastOneMinute() {
|
|
|
+ RouteDistanceProvider provider = (a, b, c, d, vehicleType) -> { throw new IllegalStateException("down"); };
|
|
|
+ FlashDeliveryRouteService service = new FlashDeliveryRouteService(provider);
|
|
|
+
|
|
|
+ RouteDistance result = service.calculate(point("0", "0"), point("0", "0.000001"),
|
|
|
+ FlashDeliveryVehicleType.MOTORCYCLE);
|
|
|
+
|
|
|
+ assertEquals(60, result.durationSeconds());
|
|
|
+ }
|
|
|
+
|
|
|
private GeoPoint point(String latitude, String longitude) {
|
|
|
return new GeoPoint(new BigDecimal(latitude), new BigDecimal(longitude));
|
|
|
}
|