Copyright 2008 - 2010 Tony Morris, Runar Bjarnason, Tom Adams, Brad Clow, Ricky Clarkson, Nick Partridge, Jason Zaugg

This software is released under an open source BSD licence.

fj.test
Class Shrink<A>

java.lang.Object
  extended by fj.test.Shrink<A>

public final class Shrink<A>
extends Object

Represents a shrinking strategy over the given type parameter if that type can be represented as a tree structure. This is used in falsification to produce the smallest counter-example, rather than the first counter-example.


Field Summary
static Shrink<BigDecimal> shrinkBigDecimal
          A shrink strategy for big decimals.
static Shrink<BigInteger> shrinkBigInteger
          A shrink strategy for big integers.
static Shrink<BitSet> shrinkBitSet
          A shrink strategy for bit sets.
static Shrink<Boolean> shrinkBoolean
          A shrink strategy for booleans using false as the bottom of the shrink.
static Shrink<Byte> shrinkByte
          A shrink strategy for bytes using 0 as the bottom of the shrink.
static Shrink<Calendar> shrinkCalendar
          A shrink strategy for calendars.
static Shrink<Character> shrinkCharacter
          A shrink strategy for characters using 0 as the bottom of the shrink.
static Shrink<Date> shrinkDate
          A shrink strategy for dates.
static Shrink<Double> shrinkDouble
          A shrink strategy for doubles using 0 as the bottom of the shrink.
static Shrink<Float> shrinkFloat
          A shrink strategy for floats using 0 as the bottom of the shrink.
static Shrink<GregorianCalendar> shrinkGregorianCalendar
          A shrink strategy for gregorian calendars.
static Shrink<Integer> shrinkInteger
          A shrink strategy for integers using 0 as the bottom of the shrink.
static Shrink<Long> shrinkLong
          A shrink strategy for longs using 0 as the bottom of the shrink.
static Shrink<Properties> shrinkProperties
          A shrink strategy for properties.
static Shrink<Short> shrinkShort
          A shrink strategy for shorts using 0 as the bottom of the shrink.
static Shrink<Date> shrinkSQLDate
          A shrink strategy for SQL dates.
static Shrink<String> shrinkString
          A shrink strategy for strings using the empty string as the bottom of the shrink.
static Shrink<StringBuffer> shrinkStringBuffer
          A shrink strategy for string buffers using the empty string as the bottom of the shrink.
static Shrink<StringBuilder> shrinkStringBuilder
          A shrink strategy for string builders using the empty string as the bottom of the shrink.
static Shrink<Throwable> shrinkThrowable
          A shrink strategy for throwables.
static Shrink<Time> shrinkTime
          A shrink strategy for SQL times.
static Shrink<Timestamp> shrinkTimestamp
          A shrink strategy for SQL timestamps.
 
Method Summary
static
<A> Shrink<A>
empty()
          Returns a shrink strategy that cannot be reduced further.
<B> Shrink<B>
map(F<A,B> f, F<B,A> g)
          Creates a shrink from this shrink and the given symmetric transformations.
 Stream<A> shrink(A a)
          Returns a shrink of the given argument.
static
<A> Shrink<A>
shrink(F<A,Stream<A>> f)
          Constructs a shrink strategy from the given function that produces a tree of values given a value.
static
<A> Shrink<Array<A>>
shrinkArray(Shrink<A> sa)
          Returns a shrink strategy for arrays.
static
<A> Shrink<ArrayBlockingQueue<A>>
shrinkArrayBlockingQueue(Shrink<A> sa)
          A shrink strategy for array blocking queues.
static
<A> Shrink<ArrayList<A>>
shrinkArrayList(Shrink<A> sa)
          Returns a shrink strategy for array lists.
static
<K,V> Shrink<ConcurrentHashMap<K,V>>
shrinkConcurrentHashMap(Shrink<K> sk, Shrink<V> sv)
          A shrink strategy for concurrent hash maps.
static
<A> Shrink<ConcurrentLinkedQueue<A>>
shrinkConcurrentLinkedQueue(Shrink<A> sa)
          A shrink strategy for concurrent linked queues.
