Package net.jqwik.api.state
Interface Transformer<T extends @Nullable Object>
- Type Parameters:
T
- The type of state to be transformed in a chain
- All Superinterfaces:
Function<T,
T>
- Functional Interface:
- This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.
@FunctionalInterface
@API(status=EXPERIMENTAL,
since="1.7.0")
public interface Transformer<T extends @Nullable Object>
extends Function<T,T>
A transformer is used to transform a state of type
T
into another value of this type.
Transformation can create a new object, or change the inner state of an object and return it.
In addition to performing a state transformation the mutator function can also check or assert conditions and invariants that should hold when doing the transformation. This is especially useful when a transformer is used as part of an action.
- See Also:
-
Field Summary
Modifier and TypeFieldDescriptionstatic final Transformer<?>
The singleton object used for all calls to endOfChain().static final Transformer<?>
The singleton object used for all calls to noop(). -
Method Summary
Modifier and TypeMethodDescriptionstatic <T extends @Nullable Object>
Transformer<T>Use this transformer to stop further enhancement of a chain.default boolean
static <S extends @Nullable Object>
Transformer<S>Convenience method to create a transformer with a description.static <T> Transformer<T>
noop()
Use this transformer to signal a noop transformation.static <S extends @Nullable Object>
Transformer<S>Create a transformer with a descriptiondefault String
Describe the transformation this Transformer is doing in a human understandable way.
-
Field Details
-
END_OF_CHAIN
The singleton object used for all calls to endOfChain(). -
NOOP
The singleton object used for all calls to noop().
-
-
Method Details
-
endOfChain
Use this transformer to stop further enhancement of a chain.Whenever a endOfChain() is chosen by a chain, the chain ends with the current state being provided (e.g. in the chain's iterator) for a last time.
- Type Parameters:
T
- The transformer's state value type- Returns:
- a transformer instance
-
noop
Use this transformer to signal a noop transformation. This can be useful when a Transformation wants to provide a transformer that does nothing in some circumstances.Noop transformers are ignored and not added to the chain of transformers.
- Type Parameters:
T
- The transformer's state value type- Returns:
- a transformer instance
-
transform
static <S extends @Nullable Object> Transformer<S> transform(String description, Function<? super S, ? extends S> transform) Create a transformer with a description- Type Parameters:
S
- The type of the state to transform- Parameters:
description
- A text to describe what the transform is doingtransform
- The actual transforming function- Returns:
- a new instance of a transformer
-
mutate
static <S extends @Nullable Object> Transformer<S> mutate(String description, Consumer<? super S> mutate) Convenience method to create a transformer with a description. A mutator works on a mutable, stateful object which will always be returned.- Type Parameters:
S
- The type of the state to mutate- Parameters:
description
- A text to describe what the transform is doingmutate
- The actual mutating operation- Returns:
- a new instance of a transformer
-
transformation
Describe the transformation this Transformer is doing in a human understandable way.- Returns:
- non-empty String
-
isEndOfChain
default boolean isEndOfChain()
-