@Test
public void testOneTravelTimeCalculatorPerMode() {
Config config = ConfigUtils.createConfig();
config.travelTimeCalculator().setAnalyzedModes("car,bike");
config.travelTimeCalculator().setSeparateModes(true);
Scenario scenario = ScenarioUtils.createScenario(config);
Node node0 = scenario.getNetwork().getFactory().createNode(Id.createNodeId(0), new Coord(0, 0));
Node node1 = scenario.getNetwork().getFactory().createNode(Id.createNodeId(1), new Coord(1, 0));
scenario.getNetwork().addNode(node0);
scenario.getNetwork().addNode(node1);
Id<Link> linkId = Id.createLinkId(0);
Link link = scenario.getNetwork().getFactory().createLink(linkId, node0, node1);
scenario.getNetwork().addLink(link);
com.google.inject.Injector injector = Injector.createInjector(config, new TravelTimeCalculatorModule(), new EventsManagerModule(), new ScenarioByInstanceModule(scenario));
TravelTimeCalculator car = injector.getInstance(Key.get(TravelTimeCalculator.class, Names.named("car")));
TravelTimeCalculator bike = injector.getInstance(Key.get(TravelTimeCalculator.class, Names.named("bike")));
EventsManager events = injector.getInstance(EventsManager.class);
events.processEvent(new VehicleEntersTrafficEvent(0.0, Id.createPersonId(0), linkId, Id.createVehicleId(0), "car", 0.0));
events.processEvent(new LinkEnterEvent(0.0, Id.createVehicleId(0), linkId));
events.processEvent(new LinkLeaveEvent(2.0, Id.createVehicleId(0), linkId));
events.processEvent(new VehicleLeavesTrafficEvent(2.0, Id.createPersonId(0), linkId, Id.createVehicleId(0), "car", 0.0));
events.processEvent(new VehicleEntersTrafficEvent(0.0, Id.createPersonId(1), linkId, Id.createVehicleId(1), "bike", 0.0));
events.processEvent(new LinkEnterEvent(0.0, Id.createVehicleId(1), linkId));
events.processEvent(new LinkLeaveEvent(8.0, Id.createVehicleId(1), linkId));
events.processEvent(new VehicleLeavesTrafficEvent(8.0, Id.createPersonId(1), linkId, Id.createVehicleId(1), "bike", 0.0));
assertThat(car.getLinkTravelTime(link, 0.0), is(2.0));
assertThat(bike.getLinkTravelTime(link, 0.0), is(8.0));
}