Experimental features using Template Haskell.
You need to have a {-# LANGUAGE TemplateHaskell #-}
pragma in
your module for any of these to work.
- quickCheckAll :: Q Exp
- forAllProperties :: Q Exp
- polyQuickCheck :: Name -> ExpQ
- mono :: Name -> ExpQ
Testing all properties in a module.
Test all properties in the current module.
The name of the property must begin with prop_
.
Polymorphic properties will be defaulted to Integer
.
Returns True
if all tests succeeded, False
otherwise.
Using quickCheckAll
interactively doesn't work.
Instead, add a definition to your module along the lines of
runTests = $quickCheckAll
and then execute runTests
.
forAllProperties :: Q ExpSource
Test all properties in the current module, using a custom
quickCheck
function. The same caveats as with quickCheckAll
apply.
$
has type forAllProperties
(
.
An example invocation is Property
-> IO
Result
) -> IO
Bool
$
,
which does the same thing as forAllProperties
quickCheckResult
$
.
quickCheckAll
Testing polymorphic properties.
polyQuickCheck :: Name -> ExpQSource
Test a polymorphic property, defaulting all type variables to Integer
.
Invoke as $(
, where polyQuickCheck
'prop)prop
is a property.
Note that just evaluating
in GHCi will seem to
work, but will silently default all type variables to quickCheck
prop()
!