T - The type of generated objects. Primitive objects (e.g. int, boolean etc.) are represented by their boxed
            type (e.g. Integer, Boolean).@API(status=STABLE,
     since="1.0")
public interface Arbitrary<T>
| Modifier and Type | Interface and Description | 
|---|---|
| static class  | Arbitrary.ArbitraryFacade | 
| Modifier and Type | Method and Description | 
|---|---|
| default java.util.Optional<java.util.stream.Stream<T>> | allValues()Create optional stream of all possible values this arbitrary could generate. | 
| default <A> StreamableArbitrary<T,A> | array(java.lang.Class<A> arrayClass)Create a new arbitrary of type  T[]using the existing arbitrary for generating the elements of the array. | 
| default Arbitrary<java.lang.Object> | asGeneric()Sometimes simplifies test writing | 
| default Arbitrary<java.util.List<T>> | collect(java.util.function.Predicate<java.util.List<T>> until)Create a new arbitrary of type  List<T>by adding elements of type T until conditionuntilis fulfilled. | 
| default Arbitrary<T> | dontShrink()Create a new arbitrary of type  Tthat will use the underlying
 arbitrary to create the tuple values but will return unshrinkable values. | 
| EdgeCases<T> | edgeCases() | 
| default java.util.Optional<ExhaustiveGenerator<T>> | exhaustive()Create the exhaustive generator for an arbitrary using the maximum allowed
 number of generated samples. | 
| default java.util.Optional<ExhaustiveGenerator<T>> | exhaustive(long maxNumberOfSamples)Create the exhaustive generator for an arbitrary. | 
| default Arbitrary<T> | filter(java.util.function.Predicate<T> filterPredicate)Create a new arbitrary of the same type  Tthat creates and shrinks the original arbitrary but only allows
 values that are accepted by thefilterPredicate. | 
| default Arbitrary<T> | fixGenSize(int genSize)Fix the genSize of an arbitrary so that it can no longer be influenced from outside | 
| default <U> Arbitrary<U> | flatMap(java.util.function.Function<T,Arbitrary<U>> mapper)Create a new arbitrary of type  Uthat uses the values of the existing arbitrary to create a new arbitrary
 using themapperfunction. | 
| default void | forEachValue(java.util.function.Consumer<? super T> action)Iterate through each value this arbitrary can generate if - and only if -
 exhaustive generation is possible. | 
| RandomGenerator<T> | generator(int genSize)Create the random generator for an arbitrary | 
| default Arbitrary<T> | ignoreException(java.lang.Class<? extends java.lang.Throwable> exceptionType)Create a new arbitrary of type  Tthat will use the underlying
 arbitrary to create the tuple values but will ignore any raised exception of
 typeexceptionTypeduring generation. | 
| default Arbitrary<T> | injectDuplicates(double duplicateProbability)Create a new arbitrary of type  Iterable<T>that will
 inject duplicates of previously generated values with a probability ofduplicateProbability. | 
| default Arbitrary<T> | injectNull(double nullProbability)Create a new arbitrary of the same type but inject null values with a probability of  nullProbability. | 
| default boolean | isUnique()All arbitraries whose base generator is supposed to produce no duplicates
 should return true. | 
| default IteratorArbitrary<T> | iterator()Create a new arbitrary of type  Iterable<T>using the existing arbitrary for generating the elements of the
 stream. | 
| default ListArbitrary<T> | list()Create a new arbitrary of type  List<T>using the existing arbitrary for generating the elements of the list. | 
| default <U> Arbitrary<U> | map(java.util.function.Function<T,U> mapper)Create a new arbitrary of type  Uthat maps the values of the original arbitrary using themapperfunction. | 
| default Arbitrary<java.util.Optional<T>> | optional()Create a new arbitrary of type  Optional<T>using the existing arbitrary for generating the elements of the
 stream. | 
