@Test
public void testAfterMidnight() {
Fixture f = new Fixture();
f.init();
TransitRouterConfig trConfig = new TransitRouterConfig(f.scenario.getConfig().planCalcScore(),
f.scenario.getConfig().plansCalcRoute(), f.scenario.getConfig().transitRouter(),
f.scenario.getConfig().vspExperimental());
trConfig.setBeelineWalkSpeed(0.1);
TransitRouter router = createTransitRouter(f.schedule, trConfig, routerType);
Coord toCoord = new Coord((double) 16100, (double) 5050);
List<Leg> legs = router.calcRoute(new FakeFacility(new Coord((double) 3800, (double) 5100)), new FakeFacility(toCoord), 25.0*3600, null);
assertEquals(3, legs.size());
assertEquals(TransportMode.transit_walk, legs.get(0).getMode());
assertEquals(TransportMode.pt, legs.get(1).getMode());
assertEquals(TransportMode.transit_walk, legs.get(2).getMode());
assertTrue("expected TransitRoute in leg.", legs.get(1).getRoute() instanceof ExperimentalTransitRoute);
ExperimentalTransitRoute ptRoute = (ExperimentalTransitRoute) legs.get(1).getRoute();
assertEquals(Id.create("0", TransitStopFacility.class), ptRoute.getAccessStopId());
assertEquals(Id.create("6", TransitStopFacility.class), ptRoute.getEgressStopId());
assertEquals(f.blueLine.getId(), ptRoute.getLineId());
assertEquals(Id.create("blue A > I", TransitRoute.class), ptRoute.getRouteId());
double actualTravelTime = 0.0;
for (Leg leg : legs) {
actualTravelTime += leg.getTravelTime();
}
double expectedTravelTime = 4*3600 + 29.0 * 60 +
CoordUtils.calcEuclideanDistance(f.schedule.getFacilities().get(Id.create("6", TransitStopFacility.class)).getCoord(), toCoord) / trConfig.getBeelineWalkSpeed();
assertEquals(expectedTravelTime, actualTravelTime, MatsimTestCase.EPSILON);
}