static
<A> Shrink<CopyOnWriteArrayList<A>>
shrinkCopyOnWriteArrayList(Shrink<A> sa)
          A shrink strategy for copy on write array lists.
static
<A> Shrink<CopyOnWriteArraySet<A>>
shrinkCopyOnWriteArraySet(Shrink<A> sa)
          A shrink strategy for copy on write array sets.
static
<A extends Delayed>
Shrink<DelayQueue<A>>
shrinkDelayQueue(Shrink<A> sa)
          A shrink strategy for delay queues.
static
<A,B> Shrink<Either<A,B>>
shrinkEither(Shrink<A> sa, Shrink<B> sb)
          Returns a shrink strategy for either values.
static
<K extends Enum<K>,V>
Shrink<EnumMap<K,V>>
shrinkEnumMap(Shrink<K> sk, Shrink<V> sv)
          A shrink strategy for enum maps.
static
<A extends Enum<A>>
Shrink<EnumSet<A>>
shrinkEnumSet(Shrink<A> sa)
          A shrink strategy for enum sets.
static
<K,V> Shrink<HashMap<K,V>>
shrinkHashMap(Shrink<K> sk, Shrink<V> sv)
          A shrink strategy for hash maps.
static
<A> Shrink<HashSet<A>>
shrinkHashSet(Shrink<A> sa)
          A shrink strategy for hash sets.
static
<K,V> Shrink<Hashtable<K,V>>
shrinkHashtable(Shrink<K> sk, Shrink<V> sv)
          A shrink strategy for hash tables.
static
<K,V> Shrink<IdentityHashMap<K,V>>
shrinkIdentityHashMap(Shrink<K> sk, Shrink<V> sv)
          A shrink strategy for identity hash maps.
static
<A> Shrink<LinkedBlockingQueue<A>>
shrinkLinkedBlockingQueue(Shrink<A> sa)
          A shrink strategy for linked blocking queues.
static
<K,V> Shrink<LinkedHashMap<K,V>>
shrinkLinkedHashMap(Shrink<K> sk, Shrink<V> sv)
          A shrink strategy for linked hash maps.
static
<A> Shrink<LinkedHashSet<A>>
shrinkLinkedHashSet(Shrink<A> sa)
          A shrink strategy for linked hash sets.
static
<A> Shrink<LinkedList<A>>
shrinkLinkedList(Shrink<A> sa)
          A shrink strategy for linked lists.
static
<A> Shrink<List<A>>
shrinkList(Shrink<A> sa)
          Returns a shrink strategy for lists.
static
<A> Shrink<Option<A>>
shrinkOption(Shrink<A> sa)
          Returns a shrink strategy for optional values.
static
<A> Shrink<P1<A>>
shrinkP1(Shrink<A> sa)
          Returns a shrinking strategy for product-1 values.
static
<A,B> Shrink<P2<A,B>>
shrinkP2(Shrink<A> sa, Shrink<B> sb)
          Returns a shrinking strategy for product-2 values.
static
<A,B,C> Shrink<P3<A,B,C>>
shrinkP3(Shrink<A> sa, Shrink<B> sb, Shrink<C> sc)
          Returns a shrinking strategy for product-3 values.
static
<A,B,C,D> Shrink<P4<A,B,C,D>>
shrinkP4(Shrink<A> sa, Shrink<B> sb, Shrink<C> sc, Shrink<D> sd)
          Returns a shrinking strategy for product-4 values.
static
<A,B,C,D,E>
Shrink<P5<A,B,C,D,E>>
shrinkP5(Shrink<A> sa, Shrink<B> sb, Shrink<C> sc, Shrink<D> sd, Shrink<E> se)
          Returns a shrinking strategy for product-5 values.
static
<A,B,C,D,E,F$>
Shrink<P6<A,B,C,D,E,F$>>
shrinkP6(Shrink<A> sa, Shrink<B> sb, Shrink<C> sc, Shrink<D> sd, Shrink<E> se, Shrink<F$> sf)
          Returns a shrinking strategy for product-6 values.
