Releases: fscheck/FsCheck
3.0.0-beta1
Backwards incompatible*: Refactor and split of the Gen
and Arbitrary
APIs into FsCheck.FSharp
and FsCheck.Fluent
. This is a first step in splitting the entire API into a functional (for F# consumers) and fluent (for C# and VB.NET consumers) interface. This should be clearer for both kinds of consumers.
By and large, if you are an F# user, now open FsCheck.FSharp
in addition to open FsCheck
. If you are a C# or VB.NET user, add using FsCheck.Fluent
.
Backwards incompatible*: redesigned API for per-type Arbitrary instance discovery and lookup. There is no longer a single global, mutable map of type to Arbitrary instances, instead there are any number of immutable IArbMap
s that can be configured at your leisure, and set via Config.WithArbitrary
on the test.
Detailed changes to FsCheck.FSharp.Gen
: Added RequireQualifiedAccess
. Added apply
and bind
. Renamed collect
and sequence
to collect/sequenceToList/Array/Seq
for clarity. Removed unzip
and unzip3
- their implementation is problematic, and it's hard to see a use case for them. Removed subListOfToIlist
, subListOfArr
- these returned IList<'T>
types. Untupled rows,cols
arguments in array2DOfDim
.
Detailed changes to FsCheck.Fluent.Gen
: Split into non-extension methods on Gen
and extension methods on Gen<T>
type in GenExtensions
. Removed Gen.Apply
- not useful without partial application. Two
, Three
, Four
and Zip
now output ValueTuples, which is idiomatic in modern C#, and are only visible as extension methods on Gen<T>
. Removed the overloads of Zip
with arity 3. Changed the return type of methods that returned IList<T>
previously to List<T>
. Split the Sample
method with optional arguments in three overloads, this is better for backwards compatibilty going forward.
Detailed changes to FsCheck.FSharp.Arb
: Removed fromGenShrinkFunc
. Removed register
, registerByType
, from
, generate
and shrink
- these are replaced by functions on ArbMap
, resp. mergeWith
, mergeWithType
, arbitrary
and generate
. Made Arb.Default
internal. Default types should now be looked up using ArbMap
, e.g. ArbMap.defaults |> ArbMap.arbitrary<list<int>>
.
Detailed changes to FsCheck.Fluent.Arb
: Removed extension method ToArbitrary
that took an F# function as argument for the shrinker. Renamad Arb.From
methods to Arbitrary.From
- C# does not tolerate ambiguity between using two types of the same name in the same namespace. Removed Register
, RegisterByType
, From
, Generate
and Shrink
- these are replaced by methods on ArbMap
, resp. Merge<'T>
, Merge
, ArbFor
and GeneratorFor
. Made Arb.Default
internal. Default Arbitrary types should now be looked up using ArbMap
, e.g. ArbMap.Default.ArbFor<int[]>()
.
First pass at improving XML docs for Gen API.
Fixed bug in try..with
computation expression builder.
Added support for let!...and!...
syntax in computation expression builder.
2.16.3
Allow configuration in FsCheck.Xunit.PropertiesAttribute to affect properties on nested types or modules. PropertiesAttribute on the closest enclosing type takes precedence.
Add FsCheck.Xunit.TestOutputRunner - a simple runner which just redirects output to xUnit's TestOutputHelper.
2.16.2
Support generation and shrinking of System.Collections.Immutable types via reflection.
2.16.1
Include inherited methods when registering Arbitrary instances. (by Bennie Copeland)
2.16.0
Support generating C# record types.
2.15.3
Allow shrinking private unions. (by Sander van Dijk)
Limit total number of shrink attempts to 5000, to avoid infinite loops in general, and in particular if an argument is mutated in the test.
2.15.2
Enabled FsCheck.Xunit's PropertiesAttribute
to work at assembly level. (by Laurence King)
Added UnicodeString
and UnicodeChar
generators.
2.15.1
Fixed a bug in FsCheck.Xunit: using ITestOutputHelper did not show output in Property
-attributed tests.
2.15.0
Updated NUnit to 3.13.1, and set that as the lowest allowable version in FsCheck.NUnit package. Fixed resulting incompatibility.
Since NUnit 3.13 no longer supports netstandard 1.6, removed netstandard 1.6 support from FsCheck.NUnit as well.
2.14.6
Restrict NUnit version range to versions < 3.13.1, as that introduced an incompatibility with FsCheck.NUnit.