T
- The type of object to be generated by this arbitrary@API(status=MAINTAINED, since="1.4.0") public abstract class ArbitraryDecorator<T> extends java.lang.Object implements java.lang.Cloneable, Arbitrary<T>
Arbitrary
,
Arbitraries
Arbitrary.ArbitraryFacade
Constructor and Description |
---|
ArbitraryDecorator() |
Modifier and Type | Method and Description |
---|---|
protected abstract Arbitrary<T> |
arbitrary()
Implement by calling jqwik's standard DSL for building arbitraries.
|
EdgeCases<T> |
edgeCases(int maxEdgeCases) |
java.util.Optional<ExhaustiveGenerator<T>> |
exhaustive(long maxNumberOfSamples)
Create the exhaustive generator for an arbitrary.
|
RandomGenerator<T> |
generator(int genSize)
Create the random generator for an arbitrary.
|
RandomGenerator<T> |
generatorWithEmbeddedEdgeCases(int genSize)
Create the random generator for an arbitrary where the embedded generators,
if there are any, also generate edge cases.
|
boolean |
isGeneratorMemoizable() |
java.lang.String |
toString() |
protected <A extends Arbitrary<?>> |
typedClone()
Use to clone current instance with its interface type
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
allValues, array, asGeneric, collect, dontShrink, edgeCases, edgeCases, exhaustive, filter, filter, fixGenSize, flatMap, forEachValue, generator, ignoreException, ignoreException, ignoreExceptions, ignoreExceptions, injectDuplicates, injectNull, iterator, list, map, optional, optional, sample, sampleStream, set, stream, tuple1, tuple2, tuple3, tuple4, tuple5, withoutEdgeCases
protected abstract Arbitrary<T> arbitrary()
public RandomGenerator<T> generator(int genSize)
Arbitrary
Starting with version 1.4.0 the returned generator should no longer include edge cases explicitly since those will be injected in Arbitrary.generator(int, boolean)
generator
in interface Arbitrary<T>
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 Arbitrary.fixGenSize(int) to fix
the parameter for a given arbitrary.
public RandomGenerator<T> generatorWithEmbeddedEdgeCases(int genSize)
Arbitrary
Override only if there are any embedded arbitraries / generators, e.g. a container using an element generator
generatorWithEmbeddedEdgeCases
in interface Arbitrary<T>
genSize
- See Arbitrary.generator(int) about meaning of this parameterpublic java.util.Optional<ExhaustiveGenerator<T>> exhaustive(long maxNumberOfSamples)
Arbitrary
maxNumberOfSamples
this can take a long time.
This method must be overridden in all arbitraries that support exhaustive
generation.exhaustive
in interface Arbitrary<T>
maxNumberOfSamples
- The maximum number of samples considered.
If during generation it becomes clear that this
number will be exceeded generation stops.public boolean isGeneratorMemoizable()
isGeneratorMemoizable
in interface Arbitrary<T>
public java.lang.String toString()
toString
in class java.lang.Object
protected <A extends Arbitrary<?>> A typedClone()
A
- The special interface type of this arbitrary