Package net.jqwik.api.state
Interface ActionChain<S>
-
- Type Parameters:
S
- The type of the object going through state transformations
@API(status=EXPERIMENTAL, since="1.7.0") public interface ActionChain<S>
A chain of transforming Actions that can be run for values of typeS
. Since the next action is usually created on demand, the currentrunState
of a chain can be queried.By default any action chain instance is not thread safe, i.e. you should not try to invoke run() concurrently.
-
-
Nested Class Summary
Nested Classes Modifier and Type Interface Description static class
ActionChain.ActionChainFacade
static class
ActionChain.RunningState
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description java.util.Optional<S>
finalState()
The final state value after running an action chain.ActionChain<S>
peek(java.util.function.Consumer<S> peeker)
Observe the state transformations of a running chain by adding a peeker to an action chain.S
run()
Run the list through all transformations provided by the actions to create it.ActionChain.RunningState
running()
An action chain can be in different running states: NOT_RUN, RUNNING, FAILED, SUCEEDEDstatic <T> ActionChainArbitrary<T>
startWith(java.util.function.Supplier<? extends T> initialSupplier)
Create arbitrary for a chain with a certain initial state.java.util.List<java.lang.String>
transformations()
Return list of all applied transformations.java.util.List<Transformer<S>>
transformers()
Return list of all used transformer instances.ActionChain<S>
withInvariant(@Nullable java.lang.String label, java.util.function.Consumer<S> invariant)
Add a labelled invariant to a sequence.default ActionChain<S>
withInvariant(java.util.function.Consumer<S> invariant)
Add an unlabelled invariant to a sequence.
-
-
-
Method Detail
-
startWith
static <T> ActionChainArbitrary<T> startWith(java.util.function.Supplier<? extends T> initialSupplier)
Create arbitrary for a chain with a certain initial state.- Type Parameters:
T
- The type of state to be transformed through the chain.- Parameters:
initialSupplier
- function to create the initial state object- Returns:
- new arbitrary instance
-
transformations
java.util.List<java.lang.String> transformations()
Return list of all applied transformations.For a chain that has not been run this list is always empty.
- Returns:
- list of describing strings
-
transformers
@API(status=EXPERIMENTAL, since="1.7.1") java.util.List<Transformer<S>> transformers()
Return list of all used transformer instances.Checking transformer instances - e.g. if they are of a certain implementation type - only makes sense if the transformer's description string is NOT set explicitly, e.g. in an Action's description() method.
For a chain that has not been run this list is always empty.
- Returns:
- list of transformer instances
-
run
S run()
Run the list through all transformations provided by the actions to create it. Stop when either the maximum number of transformations is reached or if a Transformer.END_OF_CHAIN is being applied.- Returns:
- the last resulting state of running through transformations
-
withInvariant
default ActionChain<S> withInvariant(java.util.function.Consumer<S> invariant)
Add an unlabelled invariant to a sequence.- Parameters:
invariant
- will be checked after each successful action- Returns:
- the same chain instance
- See Also:
withInvariant(String, Consumer)
-
withInvariant
ActionChain<S> withInvariant(@Nullable @Nullable java.lang.String label, java.util.function.Consumer<S> invariant)
Add a labelled invariant to a sequence.- Parameters:
label
- will show up in error messages when the invariant failsinvariant
- will be checked after each successful action- Returns:
- the same chain instance
- See Also:
withInvariant(Consumer)
-
finalState
java.util.Optional<S> finalState()
The final state value after running an action chain.- Returns:
- state or Optional.empty() if chain has not been run
-
running
ActionChain.RunningState running()
An action chain can be in different running states: NOT_RUN, RUNNING, FAILED, SUCEEDED- Returns:
- a state object
-
peek
ActionChain<S> peek(java.util.function.Consumer<S> peeker)
Observe the state transformations of a running chain by adding a peeker to an action chain. Thepeeker
will be called after each successful transformation but before checking invariants.There can be more than one peeker.
- Parameters:
peeker
- A consumer of a state object- Returns:
- the same chain instance
-
-