Package net.jqwik.api.state
Interface ActionChain<S extends @Nullable Object>
- Type Parameters:
S
- The type of the object going through state transformations
A chain of transforming Actions that can be run for values of type
S
.
Since the next action is usually created on demand, the current runState
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
Modifier and TypeInterfaceDescriptionstatic class
static enum
-
Method Summary
Modifier and TypeMethodDescriptionThe final state value after running an action chain.Observe the state transformations of a running chain by adding a peeker to an action chain.run()
Run the list through all transformations provided by the actions to create it.running()
An action chain can be in different running states: NOT_RUN, RUNNING, FAILED, SUCEEDEDstatic <T extends @Nullable Object>
ActionChainArbitrary<T>Create arbitrary for a chain with a certain initial state.Return list of all applied transformations.List<Transformer<S>>
Return list of all used transformer instances.withInvariant
(@Nullable String label, Consumer<S> invariant) Add a labelled invariant to a sequence.default ActionChain<S>
withInvariant
(Consumer<S> invariant) Add an unlabelled invariant to a sequence.
-
Method Details
-
startWith
static <T extends @Nullable Object> ActionChainArbitrary<T> startWith(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
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
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
Add an unlabelled invariant to a sequence.- Parameters:
invariant
- will be checked after each successful action- Returns:
- the same chain instance
- See Also:
-
withInvariant
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:
-
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
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
-