test-framework-leancheck: LeanCheck support for test-framework
 
 
 

LeanCheck support for the test-framework test framework.
Installing
$ cabal install test-framework-leancheck
Example
Here’s how your test.hs might look like:
import Test.Framework
import Test.Framework.Providers.LeanCheck as LC
import Data.List
main :: IO ()
main = defaultMain tests
tests :: [Test]
tests =
  [ LC.testProperty "sort . sort == sort"
      $ \xs -> sort (sort xs :: [Int]) == sort xs
  , LC.testProperty "sort == id" -- not really, should fail
      $ \xs -> sort (xs :: [Int]) == xs
  ]
And here is the output for the above program:
$ ./eg/test
sort . sort == sort: [OK, passed 100 tests.]
sort == id: [Failed]
*** Failed! Falsifiable (after 7 tests):
[1,0]
         Properties  Total
 Passed  1           1
 Failed  1           1
 Total   2           2
Options
Use -a or --maximum-generated-tests to configure
the maximum number of tests for each property.
$ ./eg/test -a5
sort . sort == sort: [OK, passed 5 tests.]
sort == id: [OK, passed 5 tests.]
         Properties  Total      
 Passed  2           2          
 Failed  0           0          
 Total   2           2          
Since LeanCheck is enumerative,
you may want to increase the default number of tests (100).
Arbitrary rule of thumb:
- between 200 to 500 on a developer machine;
- between 1000 and 5000 on the CI.
Your mileage may vary.
Further reading