Releases: fscheck/FsCheck
3.0.1
3.0.0
-
Fix stamp missing for final test. (by Calum Sieppert)
-
FsCheck.NUnit: updated to NUnit 4. (with David Naylor)
-
FsCheck.NUnit: implement PropertiesAttribute. (by Oleksandr Bogomaz)
-
FsCheck.NUnit: handle NUnit's signalling exceptions. (by Oleksandr Bogomaz)
-
FsCheck.Xunit: fixed MissingMethodException caused by integration issue with xunit 2.9.x.
3.0.0-rc3
- Breaking change: confusingly named
StringNoNnulls
is renamed toStringNoNullChar
. - Breaking change: The operators
|@
,@|
and%>
are removed. Please useProp.label
instead. - Added more
ForAll
overloads for variousTask
types. - The collections types
NonEmptySet
,NonEmptyArray
andFixedLengthArray
now implementIEnnumerable
to avoid a call toGet
in common scenarios. - Enabled source linking and deterministic builds. (by Patrick Stevens)
3.0.0-rc2
-
Negative decimals are now also generated. (by Stephen Smith)
-
Relax FsCheck.Xunit's restriction on xUnit versions. (by Tom Rijnbeek)
-
Made
Gen.choose64
public. -
Remove dependency on FAKE and paket in favor of standard .NET tools. (by Patrick Stevens)cription of the release
3.0.0-rc1
-
Enable properties that return
Task<T>
. (by Mark Seemann) -
Includes all changes up to 2.16.6.
2.16.6
Added Map and Return methods to make FsCheck more F#+ friendly. (by Gustavo Leon)
2.16.5
Improved C# record type generation - previously no values for some properties were not generated.
3.0.0-beta2
Fixed bug that caused exceptions not to be propagated to output correctly.
Added a few missing methods in Fluent.Arbitrary
.
Add a few missing Prop.ForAll
overloads.
Includes changes in 2.16.4.
2.16.4
Fixed display issue affecting custom F# exceptions.
Prop.throws
now fails the test if an unexpected exception is thrown.
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.