Test.QuickCheck.All
Description
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()!