/** * Tests that the register call back injects the possibly decorated instance. */ @Test public void register() { final Parcel p = Parcel.builder(new Point(0, 0), new Point(0, 0)) .build(); model.register(p); assertThat(model).isSameAs(p.pdpModel.get()); final TestDepot d = new TestDepot(10); model.register(d); assertThat(model).isSameAs(d.pdpModel.get()); final TestVehicle v = new TestVehicle(); model.register(v); assertThat(model).isSameAs(v.pdpModel.get()); }
@Test public void testDrop() { final Vehicle truck = new TestVehicle(VehicleDTO.builder() .startPosition(new Point(1, 1)) .capacity(10)
@Test public void testPickupAfterDrop() { final Vehicle truck = new TestVehicle( VehicleDTO.builder() .startPosition(new Point(1, 1)) final Vehicle truck2 = new TestVehicle( VehicleDTO.builder() .startPosition(new Point(2, 2))
.build(); final Vehicle truck = new TestVehicle( VehicleDTO.builder() .startPosition(new Point(1, 1))
@Test public void testDeliver() { final Vehicle truck = new TestVehicle(VehicleDTO.builder() .startPosition(new Point(1, 1)) .capacity(10)
@Test public void testPickupFail6B() { final Vehicle truck = new TestVehicle(VehicleDTO.builder() .startPosition(new Point(1, 1)) .capacity(10)
@Test(expected = IllegalArgumentException.class) public void testPickupFail3A() { // package not in available state (it is already been picked up) final Vehicle truck = new TestVehicle( VehicleDTO.builder().startPosition(new Point(1, 1)).build()); rm.register(truck); model.register(truck); final Parcel pack1 = Parcel.builder(new Point(0, 0), new Point(2, 2)) .pickupDuration(10) .deliveryDuration(10) .neededCapacity(2d) .build(); rm.register(pack1); model.register(pack1); rm.addObjectAtSamePosition(pack1, truck); assertTrue(rm.equalPosition(truck, pack1)); assertEquals(ParcelState.AVAILABLE, model.getParcelState(pack1)); assertEquals(VehicleState.IDLE, model.getVehicleState(truck)); model.pickup(truck, pack1, TimeLapseFactory.create(0, 100)); assertEquals(ParcelState.IN_CARGO, model.getParcelState(pack1)); assertEquals(VehicleState.IDLE, model.getVehicleState(truck)); // checks what happens when you add a package to the roadmodel which has // already been picked up rm.addObjectAt(pack1, new Point(1, 1)); model.pickup(truck, pack1, TimeLapseFactory.create(0, 100)); }
@Test public void testDelayedPickup() { final Parcel pack1 = Parcel.builder(new Point(1, 1), new Point(2, 2)) .serviceDuration(10L) .neededCapacity(2d) .build(); final Vehicle truck = new TestVehicle( VehicleDTO.builder() .startPosition(new Point(1, 1)) .capacity(10) .speed(1.0) .build()); model.register(pack1); model.register(truck); rm.register(pack1); rm.register(truck); model.pickup(truck, pack1, TimeLapseFactory.create(0, 1)); assertTrue(model.getContents(truck).isEmpty()); assertEquals(model.getContentsSize(truck), 0, EPSILON); truck.tick(TimeLapseFactory.create(1, 10)); assertFalse(model.getContents(truck).isEmpty()); assertTrue(model.getContents(truck).contains(pack1)); assertEquals(model.getContentsSize(truck), 2, EPSILON); }
@Test(expected = IllegalArgumentException.class) public void testDeliverFail4() { final Vehicle truck = new TestVehicle( VehicleDTO.builder().startPosition(new Point(1, 1)).build()); rm.register(truck); model.register(truck); final Parcel pack1 = Parcel.builder(new Point(1, 1), new Point(2, 2)) .pickupDuration(10) .deliveryDuration(10) .neededCapacity(2d) .build(); rm.register(pack1); model.register(pack1); rm.addObjectAtSamePosition(pack1, truck); model.pickup(truck, pack1, TimeLapseFactory.create(0, 10)); assertTrue(model.getContents(truck).contains(pack1)); model.deliver(truck, pack1, TimeLapseFactory.create(0, 1)); }
@Test(expected = IllegalArgumentException.class) public void testDeliverFail3() { final Vehicle truck = new TestVehicle( VehicleDTO.builder().startPosition(new Point(1, 1)).build()); rm.register(truck); model.register(truck); final Parcel pack1 = Parcel.builder(new Point(1, 1), new Point(2, 2)) .pickupDuration(10) .deliveryDuration(10) .neededCapacity(2d) .build(); rm.register(pack1); model.register(pack1); rm.addObjectAtSamePosition(pack1, truck); model.deliver(truck, pack1, TimeLapseFactory.create(0, 1)); }
@Test(expected = IllegalArgumentException.class) public void testPickupFail6A() { // package does not fit in truck final Vehicle truck = new TestVehicle( VehicleDTO.builder().startPosition(new Point(1, 1)).build()); rm.register(truck); model.register(truck); final Parcel pack1 = Parcel.builder(new Point(0, 0), new Point(2, 2)) .neededCapacity(2d) .build(); rm.register(pack1); model.register(pack1); rm.addObjectAtSamePosition(pack1, truck); assertTrue(rm.equalPosition(truck, pack1)); model.pickup(truck, pack1, TimeLapseFactory.create(0, 100)); }
@Test(expected = IllegalArgumentException.class) public void testPickupFail5() { // wrong position final Vehicle truck = new TestVehicle( VehicleDTO.builder().startPosition(new Point(1, 1)).build()); rm.register(truck); model.register(truck); final Parcel pack1 = Parcel.builder(new Point(0, 0), new Point(2, 2)) .neededCapacity(2d) .build(); rm.register(pack1); rm.addObjectAt(pack1, new Point(0, 0)); model.register(pack1); model.pickup(truck, pack1, TimeLapseFactory.create(0, 1)); }
@Test(expected = IllegalArgumentException.class) public void testDeliverFail2() { final Vehicle truck = new TestVehicle( VehicleDTO.builder().startPosition(new Point(1, 1)).build()); rm.register(truck); model.register(truck); final Parcel pack1 = Parcel.builder(new Point(1, 1), new Point(2, 2)) .pickupDuration(10) .deliveryDuration(10) .neededCapacity(2d) .build(); rm.register(pack1); model.register(pack1); rm.addObjectAtSamePosition(pack1, truck); model.pickup(truck, pack1, TimeLapseFactory.create(0, 1)); assertEquals(VehicleState.PICKING_UP, model.getVehicleState(truck)); model.deliver(truck, pack1, TimeLapseFactory.create(0, 1)); }
@Test(expected = IllegalArgumentException.class) public void testPickupFail4() { final Vehicle truck = new TestVehicle( VehicleDTO.builder().startPosition(new Point(1, 1)).build()); rm.register(truck); final Parcel pack1 = Parcel.builder(new Point(0, 0), new Point(2, 2)) .neededCapacity(2d) .build(); rm.register(pack1); rm.addObjectAtSamePosition(pack1, truck); model.register(pack1); model.pickup(truck, pack1, TimeLapseFactory.create(0, 1)); }
@Test(expected = IllegalArgumentException.class) public void testPickupFail3B() { // package is not registered final Vehicle truck = new TestVehicle( VehicleDTO.builder().startPosition(new Point(1, 1)).build()); rm.register(truck); final Parcel pack1 = Parcel.builder(new Point(0, 0), new Point(2, 2)) .neededCapacity(2d) .build(); rm.register(pack1); rm.addObjectAtSamePosition(pack1, truck); model.pickup(truck, pack1, TimeLapseFactory.create(0, 1)); }
@Test(expected = IllegalArgumentException.class) public void testPickupFail2() { // package not in roadmodel final Vehicle truck = new TestVehicle( VehicleDTO.builder().startPosition(new Point(1, 1)).build()); rm.register(truck); final Parcel pack1 = Parcel.builder(new Point(0, 0), new Point(2, 2)) .neededCapacity(2d) .build(); model.pickup(truck, pack1, TimeLapseFactory.create(0, 1)); }
@Test(expected = IllegalArgumentException.class) public void testPickupFail1() { // truck not in roadmodel final Vehicle truck = new TestVehicle( VehicleDTO.builder().build()); model.pickup(truck, null, TimeLapseFactory.create(0, 1)); }
@Test(expected = IllegalArgumentException.class) public void testDeliverFail1() { // truck does not exist in roadmodel model.deliver(new TestVehicle(), null, TimeLapseFactory.create(0, 1)); }
/** * Cannot register the same vehicle twice. */ @Test(expected = IllegalArgumentException.class) public void registerFail3() { final TestVehicle v = new TestVehicle(); model.register(v); model.register(v); }