All Versions
Latest Version
Avg Release Cycle
27 days
Latest Release
1236 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.