static
<A,B,C,D,E,F$,G>
Shrink<P7<A,B,C,D,E,F$,G>>
shrinkP7(Shrink<A> sa, Shrink<B> sb, Shrink<C> sc, Shrink<D> sd, Shrink<E> se, Shrink<F$> sf, Shrink<G> sg)
          Returns a shrinking strategy for product-7 values.
static
<A,B,C,D,E,F$,G,H>
Shrink<P8<A,B,C,D,E,F$,G,H>>
shrinkP8(Shrink<A> sa, Shrink<B> sb, Shrink<C> sc, Shrink<D> sd, Shrink<E> se, Shrink<F$> sf, Shrink<G> sg, Shrink<H> sh)
          Returns a shrinking strategy for product-8 values.
static
<A> Shrink<PriorityBlockingQueue<A>>
shrinkPriorityBlockingQueue(Shrink<A> sa)
          A shrink strategy for priority blocking queues.
static
<A> Shrink<PriorityQueue<A>>
shrinkPriorityQueue(Shrink<A> sa)
          A shrink strategy for priority queues.
static
<A> Shrink<Stack<A>>
shrinkStack(Shrink<A> sa)
          A shrink strategy for stacks.
static
<A> Shrink<Stream<A>>
shrinkStream(Shrink<A> sa)
          Returns a shrink strategy for streams.
static
<A> Shrink<SynchronousQueue<A>>
shrinkSynchronousQueue(Shrink<A> sa)
          A shrink strategy for synchronous queues.
static Shrink<Throwable> shrinkThrowable(Shrink<String> ss)
          A shrink strategy for throwables.
static
<K,V> Shrink<TreeMap<K,V>>
shrinkTreeMap(Shrink<K> sk, Shrink<V> sv)
          A shrink strategy for tree maps.
static
<A> Shrink<TreeSet<A>>
shrinkTreeSet(Shrink<A> sa)
          A shrink strategy for tree sets.
static
<A> Shrink<Vector<A>>
shrinkVector(Shrink<A> sa)
          A shrink strategy for vectors.
static
<K,V> Shrink<WeakHashMap<K,V>>
shrinkWeakHashMap(Shrink<K> sk, Shrink<V> sv)
          A shrink strategy for weak hash maps.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

shrinkLong

public static final Shrink<Long> shrinkLong
A shrink strategy for longs using 0 as the bottom of the shrink.


shrinkBoolean

public static final Shrink<Boolean> shrinkBoolean
A shrink strategy for booleans using false as the bottom of the shrink.


shrinkInteger

public static final Shrink<Integer> shrinkInteger
A shrink strategy for integers using 0 as the bottom of the shrink.


shrinkByte

public static final Shrink<Byte> shrinkByte
A shrink strategy for bytes using 0 as the bottom of the shrink.


shrinkCharacter

public static final Shrink<Character> shrinkCharacter
A shrink strategy for characters using 0 as the bottom of the shrink.


shrinkShort

public static final Shrink<Short> shrinkShort
A shrink strategy for shorts using 0 as the bottom of the shrink.


shrinkFloat

public static final Shrink<Float> shrinkFloat
A shrink strategy for floats using 0 as the bottom of the shrink.


shrinkDouble

public static final Shrink<Double> shrinkDouble
A shrink strategy for doubles using 0 as the bottom of the shrink.


shrinkString

public static final Shrink<String> shrinkString
A shrink strategy for strings using the empty string as the bottom of the shrink.


shrinkStringBuffer

public static final Shrink<StringBuffer> shrinkStringBuffer
A shrink strategy for string buffers using the empty string as the bottom of the shrink.


shrinkStringBuilder

public static final Shrink<StringBuilder> shrinkStringBuilder
A shrink strategy for string builders using the empty string as the bottom of the shrink.


shrinkThrowable

public static final Shrink<Throwable> shrinkThrowable
A shrink strategy for throwables.


shrinkBitSet

public static final Shrink<BitSet> shrinkBitSet
A shrink strategy for bit sets.


shrinkCalendar

public static final Shrink<Calendar> shrinkCalendar
A shrink strategy for calendars.


