@Override public boolean canShrink(Object larger) { return delegate.canShrink(larger); }
@Override public boolean canShrink(Object larger) { return composed.stream() .map(w -> w.item) .anyMatch(g -> g.canShrink(larger)); }
public BigDecimal magnitude(Object value) { return generator.canShrink(value) ? generator.magnitude(value).abs() : ZERO; }
@Override public BigDecimal magnitude(Object value) { List<Weighted<Generator<?>>> shrinkers = composed.stream() .filter(w -> w.item.canShrink(value)) .collect(toList()); return shrinkers.get(0).item.magnitude(value); }
@Override public boolean canShrink(Object larger) { return super.canShrink(larger) && codePointsInRange((String) larger); }
@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(); }
/** * {@inheritDoc} * * <p>Generators first ensure that they {@linkplain #canShrink(Object) can * participate} in shrinking the given value, and if so, they * {@linkplain #doShrink(SourceOfRandomness, Object) produce shrinks}.</p> */ @Override public final List<T> shrink(SourceOfRandomness random, Object larger) { if (!canShrink(larger)) { throw new IllegalStateException( getClass() + " not capable of shrinking " + larger); } return doShrink(random, narrow(larger)); }
@Test public void abilityToShrink() { assertTrue(generator.canShrink(new Object())); }
@Test public void shrinkingChoosesAComponentCapableOfShrinkingTheValue() { stub(first.canShrink(7)).toReturn(true); stub(second.canShrink(7)).toReturn(false); stub(third.canShrink(7)).toReturn(true); when(first.types()).thenReturn(singletonList(Integer.class)); when(first.doShrink(random, 7)).thenReturn(asList(3, 6)); when(random.nextInt(9)).thenReturn(1); assertEquals(asList(3, 6), composite.shrink(random, 7)); verify(first, atLeastOnce()).doShrink(random, 7); } }
@Override public boolean canShrink(Object larger) { return composed.stream() .map(w -> w.item) .anyMatch(g -> g.canShrink(larger)); }
@Override public BigDecimal magnitude(Object value) { List<Weighted<Generator<?>>> shrinkers = composed.stream() .filter(w -> w.item.canShrink(value)) .collect(toList()); return shrinkers.get(0).item.magnitude(value); }
public BigDecimal magnitude(Object value) { return generator.canShrink(value) ? generator.magnitude(value).abs() : ZERO; }
@Override public boolean canShrink(Object larger) { return super.canShrink(larger) && codePointsInRange((String) larger); }
@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(); }
/** * {@inheritDoc} * * <p>Generators first ensure that they {@linkplain #canShrink(Object) can * participate} in shrinking the given value, and if so, they * {@linkplain #doShrink(SourceOfRandomness, Object) produce shrinks}.</p> */ @Override public final List<T> shrink(SourceOfRandomness random, Object larger) { if (!canShrink(larger)) { throw new IllegalStateException( getClass() + " not capable of shrinking " + larger); } return doShrink(random, narrow(larger)); }