@Override public final Collection<AgentSnapshotInfo> addAgentSnapshotInfo(Collection<AgentSnapshotInfo> positions, double now) { if ( !buffer.isEmpty() || !vehQueue.isEmpty() || !holes.isEmpty() ) { Gbl.assertNotNull(positions); Gbl.assertNotNull( context.snapshotInfoBuilder ); if ( this.upstreamCoord==null ) { this.upstreamCoord = qLink.getFromNode().getCoord() ; } if ( this.downstreamCoord==null ) { this.downstreamCoord = qLink.getToNode().getCoord() ; } // vehicle positions are computed in snapshotInfoBuilder as a service: positions = context.snapshotInfoBuilder.positionVehiclesAlongLine( positions, now, getAllVehicles(), length, storageCapacity + getBufferStorageCapacity(), this.upstreamCoord, this.downstreamCoord, inverseFlowCapacityPerTimeStep, qLink.getFreespeed(now), // NetworkUtils.getNumberOfLanesAsInt(now, qLink.getLink()), qLink.getNumberOfLanesAsInt(now) , holes ); } return positions ; }
@Test public void testAdd() { Fixture f = new Fixture(isUsingFastCapacityUpdate); assertEquals(0, ((QueueWithBuffer) f.qlink1.getAcceptingQLane()).getAllVehicles().size()); QVehicle v = new QVehicleImpl(f.basicVehicle); Person p = PopulationUtils.getFactory().createPerson(Id.create("1", Person.class)); p.addPlan(PopulationUtils.createPlan()); v.setDriver(createAndInsertPersonDriverAgentImpl(p, f.sim)); f.qlink1.getAcceptingQLane().addFromUpstream(v); assertEquals(1, ((QueueWithBuffer) f.qlink1.getAcceptingQLane()).getAllVehicles().size()); assertFalse(f.qlink1.getAcceptingQLane().isAcceptingFromUpstream()); assertTrue(f.qlink1.isNotOfferingVehicle()); }
/** * Tests that vehicles parked on a link are found with {@link NetsimLink#getVehicle(Id)} * and {@link NetsimLink#getAllVehicles()}. * * @author mrieser */ @Test public void testGetVehicle_Parking() { Fixture f = new Fixture(isUsingFastCapacityUpdate); Id<Vehicle> id1 = Id.create("1", Vehicle.class); QVehicle veh = new QVehicleImpl(f.basicVehicle); Person p = PopulationUtils.getFactory().createPerson(Id.create(42, Person.class)); p.addPlan(PopulationUtils.createPlan()); veh.setDriver(createAndInsertPersonDriverAgentImpl(p, f.sim)); // start test, check initial conditions assertTrue(f.qlink1.isNotOfferingVehicle()); assertEquals(0, ((QueueWithBuffer) f.qlink1.getAcceptingQLane()).getAllVehicles().size()); assertEquals(0, f.qlink1.getAllVehicles().size()); f.qlink1.addParkedVehicle(veh); assertTrue(f.qlink1.isNotOfferingVehicle()); assertEquals(0, ((QueueWithBuffer) f.qlink1.getAcceptingQLane()).getAllVehicles().size()); // vehicle not on _lane_ assertEquals("vehicle not found in parking list.", veh, f.qlink1.getVehicle(id1)); assertEquals(1, f.qlink1.getAllVehicles().size()); // vehicle indeed on _link_ assertEquals(veh, f.qlink1.getAllVehicles().iterator().next()); assertEquals("removed wrong vehicle.", veh, f.qlink1.removeParkedVehicle(veh.getId())); assertTrue(f.qlink1.isNotOfferingVehicle()); assertEquals(0, ((QueueWithBuffer) f.qlink1.getAcceptingQLane()).getAllVehicles().size()); assertNull("vehicle not found in parking list.", f.qlink1.getVehicle(id1)); assertEquals(0, f.qlink1.getAllVehicles().size()); }
assertEquals(0, ((QueueWithBuffer) f.qlink1.getAcceptingQLane()).getAllVehicles().size()); assertEquals(1, f.qlink1.getAllVehicles().size()); assertEquals(0, ((QueueWithBuffer) f.qlink1.getAcceptingQLane()).getAllVehicles().size()); // veh not on lane assertEquals("vehicle not found in waiting list.", veh, f.qlink1.getVehicle(id1)); // veh _should_ be on link (in waiting list) assertEquals(1, f.qlink1.getAllVehicles().size()); // dto assertEquals(1, ((QueueWithBuffer) f.qlink1.getAcceptingQLane()).getAllVehicles().size()); // somewhere on lane assertEquals("vehicle not found in buffer.", veh, f.qlink1.getVehicle(id1)); // somewhere on link assertEquals(1, f.qlink1.getAllVehicles().size()); // somewhere on link assertEquals(0, ((QueueWithBuffer) f.qlink1.getAcceptingQLane()).getAllVehicles().size()); assertNull("vehicle should not be on link anymore.", f.qlink1.getVehicle(id1)); assertEquals(0, f.qlink1.getAllVehicles().size());
assertEquals(0, ((QueueWithBuffer) qlink.getAcceptingQLane()).getAllVehicles().size()); assertEquals(1, ((QueueWithBuffer) qlink.getAcceptingQLane()).getAllVehicles().size()); assertTrue(qlink.isNotOfferingVehicle()); assertEquals(1, ((QueueWithBuffer) qlink.getAcceptingQLane()).getAllVehicles().size()); assertFalse(qlink.isNotOfferingVehicle()); assertEquals(2, ((QueueWithBuffer) qlink.getAcceptingQLane()).getAllVehicles().size()); assertFalse(qlink.isNotOfferingVehicle()); assertEquals(2, ((QueueWithBuffer) qlink.getAcceptingQLane()).getAllVehicles().size()); assertFalse(qlink.isNotOfferingVehicle()); assertEquals(1, ((QueueWithBuffer) qlink.getAcceptingQLane()).getAllVehicles().size()); assertTrue(qlink.isNotOfferingVehicle()); assertEquals(1, ((QueueWithBuffer) qlink.getAcceptingQLane()).getAllVehicles().size()); assertFalse(qlink.isNotOfferingVehicle()); assertEquals(0, ((QueueWithBuffer) qlink.getAcceptingQLane()).getAllVehicles().size()); assertTrue(qlink.isNotOfferingVehicle()); assertEquals(0, ((QueueWithBuffer) qlink.getAcceptingQLane()).getAllVehicles().size()); assertTrue(qlink.isNotOfferingVehicle());
assertEquals(0, ((QueueWithBuffer) f.qlink1.getAcceptingQLane()).getAllVehicles().size()); assertNull(f.qlink1.getVehicle(id1)); assertEquals(0, f.qlink1.getAllVehicles().size()); assertEquals(1, ((QueueWithBuffer) f.qlink1.getAcceptingQLane()).getAllVehicles().size()); assertEquals("vehicle not found on link.", veh, f.qlink1.getVehicle(id1)); assertEquals(1, f.qlink1.getAllVehicles().size());