shrinkDate

public static final Shrink<Date> shrinkDate
A shrink strategy for dates.


shrinkGregorianCalendar

public static final Shrink<GregorianCalendar> shrinkGregorianCalendar
A shrink strategy for gregorian calendars.


shrinkProperties

public static final Shrink<Properties> shrinkProperties
A shrink strategy for properties.


shrinkSQLDate

public static final Shrink<Date> shrinkSQLDate
A shrink strategy for SQL dates.


shrinkTime

public static final Shrink<Time> shrinkTime
A shrink strategy for SQL times.


shrinkTimestamp

public static final Shrink<Timestamp> shrinkTimestamp
A shrink strategy for SQL timestamps.


shrinkBigInteger

public static final Shrink<BigInteger> shrinkBigInteger
A shrink strategy for big integers.


shrinkBigDecimal

public static final Shrink<BigDecimal> shrinkBigDecimal
A shrink strategy for big decimals.

Method Detail

shrink

public Stream<A> shrink(A a)
Returns a shrink of the given argument.

Parameters:
a - The argument to shrink.
Returns:
A shrink of the given argument.

map

public <B> Shrink<B> map(F<A,B> f,
                         F<B,A> g)
Creates a shrink from this shrink and the given symmetric transformations.

Parameters:
f - A transformation from this shrink type to the new shrink type.
g - A transformation from the new shrink type to this shrink type.
Returns:
A shrink from this shrink and the given symmetric transformations.

shrink

public static <A> Shrink<A> shrink(F<A,Stream<A>> f)
Constructs a shrink strategy from the given function that produces a tree of values given a value.

Parameters:
f - A function that produces a tree of values given a value.
Returns:
A shrink strategy from the given function that produces a tree of values given a value.

empty

public static <A> Shrink<A> empty()
Returns a shrink strategy that cannot be reduced further.

Returns:
A shrink strategy that cannot be reduced further.

shrinkOption

public static <A> Shrink<Option<A>> shrinkOption(Shrink<A> sa)
Returns a shrink strategy for optional values. A 'no value' is already fully shrunk, otherwise, the shrinking occurs on the value with the given shrink strategy.

Parameters:
sa - The shrink strategy for the potential value.
Returns:
A shrink strategy for optional values.

shrinkEither

public static <A,B> Shrink<Either<A,B>> shrinkEither(Shrink<A> sa,
                                                     Shrink<B> sb)
Returns a shrink strategy for either values.

Parameters:
sa - The shrinking strategy for left values.
sb - The shrinking strategy for right values.
Returns:
A shrink strategy for either values.

shrinkList

public static <A> Shrink<List<A>> shrinkList(Shrink<A> sa)
Returns a shrink strategy for lists. An empty list is fully shrunk.

Parameters:
sa - The shrink strategy for the elements of the list.
Returns:
A shrink strategy for lists.

shrinkArray

public static <A> Shrink<Array<A>> shrinkArray(Shrink<A> sa)
Returns a shrink strategy for arrays. An empty array is fully shrunk.

Parameters:
sa - The shrink strategy for the elements of the array.
Returns:
A shrink strategy for arrays.

shrinkStream

public static <A> Shrink<Stream<A>> shrinkStream(Shrink<A> sa)
Returns a shrink strategy for streams. An empty stream is fully shrunk.

Parameters:
sa - The shrink strategy for the elements of the stream.
Returns:
A shrink strategy for streams.

shrinkThrowable

public static Shrink<Throwable> shrinkThrowable(Shrink<String> ss)
A shrink strategy for throwables.

Parameters:
ss - A shrink strategy for throwable messages.
Returns:
A shrink strategy for throwables.

shrinkArrayList

public static <A> Shrink<ArrayList<A>> shrinkArrayList(Shrink<A> sa)
Returns a shrink strategy for array lists. An empty array list is fully shrunk.

Parameters:
sa - The shrink strategy for the elements of the array list.
Returns:
A shrink strategy for array lists.

shrinkEnumMap

public static <K extends Enum<K>,V> Shrink<EnumMap<K,V>> shrinkEnumMap(Shrink<K> sk,
                                                                       Shrink<V> sv)
