fast-check v2.15.0 Release Notes

  • ๐Ÿ†• New logo, new way to define fully custom arbitraries using NextArbitrary [Code][Diff]

    ๐Ÿ”‹ Features

    • (PR#1678) Introduce NextArbitrary, new way to define arbitraries
    • ๐Ÿ‘ฏ (PR#1690) Document and expose clone related methods
    • (PR#1730) Ensure bigint are always instanciated with valid ranges
    • ๐Ÿ‘ฏ (PR#1750) Add support for cloneable instances in fc.constant and fc.constantFrom
    • ๐Ÿ‘ฏ (PR#1756) Add support for bias in clone (and dedup)
    • ๐Ÿ‘ (PR#1758) Add support for bias in mixedCase
    • ๐Ÿ‘ (PR#1794) Support canGenerate and shrink of user-defined values on map
    • (PR#1799) Implement unmappers for char arbitraries
    • ๐Ÿ‘ (PR#1632) New logo supports dark mode and fits better within README
    • (PR#1812) Add unmappers for built-in arbitraries on strings
    • ๐Ÿ‘ (PR#1836) Add built-in unmapper support onto mapToConstant
    • ๐Ÿ‘ (PR#1838) Add built-in unmapper support onto lorem
    • ๐Ÿ‘ (PR#1857) Add built-in unmapper support onto dictionary
    • ๐Ÿ‘ (PR#1866) Add built-in unmapper support onto date
    • ๐Ÿ‘ (PR#1888) Add built-in unmapper support onto ip
    • ๐Ÿ‘ (PR#1912) Add built-in unmapper support onto record

    ๐Ÿ›  Fixes

    • ๐Ÿ‘ฏ (PR#1693) Bug: Apply cloneMethod on map/filter instances of Shrinkable
    • (PR#1712) Bug: Shrinker on integers was possibly generating out-of-range values
    • (PR#1713) Bug: canGenerate method on integer should reject -0
    • (PR#1736) Bug: canGenerate of FrequencyArbitrary was not using depth properly
    • (PR#1737) Bug: freq of 0 not considered the same way in constraints-based and simple arg
    • โœ… (PR#1755) Bug: infiniteStream was not properly cloning cloneable instances
    • (PR#1759) Bug: Not properly biased mixedCase
    • (PR#1776) Bug: ConstantArbitrary must not shrink towards the first if it is already the first
    • ๐Ÿ‘ฏ (PR#1780) Bug: clone must use Object.is and check values on canGenerate
    • ๐Ÿ–จ (PR#1783) Bug: StreamArbitrary should print any value that have been pulled
    • (PR#1784) Bug: Stream.take pull one unneeded value from the source
    • โฑ (PR#1787) Bug: SchedulerArbitrary is wrongly cloning the passed Random
    • (PR#1822) Bug: .map should check canGenerate on source before calling shrink
    • (PR#1821) Bug: mixedCase should only call context-based shrinkers for the string
    • (PR#1837) Bug: maxCount of 0 was overriden to 5 in lorem instead of being rejected
    • ๐Ÿ— (PR#1856) Bug: Build reverse-mapping built by mapToConstant for node 10
    • (PR#1910) Bug: Stricter unmapper for dictionary to prevent unmapping unrelated values
    • (PR#1914) Bug: option can now properly shrink without any context (incl. to nil)
    • (PR#1647) CI: Stricter conditions to trigger workflow on push
    • (PR#1663) CI: Stricter conditions to trigger workflow on push
    • ๐Ÿ— (PR#1830) CI: Build against Node 16.x
    • ๐Ÿšš (PR#1760) Clean: Remove duplicated tests for letrec
    • ๐Ÿšš (PR#1892) Clean: Remove unneeded map in record for required keys
    • ๐Ÿšš (PR#1917) Clean: Remove unneeded checks in map for context-less shrink
    • (PR#1664) Doc: Only mark relevant titles as H* in the Readme
    • ๐Ÿšš (PR#1665) Doc: Move back to H2 for titles in the Readme
    • (PR#1697) Doc: Fic grammar
    • (PR#1883) Doc: Rework PR template
    • โœ๏ธ (PR#1907) Doc: Fix typos in naming for describe on nat
    • โšก๏ธ (PR#1906) Doc: Update mug.svg to be aligned with logo.svg
    • (PR#1911) Doc: Fit svg to mug.svg
    • (PR#1919) Doc: Fix typo in PR template
    • (PR#1915) Doc: Document how to extend fast-check with NextArbitrary
    • โšก๏ธ (PR#1920) Doc: Update outdated links in AdvancedArbitraries.md
    • ๐Ÿšš (PR#1709) Move: Move integer arbitraries into /arbitrary
    • ๐Ÿšš (PR#1715) Move: Move bigint arbitraries into /arbitrary
    • ๐Ÿšš (PR#1716) Move: Move array arbitraries into /arbitrary
    • ๐Ÿšš (PR#1727) Move: Move frequency arbitraries into /arbitrary
    • ๐Ÿšš (PR#1739) Move: Move tuple arbitraries into /arbitrary
    • ๐Ÿšš (PR#1743) Move: Move letrec arbitrary into /arbitrary
    • ๐Ÿšš (PR#1744) Move: Move memo arbitrary into /arbitrary
    • ๐Ÿšš (PR#1748) Move: Move constant arbitraries into /arbitrary
    • ๐Ÿšš (PR#1763) Move: Move clone arbitraries into /arbitrary
    • ๐Ÿšš (PR#1761) Move: Move stream arbitraries into /arbitrary
    • ๐Ÿšš (PR#1779) Move: Move mixedCase arbitrary into /arbitrary
    • โฑ (PR#1786) Move: Move scheduler arbitrary into /arbitrary
    • ๐Ÿšš (PR#1798) Move: Move char arbitraries into /arbitrary
    • ๐Ÿšš (PR#1801) Move: Move boolean arbitrary into /arbitrary
    • ๐Ÿšš (PR#1802) Move: Move string arbitraries into /arbitrary
    • ๐Ÿšš (PR#1831) Move: Move date arbitrary into /arbitrary
    • ๐Ÿšš (PR#1832) Move: Extract internal mapper into its own file
    • ๐Ÿšš (PR#1834) Move: Move mapToConstant arbitrary into /arbitrary
    • ๐Ÿšš (PR#1835) Move: Move lorem arbitrary into /arbitrary
    • ๐Ÿšš (PR#1839) Move: Move ip arbitraries into /arbitrary
    • ๐Ÿšš (PR#1840) Move: Move dictionary arbitraries into /arbitrary
    • ๐Ÿšš (PR#1887) Move: Move ip arbitraries into /arbitrary
    • ๐Ÿšš (PR#1889) Move: Move typed-arrays arbitraries into /arbitrary
    • ๐Ÿšš (PR#1890) Move: Move record arbitrary into /arbitrary
    • ๐Ÿ”จ (PR#1691) Refactor: Migrate tuple to NextArbitrary
    • ๐Ÿ”จ (PR#1701) Refactor: Migrate memo to NextArbitrary
    • ๐Ÿ”จ (PR#1702) Refactor: Migrate letrec to NextArbitrary
    • ๐Ÿ”จ (PR#1704) Refactor: Simplify letrec initial construction
    • ๐Ÿ”จ (PR#1705) Refactor: Migrate integer/bigint/double to NextArbitrary
    • ๐Ÿ”จ (PR#1706) Refactor: Migrate array/set to NextArbitrary
    • ๐Ÿ”จ (PR#1707) Refactor: Migrate frequency to NextArbitrary
    • ๐Ÿ”จ (PR#1714) Refactor: Remove unneeded if-branch in shrinker for integer
    • ๐Ÿ”จ (PR#1728) Refactor: Remove unneeded if-branch in shrinker for bigint
    • ๐Ÿ”จ (PR#1740) Refactor: Migrate missing snippets to our new APIs
    • ๐Ÿ”จ (PR#1742) Refactor: Simplify internal implementation of memo
    • ๐Ÿ”จ (PR#1746) Refactor: Migrate constant to NextArbitrary
    • ๐Ÿ”จ (PR#1747) Refactor: Migrate clone to NextArbitrary
    • ๐Ÿ”จ (PR#1757) Refactor: Migrate infiniteStream to NextArbitrary
    • ๐Ÿ”จ (PR#1762) Refactor: Migrate scheduler to NextArbitrary
    • ๐Ÿ”จ (PR#1764) Refactor: Migrate mixedCase to NextArbitrary
    • ๐Ÿ”จ (PR#1891) Refactor: Always use shared-partial record implementation for record
    • ๐Ÿ”จ (PR#1918) Refactor: Enforce explicit context-passing for NextArbitrary and related
    • ๐Ÿš€ (PR#1916) Rename: Rename canGenerate into canShrinkWithoutContext before 1st release
    • โœ… (PR#1668) Test: Add non-regression for filter/map/chain
    • โœ… (PR#1669) Test: Add non-regression for context
    • โœ… (PR#1694) Test: Add more non-regression tests on recursive structures
    • โœ… (PR#1695) Test: Rework testFunc for non-regression tests
    • โšก๏ธ (PR#1700) Test: Update snapshots for letrec due to migration of tuple
    • โœ… (PR#1711) Test: Rewrite tests dealing with integer
    • โœ… (PR#1729) Test: Rewrite tests dealing with bigInt
    • โœ… (PR#1735) Test: Rewrite tests dealing with frequency
    • โœ… (PR#1741) Test: Rewrite tests dealing with tuple
    • โœ… (PR#1745) Test: Rewrite tests dealing with letrec
    • โœ… (PR#1751) Test: Rewrite tests dealing with constant
    • โœ… (PR#1775) Test: FIX Assumptions in tests related to ConstantArbitrary
    • โœ… (PR#1781) Test: Rewrite tests dealing with clone
    • โœ… (PR#1782) Test: Rewrite tests dealing with infiniteStream
    • โฑ (PR#1788) Test: Rewrite tests dealing with scheduler
    • โœ… (PR#1881) Test: Adapt inputs for wrongly defined property on date
    • โœ… (PR#1886) Test: Fix wrongly written isCorrect in tests on dictionary
    • โœ… (PR#1923) Test: Integer spec was asking if integer can produce -0
    • โœ… (PR#1922) Test: Reduce duplication of assertions on NextArbitrary