All Versions
Latest Version
Avg Release Cycle
27 days
Latest Release
726 days ago

Changelog History
Page 1

  • v1.3.10 Changes

    December 04, 2020

    ๐Ÿ†• New and Enhanced Features

    • ๐Ÿ”ง Introduced JavaBeanReportingFormat for simpler and configurable reporting
      of Java beans.

    ๐Ÿ’ฅ Breaking Changes

    • ๐Ÿ—„ SampleReportingFormat.reportJavaBean(..) has been deprecated.
      ๐Ÿšš Will be removed in version 1.4.0.

    ๐Ÿ› Bug Fixes

    Arbitraries.lazy() did not allow exhaustive generation but does now.

    SampleReportingFormat.reportJavaBean(..) can now handle methods named
    is or get.

    SampleReportingFormat.reportJavaBean(..) can now handle properties
    that return Optional<T>.

  • v1.3.9 Changes

    December 01, 2020

    ๐Ÿ†• New and Enhanced Features

    ๐Ÿ“„ Generating email addresses
    ๐Ÿ”ง has now configuration options.

    Generated email addresses now
    have fewer edge cases.

    โž• Added constraint annotation
    ๐Ÿ“„ @Email
    for generating valid email addresses.

    ๐Ÿ‘ Experimental support for
    ๐Ÿ“„ changing an arbitrary's edge cases.

    Constraint annotation @StringLength now works for any arbitrary that generates a String.

    Range annotations (@Byte|Short|Int|Long|Float|Double|BigRange) do work now when applied
    to any arbitrary that generates the appropriate numeric type.

    ๐Ÿ’ฅ Breaking Changes

    • Email arbitrary no longer generates domain hosts without top level domain

    ๐Ÿ› Bug Fixes

    Reporting of null values in failed properties
    no longer fails with NPE.

    Sampling arbitraries with null values
    no longer fails.

  • v1.3.8 Changes

    November 12, 2020

    ๐Ÿ†• New and Enhanced Features

    You can now
    ๐Ÿ“„ generate valid email addresses.

    The header of the label column in
    ๐Ÿ“„ histograms and number range histograms
    can now be changed.

    ๐Ÿ’ฅ Breaking Changes

    The distribution of char groups when generating Characters or Strings
    is now weighted by the number of chars in each group so that each possible
    char has the same probability of being generated - except for edge cases.

    ๐Ÿ—„ StringArbitrary.withChars(Arbitrary<Character>) was deprecated

    ๐Ÿ—„ CharacterArbitrary.with(Arbitrary<Character>) was deprecated

    ๐Ÿ› Bug Fixes

    No known bugs.

  • v1.3.7 Changes

    October 27, 2020

    ๐Ÿ†• New and Enhanced Features

    โž• Added two edge cases for generation of integral numbers.

    ๐Ÿ‘ Reporting of parameters that changed during execution of property is now better
    at detecting real changes.

    ๐Ÿ’ฅ Breaking Changes

    • Examples with a failing assumption - i.e. throwing a TestAbortedException -
      ๐Ÿ‘€ will now be reported as being skipped. See #122
      for motivation and reasoning.

    ๐Ÿ› Bug Fixes

    Using some arbitraries with Arbitrary.sample() outside of a jqwik context
    no longer worked.
    Now it does again.

    0๏ธโƒฃ The default character generator was erroneously considered to produce unique
    characters. Resulted in a strange to analyze
    bug when generating functions

  • v1.3.6 Changes

    September 21, 2020

    ๐Ÿ†• New and Enhanced Features

    Shrinking behaviour of arbitraries created with
    Combinators.withBuilder(..) is now much better, especially much faster.

    โฌ†๏ธ Upgrade to JUnit Platform 1.7.0

    ๐Ÿ’ฅ Breaking Changes

    A maximum of 1000 (instead of 10000) edge cases is generated per arbitrary.

    Arbitraries that allow nullables through Arbitrary.injectNull() or
    annotation @WithNull will now shrink their values to null if possible.

    ๐Ÿ› Bug Fixes

    With a lot of edge cases sometimes only edge cases were generated.
    Now the minimum ratio is 1 edge case in 3 generating steps.

    โš  Warning about combinatorial explosion of edge cases generation is
    now logged only once.

    Edge cases for oneOf(..) and frequencyOf(..) generators are now correctly being shrunk.

  • v1.3.5 Changes

    August 26, 2020

    ๐Ÿ†• New and Enhanced Features

    โž• Added Tuple.of() and Tuple.empty() to create an empty tuple.

    The time out for bounded shrinking can now be changed in

    Sample reporting will now report changes to parameters during property execution

    โž• Added some convenience to use POJOs as builders:

    • Return arbitrary of builder itself

    - CombinableBuilder.inSetter(..): Set a builder's property and go on using it

    โž• Added SampleReportingFormat.reportJavaBean(Object bean)

    ๐Ÿ’ฅ Breaking Changes

    • 0๏ธโƒฃ Shrinking is no longer bound by number of shrinking attempts, but by time with a 10 seconds default.
      The reason is that counting shrinking attempts in a consistent manner was difficult, and
      shrinking could take very very long despite being in BOUNDED mode.

    ๐Ÿ› Bug Fixes

    • edge cases generation will be stopped when 10000 edge cases have been found.
      ๐Ÿ‘€ See #113
  • v1.3.4 Changes

    August 18, 2020

    ๐Ÿ†• New and Enhanced Features

    Arbitraries.lazyOf(Supplier<Arbitrary<T>> ...) is now the method of choice for
    ๐Ÿ‘ recursive value generation. It has much better shrinking behaviour than the
    more generic lazy() combined with oneOf().

    โž• Added PropertyLifecycleContext.attributes(), which allows to query, set and change
    ๐Ÿ‘€ a property method's attributes like number of tries and seed within a
    AroundPropertyHook lifecycle hook.

    โž• Added @PropertyDefaults annotation which allows to set the defaults
    of all property methods in a container.

    ๐Ÿ’ฅ Breaking Changes

    • No known breaking changes

    ๐Ÿ› Bug Fixes

  • v1.3.3 Changes

    August 08, 2020

    ๐Ÿ†• New and Enhanced Features

    Shrinking has been re-implemented from scratch. Should be more predictable and
    shrink to smaller samples in most cases.

    Shrinking now has stronger equivalence requirements for falsification:

    • Same type of assertion error or other exception

    - Assertion error or exception thrown from the same code location

    Shrinking @AlphaChars will now shrink to uppercase letters (if possible)
    since their Unicode codepoint is smaller.

    Negative numbers are shrunk to their positive counterpart if possible

    ๐Ÿ”„ Changes in property result reporting:

    • Shrunk samples have now header line "Shrunk Sample ( steps)"
    • If no shrinking took place samples have header line "Sample"
    • Original samples now also report the original error

    - Action sequences in stateful properties got their own reporting format

    Arbitraries.frequencyOf() now takes covariant arbitrary types

    ๐Ÿ’ฅ Breaking Changes

    โš  Exceeding shrinking bound is now logged as warning instead of being reported
    through JUnit platform reporting

    ๐Ÿ—„ Deprecated interface net.jqwik.api.ShrinkingSequence. Throw all your implementations away!

    ๐Ÿ—„ Deprecated class net.jqwik.api.FalsificationResult. No longer used anywhere.

    ๐Ÿ—„ Deprecated method Shrinkable.shrink(Falsifier<T> falsifier).
    It's no longer used anywhere.

    ๐Ÿ› Bug Fixes

    • Reporting an exhausted property had been broken since 1.2.4 and nobody noticed.
      Works again.
  • v1.3.2 Changes

    July 02, 2020

    ๐Ÿ†• New and Enhanced Features

    โž• Added Arbitrary.dontShrink()

    โž• Added SetArbitrary.mapEach()

    โž• Added SetArbitrary.flatMapEach()

    โž• Added ListArbitrary.mapEach()

    โž• Added ListArbitrary.flatMapEach()

    โž• Added Arbitraries.just(aConstant) and deprecated Arbitraries.constant(aConstant).
    ๐Ÿ‘€ Most other PBT libraries seem to use just for this functionality.

    โž• Added programmatic access to JUnit 5 platform reporting

    ๐Ÿ’ฅ Breaking Changes

    Introduced StreamableArbitrary hierarchy:

    • Arbitrary.set() now has return type net.jqwik.api.arbitraries.SetArbitrary
    • Arbitrary.list() now has return type net.jqwik.api.arbitraries.ListArbitrary
    • now has return type net.jqwik.api.arbitraries.StreamArbitrary

    - Arbitrary.iterator() now has return type net.jqwik.api.arbitraries.IteratorArbitrary

    Arbitraries.maps(...) now has return type net.jqwik.api.arbitraries.MapArbitrary

    ๐Ÿšš net.jqwik.api.lifecycle.Reporter moved to net.jqwik.api.Reporter

    ๐Ÿ› Bug Fixes

    ๐Ÿ‘ป Reporting samples with circular dependencies does no longer throw an exception

    โœ… Reporting test failure due to exception without message
    โœ… no longer leads to ignored test

    Reporting shrunk samples now report the actual sample and not a freshly generated one

  • v1.3.1 Changes

    June 19, 2020

    ๐Ÿ†• New and Enhanced Features

    Reporting of falsified, shrunk and generated samples has been completely reworked.
    ๐Ÿ‘€ See this issue for more details.

    โž• Added Arbitrary.ignoreException(exceptionType) which allows to ignore exceptions during value generation.

    ๐Ÿ’ฅ Breaking Changes

    Arbitraries.of(List<T>) replaced with Arbitraries.of(Collection<T>)

    Arbitraries.ofSuppliers(List<Supplier<T>>) replaced with Arbitraries.of(Collection<Supplier<T>>)

    ๐Ÿ› Bug Fixes

    No open bugs had been reported.