A shrink strategy for enum maps.

Parameters:
sk - The shrink strategy for keys.
sv - The shrink stratgey for values.
Returns:
A shrink strategy for enum maps.

shrinkEnumSet

public static <A extends Enum<A>> Shrink<EnumSet<A>> shrinkEnumSet(Shrink<A> sa)
A shrink strategy for enum sets.

Parameters:
sa - The shrink strategy for the elements.
Returns:
A shrink strategy for enum sets.

shrinkHashMap

public static <K,V> Shrink<HashMap<K,V>> shrinkHashMap(Shrink<K> sk,
                                                       Shrink<V> sv)
A shrink strategy for hash maps.

Parameters:
sk - The shrink strategy for keys.
sv - The shrink stratgey for values.
Returns:
A shrink strategy for hash maps.

shrinkHashSet

public static <A> Shrink<HashSet<A>> shrinkHashSet(Shrink<A> sa)
A shrink strategy for hash sets.

Parameters:
sa - The shrink strategy for the elements.
Returns:
A shrink strategy for hash sets.

shrinkHashtable

public static <K,V> Shrink<Hashtable<K,V>> shrinkHashtable(Shrink<K> sk,
                                                           Shrink<V> sv)
A shrink strategy for hash tables.

Parameters:
sk - The shrink strategy for keys.
sv - The shrink stratgey for values.
Returns:
A shrink strategy for hash tables.

shrinkIdentityHashMap

public static <K,V> Shrink<IdentityHashMap<K,V>> shrinkIdentityHashMap(Shrink<K> sk,
                                                                       Shrink<V> sv)
A shrink strategy for identity hash maps.

Parameters:
sk - The shrink strategy for keys.
sv - The shrink stratgey for values.
Returns:
A shrink strategy for identity hash maps.

shrinkLinkedHashMap

public static <K,V> Shrink<LinkedHashMap<K,V>> shrinkLinkedHashMap(Shrink<K> sk,
                                                                   Shrink<V> sv)
A shrink strategy for linked hash maps.

Parameters:
sk - The shrink strategy for keys.
sv - The shrink stratgey for values.
Returns:
A shrink strategy for linked hash maps.

shrinkLinkedHashSet

public static <A> Shrink<LinkedHashSet<A>> shrinkLinkedHashSet(Shrink<A> sa)
A shrink strategy for linked hash sets.

Parameters:
sa - The shrink strategy for the elements.
Returns:
A shrink strategy for linked hash sets.

shrinkLinkedList

public static <A> Shrink<LinkedList<A>> shrinkLinkedList(Shrink<A> sa)
A shrink strategy for linked lists.

Parameters:
sa - The shrink strategy for the elements.
Returns:
A shrink strategy for linked lists.

shrinkPriorityQueue

public static <A> Shrink<PriorityQueue<A>> shrinkPriorityQueue(Shrink<A> sa)
A shrink strategy for priority queues.

Parameters:
sa - The shrink strategy for the elements.
Returns:
A shrink strategy for priority queues.

shrinkStack

public static <A> Shrink<Stack<A>> shrinkStack(Shrink<A> sa)
A shrink strategy for stacks.

Parameters:
sa - The shrink strategy for the elements.
Returns:
A shrink strategy for stacks.

shrinkTreeMap

public static <K,V> Shrink<TreeMap<K,V>> shrinkTreeMap(Shrink<K> sk,
                                                       Shrink<V> sv)
A shrink strategy for tree maps.

Parameters:
sk - The shrink strategy for keys.
sv - The shrink stratgey for values.
Returns:
A shrink strategy for tree maps.

shrinkTreeSet

public static <A> Shrink<TreeSet<A>> shrinkTreeSet(Shrink<A> sa)
A shrink strategy for tree sets.

Parameters:
sa - The shrink strategy for the elements.
Returns:
A shrink strategy for tree sets.

shrinkVector

public static <A> Shrink<Vector<A>> shrinkVector(Shrink<A> sa)
A shrink strategy for vectors.

