@Override public ImmutableList<AddParcelEvent> generate(long seed, TravelTimes travelModel, long endTime) { rng.setSeed(seed); final ImmutableList.Builder<AddParcelEvent> eventList = ImmutableList .builder(); final List<Double> times = announceTimeGenerator.generate(rng.nextLong()); final Iterator<Point> locs = locationGenerator.generate(rng.nextLong(), times.size() * 2).iterator(); for (final double time : times) { final long arrivalTime = DoubleMath.roundToLong(time, RoundingMode.FLOOR); final Point origin = locs.next(); final Point destination = locs.next(); checkEndTime(time, endTime); final Parcel.Builder parcelBuilder = Parcel .builder(origin, destination) .orderAnnounceTime(arrivalTime) .pickupDuration(pickupDurationGenerator.get(rng.nextLong())) .deliveryDuration(deliveryDurationGenerator.get(rng.nextLong())) .neededCapacity(neededCapacityGenerator.get(rng.nextLong())); timeWindowGenerator.generate(rng.nextLong(), parcelBuilder, travelModel, endTime); eventList.add(AddParcelEvent.create(parcelBuilder.buildDTO())); } return eventList.build(); }
/** * An error should be thrown when a wrong number of locations is requested. */ @Test(expected = IllegalArgumentException.class) public void testFixedFail() { Locations.builder().buildFixed(asList(new Point(0, 0), new Point(1, 1))) .generate(0L, 3); }