@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(); }
/** * Tests whether the fixed location generator handles the inputs correctly. */ @Test public void testFixed() { final LocationGenerator lg = Locations.builder().buildFixed( asList(new Point(0, 0), new Point(1, 1))); assertAlwaysEquals(lg); assertEquals(new Point(.5, .5), lg.getCenter()); assertEquals(new Point(0, 0), lg.getMin()); assertEquals(new Point(1, 1), lg.getMax()); final LocationGenerator lg2 = Locations.builder() .min(-6.3) .max(9.3) .mean(0.1) .buildFixed( asList(new Point(0, 0), new Point(1, 1))); assertAlwaysEquals(lg2); assertEquals(new Point(.1, .1), lg2.getCenter()); assertEquals(new Point(-6.3, -6.3), lg2.getMin()); assertEquals(new Point(9.3, 9.3), lg2.getMax()); TestUtil.testPrivateConstructor(Locations.class); }
@Override public Point getCenter() { return locationGenerator.getCenter(); }
@Override public Point getMin() { return locationGenerator.getMin(); }
@Override public Point getCenter() { return locationGenerator.getCenter(); }
@Override public Point getMax() { return locationGenerator.getMax(); } }
/** * 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); }
@Override public Point getMin() { return locationGenerator.getMin(); }
@Override public Point getMax() { return locationGenerator.getMax(); } }