Package io.vavr.test
Interface Gen<T>
-
- Type Parameters:
T- type of generated objects
- Functional Interface:
- This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.
@FunctionalInterface public interface Gen<T>Generators are the building blocks for providing arbitrary objects.To ease the creation of Arbitraries, Gen is a FunctionalInterface which extends
Function<Random, T>.Gen objects are obtained via one of the methods
choose,fail,frequency,ofandoneOf.Given Gen objects may be transformed using one of the methods
filter,mapandflatMap.A simple way to obtain an Arbitrary of a Gen is to call arbitrary(). This will ignore the size hint of Arbitrary.
- See Also:
Arbitrary
-
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description Tapply(java.util.Random random)Functional interface of this generator.default Arbitrary<T>arbitrary()Converts this Gen to an Arbitrarystatic Gen<java.lang.Character>choose(char... characters)Chooses a char from all chars in the arraystatic Gen<java.lang.Character>choose(char min, char max)Chooses a char between min and max, bounds inclusive and chars distributed according to the underlying random number generator.static Gen<java.lang.Double>choose(double min, double max)Chooses a double between min and max, bounds inclusive and numbers distributed according to the distribution of the underlying random number generator.static Gen<java.lang.Integer>choose(int min, int max)Chooses an int between min and max, bounds inclusive and numbers distributed according to the distribution of the underlying random number generator.static Gen<java.lang.Long>choose(long min, long max)Chooses a long between min and max, bounds inclusive and numbers distributed according to the distribution of the underlying random number generator.static <T extends java.lang.Enum<T>>
Gen<T>choose(java.lang.Class<T> clazz)Chooses an enum value from all the enum constants defined in the enumerated type.static <T> Gen<T>choose(java.lang.Iterable<T> values)Chooses a value from all values in the iterablestatic <T> Gen<T>choose(T... values)Chooses a value from all values in the array.static <T> Gen<T>fail()A failing generator which throws a RuntimeException("failed").static <T> Gen<T>fail(java.lang.String message)A failing generator which throws a RuntimeException.default Gen<T>filter(java.util.function.Predicate<? super T> predicate)Returns a generator based on this generator which produces values that fulfill the given predicate.default <U> Gen<U>flatMap(java.util.function.Function<? super T,? extends Gen<? extends U>> mapper)Maps generated Ts to Us.static <T> Gen<T>frequency(Tuple2<java.lang.Integer,Gen<T>>... generators)Chooses one of the given generators according to their frequency.static <T> Gen<T>frequency(java.lang.Iterable<Tuple2<java.lang.Integer,Gen<T>>> generators)Chooses one of the given generators according to their frequency.default Gen<T>intersperse(Gen<T> other)Intersperse values from this generator instance with those of another.default <U> Gen<U>map(java.util.function.Function<? super T,? extends U> mapper)Maps generated Ts to Us.static <T> Gen<T>of(T t)A generator which constantly returns t.static <T> Gen<T>of(T seed, java.util.function.Function<? super T,? extends T> next)static <T> Gen<T>oneOf(Gen<T>... generators)Randomly chooses one of the given generators.static <T> Gen<T>oneOf(java.lang.Iterable<Gen<T>> generators)Randomly chooses one of the given generators.default Gen<T>peek(java.util.function.Consumer<? super T> action)default <U> Utransform(java.util.function.Function<? super Gen<T>,? extends U> f)Transforms thisGen.
-
-
-
Method Detail
-
apply
T apply(java.util.Random random)
Functional interface of this generator.- Parameters:
random- a random number generator- Returns:
- A generated value of type T.
-
of
static <T> Gen<T> of(T t)
A generator which constantly returns t.- Type Parameters:
T- Type of t.- Parameters:
t- A value.- Returns:
- A new T generator
-
of
static <T> Gen<T> of(T seed, java.util.function.Function<? super T,? extends T> next)
-
choose
static Gen<java.lang.Integer> choose(int min, int max)
Chooses an int between min and max, bounds inclusive and numbers distributed according to the distribution of the underlying random number generator.Note: min and max are internally swapped if min > max.
- Parameters:
min- lower boundmax- upper bound- Returns:
- A new int generator
-
choose
static Gen<java.lang.Long> choose(long min, long max)
Chooses a long between min and max, bounds inclusive and numbers distributed according to the distribution of the underlying random number generator.Note: min and max are internally swapped if min > max.
- Parameters:
min- lower boundmax- upper bound- Returns:
- A new long generator
-
choose
static Gen<java.lang.Double> choose(double min, double max)
Chooses a double between min and max, bounds inclusive and numbers distributed according to the distribution of the underlying random number generator.Note: min and max are internally swapped if min > max.
- Parameters:
min- lower boundmax- upper bound- Returns:
- A new double generator
- Throws:
java.lang.IllegalArgumentException- if min or max is infinite, min or max is not a number (NaN)
-
choose
static Gen<java.lang.Character> choose(char min, char max)
Chooses a char between min and max, bounds inclusive and chars distributed according to the underlying random number generator.Note: min and max are internally swapped if min > max.
- Parameters:
min- lower boundmax- upper bound- Returns:
- A new char generator
-
choose
static Gen<java.lang.Character> choose(char... characters)
Chooses a char from all chars in the array- Parameters:
characters- array with the characters to choose from- Returns:
- A new array generator
-
choose
static <T extends java.lang.Enum<T>> Gen<T> choose(java.lang.Class<T> clazz)
Chooses an enum value from all the enum constants defined in the enumerated type.- Type Parameters:
T- type of enum constants- Parameters:
clazz- Enum class- Returns:
- A new enum generator
-
choose
@SafeVarargs static <T> Gen<T> choose(T... values)
Chooses a value from all values in the array.- Type Parameters:
T- value type- Parameters:
values- array with the values to choose from- Returns:
- A new array generator
-
choose
static <T> Gen<T> choose(java.lang.Iterable<T> values)
Chooses a value from all values in the iterable- Type Parameters:
T- value type- Parameters:
values- iterable with the values to choose from.- Returns:
- A new iterable generator
-
fail
static <T> Gen<T> fail()
A failing generator which throws a RuntimeException("failed").- Type Parameters:
T- Type of values theoretically generated.- Returns:
- A new generator which always fails with the message "failed"
-
fail
static <T> Gen<T> fail(java.lang.String message)
A failing generator which throws a RuntimeException.- Type Parameters:
T- Type of values theoretically generated.- Parameters:
message- Message thrown.- Returns:
- A new generator which always fails with the given message
-
frequency
@SafeVarargs static <T> Gen<T> frequency(Tuple2<java.lang.Integer,Gen<T>>... generators)
Chooses one of the given generators according to their frequency. Only generators with positive frequencies are used in returned generator.- Type Parameters:
T- Type to be generated- Parameters:
generators- A non-empty array of Tuples (frequency, generator)- Returns:
- A new T generator
- Throws:
java.lang.NullPointerException- if generators is nulljava.lang.IllegalArgumentException- if generators doesn't contain any generator with positive frequency
-
frequency
static <T> Gen<T> frequency(java.lang.Iterable<Tuple2<java.lang.Integer,Gen<T>>> generators)
Chooses one of the given generators according to their frequency. Only generators with positive frequencies ares used in returned generator.- Type Parameters:
T- Type to be generated- Parameters:
generators- A non-empty traversable of Tuples (frequency, generator)- Returns:
- A new T generator
- Throws:
java.lang.NullPointerException- if generators is nulljava.lang.IllegalArgumentException- if generators doesn't contain any generator with positive frequency
-
intersperse
default Gen<T> intersperse(Gen<T> other)
Intersperse values from this generator instance with those of another.- Parameters:
other- another T generator to accept values from.- Returns:
- A new T generator
-
oneOf
@SafeVarargs static <T> Gen<T> oneOf(Gen<T>... generators)
Randomly chooses one of the given generators.- Type Parameters:
T- Type to be generated- Parameters:
generators- A non-empty array of generators- Returns:
- A new T generator
- Throws:
java.lang.NullPointerException- if generators is nulljava.lang.IllegalArgumentException- if generators is empty
-
oneOf
static <T> Gen<T> oneOf(java.lang.Iterable<Gen<T>> generators)
Randomly chooses one of the given generators.- Type Parameters:
T- Type to be generated- Parameters:
generators- A non-empty Iterable of generators- Returns:
- A new T generator
- Throws:
java.lang.NullPointerException- if generators is nulljava.lang.IllegalArgumentException- if generators is empty
-
arbitrary
default Arbitrary<T> arbitrary()
Converts this Gen to an Arbitrary- Returns:
- An arbitrary which returns this generator regardless of the provided size hint n
-
filter
default Gen<T> filter(java.util.function.Predicate<? super T> predicate)
Returns a generator based on this generator which produces values that fulfill the given predicate.- Parameters:
predicate- A predicate- Returns:
- A new generator
-
flatMap
default <U> Gen<U> flatMap(java.util.function.Function<? super T,? extends Gen<? extends U>> mapper)
Maps generated Ts to Us.- Type Parameters:
U- Type of generated objects of the new generator- Parameters:
mapper- A function that maps a generated T to a new generator which generates objects of type U.- Returns:
- A new generator
-
map
default <U> Gen<U> map(java.util.function.Function<? super T,? extends U> mapper)
Maps generated Ts to Us.- Type Parameters:
U- Type of the mapped object- Parameters:
mapper- A function that maps a generated T to an object of type U.- Returns:
- A new generator
-
-