Parameters:
sa - The shrink strategy for the elements.
Returns:
A shrink strategy for vectors.

shrinkWeakHashMap

public static <K,V> Shrink<WeakHashMap<K,V>> shrinkWeakHashMap(Shrink<K> sk,
                                                               Shrink<V> sv)
A shrink strategy for weak hash maps.

Parameters:
sk - The shrink strategy for keys.
sv - The shrink stratgey for values.
Returns:
A shrink strategy for weak hash maps.

shrinkArrayBlockingQueue

public static <A> Shrink<ArrayBlockingQueue<A>> shrinkArrayBlockingQueue(Shrink<A> sa)
A shrink strategy for array blocking queues.

Parameters:
sa - The shrink strategy for the elements.
Returns:
A shrink strategy for array blocking queues.

shrinkConcurrentHashMap

public static <K,V> Shrink<ConcurrentHashMap<K,V>> shrinkConcurrentHashMap(Shrink<K> sk,
                                                                           Shrink<V> sv)
A shrink strategy for concurrent hash maps.

Parameters:
sk - The shrink strategy for keys.
sv - The shrink stratgey for values.
Returns:
A shrink strategy for concurrent hash maps.

shrinkConcurrentLinkedQueue

public static <A> Shrink<ConcurrentLinkedQueue<A>> shrinkConcurrentLinkedQueue(Shrink<A> sa)
A shrink strategy for concurrent linked queues.

Parameters:
sa - The shrink strategy for the elements.
Returns:
A shrink strategy for concurrent linked queues.

shrinkCopyOnWriteArrayList

public static <A> Shrink<CopyOnWriteArrayList<A>> shrinkCopyOnWriteArrayList(Shrink<A> sa)
A shrink strategy for copy on write array lists.

Parameters:
sa - The shrink strategy for the elements.
Returns:
A shrink strategy for copy on write array lists.

shrinkCopyOnWriteArraySet

public static <A> Shrink<CopyOnWriteArraySet<A>> shrinkCopyOnWriteArraySet(Shrink<A> sa)
A shrink strategy for copy on write array sets.

Parameters:
sa - The shrink strategy for the elements.
Returns:
A shrink strategy for copy on write array sets.

shrinkDelayQueue

public static <A extends Delayed> Shrink<DelayQueue<A>> shrinkDelayQueue(Shrink<A> sa)
A shrink strategy for delay queues.

Parameters:
sa - The shrink strategy for the elements.
Returns:
A shrink strategy for delay queues.

shrinkLinkedBlockingQueue

public static <A> Shrink<LinkedBlockingQueue<A>> shrinkLinkedBlockingQueue(Shrink<A> sa)
A shrink strategy for linked blocking queues.

Parameters:
sa - The shrink strategy for the elements.
Returns:
A shrink strategy for linked blocking queues.

shrinkPriorityBlockingQueue

public static <A> Shrink<PriorityBlockingQueue<A>> shrinkPriorityBlockingQueue(Shrink<A> sa)
A shrink strategy for priority blocking queues.

Parameters:
sa - The shrink strategy for the elements.
Returns:
A shrink strategy for priority blocking queues.

shrinkSynchronousQueue

public static <A> Shrink<SynchronousQueue<A>> shrinkSynchronousQueue(Shrink<A> sa)
A shrink strategy for synchronous queues.

Parameters:
sa - The shrink strategy for the elements.
Returns:
A shrink strategy for synchronous queues.

shrinkP1

public static <A> Shrink<P1<A>> shrinkP1(Shrink<A> sa)
Returns a shrinking strategy for product-1 values.

Parameters:
sa - The shrinking strategy for the values.
Returns:
a shrinking strategy for product-1 values.

shrinkP2

public static <A,B> Shrink<P2<A,B>> shrinkP2(Shrink<A> sa,
                                             Shrink<B> sb)
Returns a shrinking strategy for product-2 values.

Parameters:
sa - The shrinking strategy for the values.
sb - The shrinking strategy for the values.
Returns:
a shrinking strategy for product-2 values.

shrinkP3