| default T | sample()Generate a single sample value using this arbitrary. | 
| default java.util.stream.Stream<T> | sampleStream()Generate a stream of sample values using this arbitrary. | 
| default SetArbitrary<T> | set()Create a new arbitrary of type  Set<T>using the existing arbitrary for generating the elements of the set. | 
| default StreamArbitrary<T> | stream()Create a new arbitrary of type  Stream<T>using the existing arbitrary
 for generating the elements of the stream. | 
| default Arbitrary<Tuple.Tuple1<T>> | tuple1()Create a new arbitrary of type  Tuple.Tuple1<T>that will use the underlying
 arbitrary to create the tuple value; | 
| default Arbitrary<Tuple.Tuple2<T,T>> | tuple2()Create a new arbitrary of type  Tuple.Tuple2<T, T>that will use the underlying
 arbitrary to create the tuple values; | 
| default Arbitrary<Tuple.Tuple3<T,T,T>> | tuple3()Create a new arbitrary of type  Tuple.Tuple3<T, T, T>that will use the underlying
 arbitrary to create the tuple values; | 
| default Arbitrary<Tuple.Tuple4<T,T,T,T>> | tuple4()Create a new arbitrary of type  Tuple.Tuple4<T, T, T, T>that will use the underlying
 arbitrary to create the tuple values; | 
| default Arbitrary<Tuple.Tuple5<T,T,T,T,T>> | tuple5()Create a new arbitrary of type  Tuple.Tuple5<T, T, T, T, T>that will use the underlying
 arbitrary to create the tuple values; | 
| default Arbitrary<T> | unique()Create a new arbitrary of the same type  Tthat creates and shrinks the original arbitrary but will
 never generate the same value twice. | 
RandomGenerator<T> generator(int genSize)
genSize - a very unspecific configuration parameter that can be used
                to influence the configuration and behaviour of a random generator
                if and only if the generator wants to be influenced.
                Many generators are independent of genSize.
                
                The default value of genSize is the number of tries configured
                for a property. Use fixGenSize(int) to fix
                the parameter for a given arbitrary.
@API(status=INTERNAL) default Arbitrary<java.lang.Object> asGeneric()
@API(status=INTERNAL) default boolean isUnique()
@API(status=INTERNAL) default java.util.Optional<ExhaustiveGenerator<T>> exhaustive()
@API(status=INTERNAL) default java.util.Optional<ExhaustiveGenerator<T>> exhaustive(long maxNumberOfSamples)
maxNumberOfSamples this can take a long time.
 This method must be overridden in all arbitraries that support exhaustive
 generation.maxNumberOfSamples - The maximum number of samples considered.
                           If during generation it becomes clear that this
                           number will be exceeded generation stops.default java.util.Optional<java.util.stream.Stream<T>> allValues()
@API(status=MAINTAINED,
     since="1.1.2")
default void forEachValue(java.util.function.Consumer<? super T> action)
action - the consumer function to be invoked for each valuejava.lang.AssertionError - if exhaustive generation is not possibledefault Arbitrary<T> filter(java.util.function.Predicate<T> filterPredicate)
T that creates and shrinks the original arbitrary but only allows
 values that are accepted by the filterPredicate.JqwikException - if filtering will fail to come up with a value after 10000 triesdefault <U> Arbitrary<U> map(java.util.function.Function<T,U> mapper)
U that maps the values of the original arbitrary using the mapper
 function.default <U> Arbitrary<U> flatMap(java.util.function.Function<T,Arbitrary<U>> mapper)
U that uses the values of the existing arbitrary to create a new arbitrary
 using the mapper function.default Arbitrary<T> injectNull(double nullProbability)
nullProbability.default Arbitrary<T> unique()
T that creates and shrinks the original arbitrary but will
 never generate the same value twice.
 Uniqueness is only held up for a single use of this arbitrary. If the same arbitrary instance is used in several places, e.g. for creating several lists, the different lists may share values between them.
JqwikException - if filtering will fail to come up with a value after 10000 tries@API(status=MAINTAINED,
     since="1.2.0")
