private Spliterator<EvolutionResult<G, C>> generate( final EvolutionInit<G> init, final EvolutionResult<G, C> result ) { return result == null ? _engine.apply(null) .stream(init) .spliterator() : _engine.apply(result) .stream(result.toEvolutionStart()) .spliterator(); }
private Spliterator<EvolutionResult<G, C>> generate( final Supplier<EvolutionStart<G, C>> start, final EvolutionResult<G, C> result ) { final EvolutionStart<G, C> es = result == null ? start.get() : result.toEvolutionStart(); return _engine.apply(result) .stream(es) .spliterator(); }
@Test public void spliterator() { final Engine<DoubleGene, Double> engine = Engine .builder( gt -> gt.getGene().getAllele(), DoubleChromosome.of(0, 1)) .build(); final EvolutionStream<DoubleGene, Double> stream = engine.stream() .limit(Limits.byFixedGeneration(10)); final Spliterator<EvolutionResult<DoubleGene, Double>> spliterator = stream.spliterator(); final long count = StreamSupport.stream(spliterator, false) .count(); Assert.assertEquals(count, 10); }