Skip to content

Latest commit

 

History

History
78 lines (54 loc) · 3.08 KB

TODO.md

File metadata and controls

78 lines (54 loc) · 3.08 KB

1.7.0

- Chains: Implement Fluent API for Chains and Action chains
    - See https://github.com/jlink/jqwik/issues/134#issuecomment-1127478094:
      Reimplement SequentialActionChain.transformations() without reinstantiating all shrinkables
      - Collect all transformer descriptions for Chain.transformers() as they go.
      - Remove all descriptionProviders in Transformer factory methods and re-introduce description strings.
    - Transformer.noop()
        - Optimize shrinking for that
    - Action -> Action.Dependent | Action.Independent
    - Action.builder() instead of Action factory methods?
    - ActionChainArbitrary
        - addAction(Function<Action.Builder, Action.Builder>)
        - infinite()
        - improveShrinkingWith(Supplier<ChangeDetector<T>> detectorSupplier)
    - User Guide
        Clarify that Chain and ActionChain cannot be reproduced in SAMPLE_FIRST/ONLY mode 

- Check module-info.java files

- Document
    - Release notes

1.7.1

- Optimize memoization, e.g. through adding Arbitrary.generatorIsCacheable()
  See discussion in https://github.com/jlink/jqwik/issues/339 and https://github.com/jlink/jqwik/issues/354

- Kotlin: Convenience methods and extensions for chains and action chains

- Introduce ModelChain. Should cover https://github.com/jlink/jqwik/issues/80.
    - ModelChain can be generated before it's provided as parameter!

- Compose stateful actions: https://github.com/jlink/jqwik/issues/300

- <T,S,U> SetArbitrary<E>.combineEach(Arbitrary<S>).as(BiFunction<T, E, U>): Arbitrary<Set<U>>
        - For all collection arbitraries

- Make `AfterFailureMode.SAMPLE_FIRST` the default

- Introduce BOM

1.7.x

- Kotlin convenience functions:
    - Collection<T>.anyValue() or Collection<T>.chooseAny() -> Arbitraries.of(..)
    - Collection<Arbitrary<T>>.chooseOne() -> Arbitraries.oneOf(..)

- Combinators.combine(..).filter(..)
  See https://github.com/jlink/jqwik/issues/329.

- Allow annotation @BeforeTry on member variables of tests to reinitialize them before each try.
  - Alternative: New annotation @InitBeforeTry

- JqwikSession:
  - setRandomSessionSeed(), getRandomSessionSeed()

- Rework net.jqwik.engine.execution.JqwikExecutor.letNonSuccessfulTestsExecuteFirst to avoid O(m*n)

- Allow state machine / model specification with temporal logic.
  See https://wickstrom.tech/programming/2021/05/03/specifying-state-machines-with-temporal-logic.html

- NullableArbitraryProvider should always be last to apply.
  This will probably require a new parameter based lifecycle hook, similar to:

  ```
  interface WrapArbitrary extends Lifecycle Hook {
    <T> Arbitrary<T> wrap(ForAllParameterContext parameterContext, Arbitrary<T> arbitrary);
  }
  ```

- SharedArbitrary
  See https://github.com/jlink/jqwik/issues/294 & SharedArbitraryExperiments
  This probably requires major refactoring and change of structure.

    - Allow @ForAll on member variables of test container class