PDPModel extends AbstractModel<PDPObject> implements TickListener { public abstract void addParcelIn(Container container, Parcel parcel);  @Override final boolean register(PDPObject object); abstract ImmutableSet<Parcel> getContents(Container container); abstract double getContentsSize(Container container); abstract double getContainerCapacity(Container container); abstract void pickup(Vehicle vehicle, Parcel parcel, TimeLapse time); abstract void drop(Vehicle vehicle, Parcel parcel, TimeLapse time); abstract void deliver(Vehicle vehicle, Parcel parcel, TimeLapse time); abstract void addParcelIn(Container container, Parcel parcel); abstract Collection<Parcel> getParcels(ParcelState state); abstract Collection<Parcel> getParcels(ParcelState... states); abstract Set<Vehicle> getVehicles(); abstract ParcelState getParcelState(Parcel parcel); abstract VehicleState getVehicleState(Vehicle vehicle); abstract PDPModel.VehicleParcelActionInfo getVehicleActionInfo(
      Vehicle vehicle); abstract EventAPI getEventAPI(); abstract boolean containerContains(Container container, Parcel parcel); abstract TimeWindowPolicy getTimeWindowPolicy(); abstract void service(Vehicle vehicle, Parcel parcel, TimeLapse time);  }
@Test(expected = IllegalArgumentException.class) public void addPackageInFail1() { final Depot d = new TestDepot(10); final Parcel p1 = Parcel.builder(new Point(0, 0), new Point(0, 0)) .neededCapacity(1d) .build(); rm.addObjectAt(p1, new Point(0, 0)); model.addParcelIn(d, p1); }
@Test(expected = IllegalArgumentException.class) public void addPackageInFail2() { final Depot d = new TestDepot(10); final Parcel p1 = Parcel.builder(new Point(0, 0), new Point(0, 0)) .neededCapacity(1d) .build(); model.addParcelIn(d, p1); }