fsharp-hedgehog
Hedgehog will eat all your bugs.
Hedgehog is a modern property-based testing system, in the spirit of QuickCheck. Hedgehog uses integrated shrinking, so shrinks obey the invariants of generated values by construction.
Features
- Integrated shrinking, shrinks obey invariants by construction.
- Convenient syntax for generators and properties with
gen
andproperty
expressions. - Range combinators for full control over the scope of generated numbers and collections.
Example
The root namespace, Hedgehog
, includes almost
everything you need to get started writing property tests with Hedgehog.
open Hedgehog
Once you have your import declaration set up, you can write a simple property:
let propReverse : Property<Unit> =
property {
let! xs = Gen.list (Range.linear 0 100) Gen.alpha
return xs |> List.rev |> List.rev = xs
}
You can then load the module in F# Interactive, and run it:
> Property.print propReverse
+++ OK, passed 100 tests.
More examples can be found in the tutorial.