@Override public List<Optional> doShrink( SourceOfRandomness random, Optional larger) { if (!larger.isPresent()) return new ArrayList<>(); List<Optional> shrinks = new ArrayList<>(); shrinks.add(Optional.absent()); shrinks.addAll( componentGenerators().get(0) .shrink(random, larger.get()) .stream() .map(Optional::fromNullable) .collect(toList())); return shrinks; }
@Override public List<Optional> doShrink( SourceOfRandomness random, Optional larger) { if (!larger.isPresent()) return new ArrayList<>(); List<Optional> shrinks = new ArrayList<>(); shrinks.add(Optional.empty()); shrinks.addAll( componentGenerators().get(0) .shrink(random, larger.get()) .stream() .map(Optional::of) .collect(toList())); return shrinks; }
@Override public List<Object> doShrink(SourceOfRandomness random, Object larger) { List<Weighted<Generator<?>>> shrinkers = composed.stream() .filter(w -> w.item.canShrink(larger)) .collect(toList()); Generator<?> choice = Items.chooseWeighted(shrinkers, random); return new ArrayList<>(choice.shrink(random, larger)); }
public List<Object> shrink(Object larger) { return generator.canShrink(larger) ? new ArrayList<>(generator.shrink(random(), larger)) : emptyList(); }
@Override public List<Either> doShrink( SourceOfRandomness random, Either larger) { @SuppressWarnings("unchecked") Either<Object, Object> either = (Either<Object, Object>) larger; return either.map( left -> componentGenerators().get(0).shrink(random, left) .stream() .map(Either::makeLeft) .collect(toList()), right -> componentGenerators().get(1).shrink(random, right) .stream() .map(Either::makeRight) .collect(toList())); }
@Test public void nonShrinkingGeneratorAttemptingToShrink() { thrown.expect(IllegalStateException.class); nonShrinkingGenerator.shrink(null, new Object()); } }
@Override public List<Polygon> doShrink( SourceOfRandomness r, Polygon larger) { Generator<Point> pointGen = gen().type(Point.class); return singletonList( new Polygon( larger.points.stream() .map(p -> pointGen.shrink(r, p).get(0)) .collect(toList()))); } }
@Test public void actOfShrinking() { assertEquals(emptyList(), generator.shrink(null, new Object())); }
@Override public List<Optional> doShrink( SourceOfRandomness random, Optional larger) { if (!larger.isPresent()) return new ArrayList<>(); List<Optional> shrinks = new ArrayList<>(); shrinks.add(Optional.absent()); shrinks.addAll( componentGenerators().get(0) .shrink(random, larger.get()) .stream() .map(Optional::fromNullable) .collect(toList())); return shrinks; }
@Override public List<Optional> doShrink( SourceOfRandomness random, Optional larger) { if (!larger.isPresent()) return new ArrayList<>(); List<Optional> shrinks = new ArrayList<>(); shrinks.add(Optional.empty()); shrinks.addAll( componentGenerators().get(0) .shrink(random, larger.get()) .stream() .map(Optional::of) .collect(toList())); return shrinks; }
@Override public List<Object> doShrink(SourceOfRandomness random, Object larger) { List<Weighted<Generator<?>>> shrinkers = composed.stream() .filter(w -> w.item.canShrink(larger)) .collect(toList()); Generator<?> choice = Items.chooseWeighted(shrinkers, random); return new ArrayList<>(choice.shrink(random, larger)); }
public List<Object> shrink(Object larger) { return generator.canShrink(larger) ? new ArrayList<>(generator.shrink(random(), larger)) : emptyList(); }