@Override public RandomModel build(DependencyProvider modelProvider) { return new RandomModel(rngSupplier().get(seed())); }
/** * Get access to the main random generator used in the simulator. * @return the random generator of the simulator */ @Override public RandomGenerator getRandomGenerator() { return rand.get(RandomProvider.class).masterInstance(); }
/** * Test new instance. */ @Test public void testNewInstance() { model.register(new RandomUser() { @Override public void setRandomGenerator(RandomProvider provider) { assertNotSame(model.masterRandomGenerator, provider.newInstance()); } }); }
/** * Create model. */ @Before public void setUp() { model = RandomModel.builder().build(mock(DependencyProvider.class)); }
/** * Should always work. */ @Test public void testUnregister() { assertTrue(model.unregister(new RandomUser() { @Override public void setRandomGenerator(RandomProvider provider) {} })); }
static DependencyProvider fakeDependencies() { return FakeDependencyProvider.builder() .add(RandomModel.builder()) .build(); }
Simulator(Builder b) { modelManager = b.mmBuilder .add(SimulatorModelBuilder.create(this)) .addDefaultProvider( RandomModel.builder().withRandomGenerator( StochasticSuppliers.constant(b.rng))) .addDefaultProvider( TimeModel.builder() .withTickLength(b.tickLength) .withTimeUnit(b.timeUnit)) .build(); toUnregister = new LinkedHashSet<>(); clock = modelManager.getModel(TimeModel.class); rand = modelManager.getModel(RandomModel.class); }
/** * Not requesting an instance should be fine. */ @Test public void testNotUsing() { model.register(new RandomUser() { @Override public void setRandomGenerator(RandomProvider provider) {} }); }
/** * Test of master. */ @Test public void testMaster() { model.register(new RandomUser() { @Override public void setRandomGenerator(RandomProvider provider) { final RandomGenerator rng = provider.masterInstance(); assertSame(model.masterRandomGenerator, rng); testUnmodifiable(rng); } }); }
model.register(new RandomUser() { @Override public void setRandomGenerator(RandomProvider provider) {
public void testSharedInstance() { final List<RandomGenerator> rngs = new ArrayList<>(); model.register(new RandomUser() { @Override public void setRandomGenerator(RandomProvider provider) { model.register(new RandomUser() { @Override public void setRandomGenerator(RandomProvider provider) { model.register(new RandomUser() { @Override public void setRandomGenerator(RandomProvider provider) {
/** * Test that requesting something from the {@link RandomProvider} after the * {@link RandomUser#setRandomGenerator(RandomProvider)} is complete results * in an {@link IllegalStateException}. */ @Test public void testTooLateUsage() { final List<RandomProvider> rp = new ArrayList<>(); model.register(new RandomUser() { @Override public void setRandomGenerator(RandomProvider provider) { rp.add(provider); } }); boolean fail = false; try { rp.get(0).masterInstance(); } catch (final IllegalStateException e) { fail = true; } assertTrue(fail); }