public static <A,B,C> Shrink<P3<A,B,C>> shrinkP3(Shrink<A> sa,
                                                 Shrink<B> sb,
                                                 Shrink<C> sc)
Returns a shrinking strategy for product-3 values.

Parameters:
sa - The shrinking strategy for the values.
sb - The shrinking strategy for the values.
sc - The shrinking strategy for the values.
Returns:
a shrinking strategy for product-3 values.

shrinkP4

public static <A,B,C,D> Shrink<P4<A,B,C,D>> shrinkP4(Shrink<A> sa,
                                                     Shrink<B> sb,
                                                     Shrink<C> sc,
                                                     Shrink<D> sd)
Returns a shrinking strategy for product-4 values.

Parameters:
sa - The shrinking strategy for the values.
sb - The shrinking strategy for the values.
sc - The shrinking strategy for the values.
sd - The shrinking strategy for the values.
Returns:
a shrinking strategy for product-4 values.

shrinkP5

public static <A,B,C,D,E> Shrink<P5<A,B,C,D,E>> shrinkP5(Shrink<A> sa,
                                                         Shrink<B> sb,
                                                         Shrink<C> sc,
                                                         Shrink<D> sd,
                                                         Shrink<E> se)
Returns a shrinking strategy for product-5 values.

Parameters:
sa - The shrinking strategy for the values.
sb - The shrinking strategy for the values.
sc - The shrinking strategy for the values.
sd - The shrinking strategy for the values.
se - The shrinking strategy for the values.
Returns:
a shrinking strategy for product-5 values.

shrinkP6

public static <A,B,C,D,E,F$> Shrink<P6<A,B,C,D,E,F$>> shrinkP6(Shrink<A> sa,
                                                               Shrink<B> sb,
                                                               Shrink<C> sc,
                                                               Shrink<D> sd,
                                                               Shrink<E> se,
                                                               Shrink<F$> sf)
Returns a shrinking strategy for product-6 values.

Parameters:
sa - The shrinking strategy for the values.
sb - The shrinking strategy for the values.
sc - The shrinking strategy for the values.
sd - The shrinking strategy for the values.
se - The shrinking strategy for the values.
sf - The shrinking strategy for the values.
Returns:
a shrinking strategy for product-6 values.

shrinkP7

public static <A,B,C,D,E,F$,G> Shrink<P7<A,B,C,D,E,F$,G>> shrinkP7(Shrink<A> sa,
                                                                   Shrink<B> sb,
                                                                   Shrink<C> sc,
                                                                   Shrink<D> sd,
                                                                   Shrink<E> se,
                                                                   Shrink<F$> sf,
                                                                   Shrink<G> sg)
Returns a shrinking strategy for product-7 values.

Parameters:
sa - The shrinking strategy for the values.
sb - The shrinking strategy for the values.
sc - The shrinking strategy for the values.
sd - The shrinking strategy for the values.
se - The shrinking strategy for the values.
sf - The shrinking strategy for the values.
sg - The shrinking strategy for the values.
Returns:
a shrinking strategy for product-7 values.

shrinkP8

public static <A,B,C,D,E,F$,G,H> Shrink<P8<A,B,C,D,E,F$,G,H>> shrinkP8(Shrink<A> sa,
                                                                       Shrink<B> sb,
                                                                       Shrink<C> sc,
                                                                       Shrink<D> sd,
                                                                       Shrink<E> se,
                                                                       Shrink<F$> sf,
                                                                       Shrink<G> sg,
                                                                       Shrink<H> sh)
Returns a shrinking strategy for product-8 values.

Parameters:
sa - The shrinking strategy for the values.
sb - The shrinking strategy for the values.
sc - The shrinking strategy for the values.
sd - The shrinking strategy for the values.
se - The shrinking strategy for the values.
sf - The shrinking strategy for the values.
sg - The shrinking strategy for the values.
sh - The shrinking strategy for the values.
Returns:
a shrinking strategy for product-8 values.

Copyright 2008 - 2010 Tony Morris, Runar Bjarnason, Tom Adams, Brad Clow, Ricky Clarkson, Nick Partridge, Jason Zaugg

This software is released under an open source BSD licence.