/** * @return A new {@link Builder} instance with {@link #DEFAULT_PROBLEM_CLASS}. */ public static Builder builder() { return builder(DEFAULT_PROBLEM_CLASS); }
/** * @return A new {@link Builder} instance with {@link #DEFAULT_PROBLEM_CLASS}. */ public static Builder builder() { return builder(DEFAULT_PROBLEM_CLASS); }
/** * Copying builder. Creates a new builder that builds instances with the same * properties as the specified scenario. * @param scenario The scenario from which properties will be copied. * @return A new {@link Builder} instance. */ public static Builder builder(Scenario scenario) { return builder(scenario.getProblemClass()).copyProperties(scenario); }
/** * Copying builder. Creates a new builder that builds instances with the same * properties as the specified scenario. * @param scenario The scenario from which properties will be copied. * @return A new {@link Builder} instance. */ public static Builder builder(Scenario scenario) { return builder(scenario.getProblemClass()).copyProperties(scenario); }
@Nonnull @Override public Scenario apply(@Nullable Scenario input) { final Scenario in = verifyNotNull(input); return Scenario.builder(in) .clearEvents() .addEvents( FluentIterable.from(in.getEvents()).transform(converter)) .build(); } };
@Nonnull @Override public Scenario apply(@Nullable Scenario input) { final Scenario in = verifyNotNull(input); return Scenario.builder(in) .clearEvents() .addEvents( FluentIterable.from(in.getEvents()).transform(converter)) .build(); } };
@Override @Nullable public Scenario apply(@Nullable Scenario input) { return Scenario.builder(verifyNotNull(input)) .removeModelsOfType(TimeModel.AbstractBuilder.class) .addModel(timeModel) .build(); } };
@Override @Nullable public Scenario apply(@Nullable Scenario input) { return Scenario.builder(verifyNotNull(input)) .removeModelsOfType(TimeModel.AbstractBuilder.class) .addModel(timeModel) .build(); } };
@Nullable @Override public Scenario apply(@Nullable Scenario input) { final Scenario in = verifyNotNull(input); final Optional<TimeModel.AbstractBuilder<?>> timeModel = getTimeModel(in); final TimeModel.Builder rtb = TimeModel.builder(); if (timeModel.isPresent()) { rtb.withTickLength(timeModel.get().getTickLength()) .withTimeUnit(timeModel.get().getTimeUnit()); } return Scenario.builder(in) .removeModelsOfType(TimeModel.AbstractBuilder.class) .addModel(rtb) .build(); }
/** * Empty events list is not allowed. */ @Test(expected = IllegalStateException.class) public void testEnsureFrequencyFailEmptyEventsList() { Scenario.builder(Scenario.DEFAULT_PROBLEM_CLASS) .ensureFrequency(Predicates.<TimedEvent>alwaysTrue(), 1); }
/** * Negative frequency is not allowed. */ @Test(expected = IllegalArgumentException.class) public void testEnsureFrequencyFailFrequency() { Scenario.builder(Scenario.DEFAULT_PROBLEM_CLASS) .ensureFrequency(Predicates.<TimedEvent>alwaysTrue(), -1); }
/** * Filter must match at least one event. */ @Test(expected = IllegalArgumentException.class) public void testEnsureFrequencyFailFilter1() { Scenario.builder(Scenario.DEFAULT_PROBLEM_CLASS) .addEvent(EventA.create(0)) .ensureFrequency(Predicates.<TimedEvent>alwaysFalse(), 1); }
/** * Tests that when no time model is available, a default is added. */ @Test public void testEmpty() { final Scenario empty = Scenario.builder().build(); assertThat(empty.getModelBuilders()).isEmpty(); final Scenario convertedEmpty = verifyNotNull(ScenarioConverters.toRealtime().apply(empty)); assertThat(convertedEmpty.getModelBuilders()) .contains(TimeModel.builder() .withRealTime() .withStartInClockMode(ClockMode.SIMULATED)); }
@Test public void testPDPRoadModel() { final Scenario.Builder sb = Scenario .builder(Scenario.DEFAULT_PROBLEM_CLASS); sb.addModel(PDPRoadModel.builder(RoadModelBuilders.plane())); ScenarioTestUtil.assertScenarioIO(sb.build()); }
/** * Test copying by builder. */ @Test public void testCreateScenarioByCopying() { final Scenario s = Scenario.builder() .addEvent(AddObjectEvent.create(100, new Point(0, 0))) .addEvent(AddObjectEvent.create(200, new Point(0, 0))) .addEvent(AddObjectEvent.create(300, new Point(0, 0))) .build(); assertEquals(3, s.getEvents().size()); final Scenario s2 = Scenario.builder(s).build(); assertEquals(3, s.getEvents().size()); assertEquals(3, s2.getEvents().size()); }
/** * Filter matches must be equal. */ @Test(expected = IllegalArgumentException.class) public void testEnsureFrequencyFailFilter2() { Scenario .builder(Scenario.DEFAULT_PROBLEM_CLASS) .addEvent(EventA.create(0)) .addEvent(EventA.create(1)) .ensureFrequency(Predicates.instanceOf(EventA.class), 1); }
@Test public void testPDPGraphRoadModel() { final Scenario.Builder sb = Scenario .builder(Scenario.DEFAULT_PROBLEM_CLASS); sb.addModel(PDPGraphRoadModel.builderForGraphRm( RoadModelBuilders.staticGraph( DotGraphIO.getLengthDataGraphSupplier("fake.path")))); ScenarioTestUtil.assertScenarioIO(sb.build()); }
@Test public void testPDPDynamicGraphRoadModel() { final Scenario.Builder sb = Scenario .builder(Scenario.DEFAULT_PROBLEM_CLASS); sb.addModel( PDPDynamicGraphRoadModel.builderForDynamicGraphRm( RoadModelBuilders.dynamicGraph( ListenableGraph.supplier( DotGraphIO.getLengthDataGraphSupplier("fake.path"))))); ScenarioTestUtil.assertScenarioIO(sb.build()); }
@Test public void testPDPCollisionGraphRoadModel() { final Scenario.Builder sb = Scenario .builder(Scenario.DEFAULT_PROBLEM_CLASS); sb.addModel( PDPCollisionGraphRoadModel.builderForCollisionGraphRm( RoadModelBuilders.dynamicGraph( ListenableGraph.supplier( DotGraphIO.getLengthDataGraphSupplier("fake.path"))) .withCollisionAvoidance())); ScenarioTestUtil.assertScenarioIO(sb.build()); }
/** * Tests that the {@link PDPRoadModel} supports serialization and * deserialization. */ @Test public void testIO() { final Scenario.Builder sb = Scenario .builder(Scenario.DEFAULT_PROBLEM_CLASS) .addModel(PDPRoadModel.builder( RoadModelBuilders.plane() .withSpeedUnit(NonSI.MILES_PER_HOUR) .withMaxSpeed(7)) .withAllowVehicleDiversion(true)); final Scenario s = sb.problemClass(TestProblemClass.TEST).build(); ScenarioTestUtil.assertScenarioIO(s); }