S
- Type of the object to transform through an action@API(status=EXPERIMENTAL,
since="1.7.0")
public interface Action<S>
S
.
Those objects can be mutable, which means that the state changing method will return the same object,
or immutable, which requires the method to return another object that represents the transformed state.
Do not implement this interface directly, but either Action.Dependent or Action.Independent. Only those can be used to create an arbitrary for a ActionChain.
Mind that there is a another interface Action
which looks similar
but refers to jqwik's old and deprecated style of state-based property testing.
The two interfaces CANNOT be used interchangeably.
ActionChain
,
ActionChainArbitrary
Modifier and Type | Interface and Description |
---|---|
static interface |
Action.Dependent<S>
Implement this interface if you want to have the action's transforming behaviour depend on the previous state.
|
static interface |
Action.Independent<S>
Implement this interface if you want to have the action's transforming behaviour not to depend on previous state.
|
static class |
Action.JustMutate<S>
Subclass if you want to implement an independent action that simply mutates the given state.
|
static class |
Action.JustTransform<S>
Subclass if you want to implement an independent action that simply transforms the given state.
|
Modifier and Type | Method and Description |
---|---|
static <T> ActionBuilder<T> |
builder()
Create an unconditioned ActionBuilder.
|
static <T> Action.Independent<T> |
just(java.lang.String description,
Transformer<T> transformer)
Convenience method to create an independent Action with a description and a constant transformer
|
static <T> Action.Independent<T> |
just(Transformer<T> transformer)
Convenience method to create an independent Action with a constant transformer
|
default boolean |
precondition(S state)
If this method returns false, the action will not be performed.
|
static <T> ActionBuilder<T> |
when(java.util.function.Predicate<T> precondition)
Create an ActionBuilder with a precondition.
|
static <T> ActionBuilder<T> builder()
static <T> ActionBuilder<T> when(java.util.function.Predicate<T> precondition)
static <T> Action.Independent<T> just(Transformer<T> transformer)
static <T> Action.Independent<T> just(java.lang.String description, Transformer<T> transformer)
default boolean precondition(S state)
Implementing this method will make the chain of actions harder to shrink.
state
- the current state