default Arbitrary<T> fixGenSize(int genSize)
default ListArbitrary<T> list()
List<T> using the existing arbitrary for generating the elements of the list.default SetArbitrary<T> set()
Set<T> using the existing arbitrary for generating the elements of the set.default StreamArbitrary<T> stream()
Stream<T> using the existing arbitrary
 for generating the elements of the stream.default IteratorArbitrary<T> iterator()
Iterable<T> using the existing arbitrary for generating the elements of the
 stream.default <A> StreamableArbitrary<T,A> array(java.lang.Class<A> arrayClass)
T[] using the existing arbitrary for generating the elements of the array.arrayClass - The arrays class to create, e.g. String[].class. This is required due to limitations in Java's
                   reflection capabilities.default Arbitrary<java.util.Optional<T>> optional()
Optional<T> using the existing arbitrary for generating the elements of the
 stream.
 
 The new arbitrary also generates Optional.empty() values with a probability of 0.05 (i.e. 1 in 20).
 
@API(status=MAINTAINED,
     since="1.3.0")
default Arbitrary<java.util.List<T>> collect(java.util.function.Predicate<java.util.List<T>> until)
List<T> by adding elements of type T until condition until is fulfilled.@API(status=MAINTAINED,
     since="1.3.0")
default java.util.stream.Stream<T> sampleStream()
The underlying generator is created with size 1000. Outside a property a new instance of Random will be created to feed the generator.
Using this method within a property does not break reproducibility of results, i.e. rerunning it with same seed will also generate the same values.
@API(status=MAINTAINED,
     since="1.3.0")
default T sample()
Some additional things to be aware of:
@API(status=MAINTAINED,
     since="1.3.0")
default Arbitrary<T> injectDuplicates(double duplicateProbability)
Iterable<T> that will
 inject duplicates of previously generated values with a probability of duplicateProbability.
 Shrinking behavior for duplicate values -- if duplication is required for falsification -- is poor, i.e. those duplicate values cannot be shrunk to "smaller" duplicate values.
duplicateProbability - The probability with which a previous value will be generated@API(status=MAINTAINED,
     since="1.3.0")
default Arbitrary<Tuple.Tuple1<T>> tuple1()
Tuple.Tuple1<T> that will use the underlying
 arbitrary to create the tuple value;@API(status=MAINTAINED,
     since="1.3.0")
default Arbitrary<Tuple.Tuple2<T,T>> tuple2()
Tuple.Tuple2<T, T> that will use the underlying
 arbitrary to create the tuple values;@API(status=MAINTAINED,
     since="1.3.0")
default Arbitrary<Tuple.Tuple3<T,T,T>> tuple3()
Tuple.Tuple3<T, T, T> that will use the underlying
 arbitrary to create the tuple values;@API(status=MAINTAINED,
     since="1.3.0")
default Arbitrary<Tuple.Tuple4<T,T,T,T>> tuple4()
Tuple.Tuple4<T, T, T, T> that will use the underlying
 arbitrary to create the tuple values;@API(status=MAINTAINED,
     since="1.3.3")
default Arbitrary<Tuple.Tuple5<T,T,T,T,T>> tuple5()
Tuple.Tuple5<T, T, T, T, T> that will use the underlying
 arbitrary to create the tuple values;@API(status=EXPERIMENTAL,
     since="1.3.1")
default Arbitrary<T> ignoreException(java.lang.Class<? extends java.lang.Throwable> exceptionType)
T that will use the underlying
 arbitrary to create the tuple values but will ignore any raised exception of
 type exceptionType during generation.exceptionType - The exception type to ignore@API(status=EXPERIMENTAL,
     since="1.3.2")
default Arbitrary<T> dontShrink()
T that will use the underlying
 arbitrary to create the tuple values but will return unshrinkable values.
 This might be necessary if values are being mutated during a property run
 and the mutated state would make a shrunk value invalid.
 This is a hack to get around a weakness in jqwik's shrinking mechanism