Description
LeanCheck support for the Tasty test framework.
Description
LeanCheck support for the Tasty test framework.
This package can be used to incorporate LeanCheck tests into Tasty test suites.
Please see the Haddock documentation and README for more details.
README.md
tasty-leancheck: LeanCheck support for Tasty
LeanCheck support for the Tasty test framework. Tasty and healthy tests.
Installing
$ cabal install tasty-leancheck
Example
(This example is intentionally similar to Tasty's official example.)
Here's how your test.hs
might look like:
import Test.Tasty
import Test.Tasty.LeanCheck as LC
import Data.List
main :: IO ()
main = defaultMain tests
tests :: TestTree
tests = testGroup "Test properties checked by LeanCheck"
[ LC.testProperty "sort == sort . reverse" $
\list -> sort (list :: [Int]) == sort (reverse list)
, LC.testProperty "Fermat's little theorem" $
\x -> ((x :: Integer)^7 - x) `mod` 7 == 0
-- the following property do not hold
, LC.testProperty "Fermat's last theorem" $
\x y z n ->
(n :: Integer) >= 3 LC.==> x^n + y^n /= (z^n :: Integer)
]
And here is the output for the above program:
$ ./test
Test properties checked by LeanCheck
sort == sort . reverse: OK
+++ OK, passed 200 tests.
Fermat's little theorem: OK
+++ OK, passed 200 tests.
Fermat's last theorem: FAIL
*** Failed! Falsifiable (after 71 tests):
0 0 0 3
1 out of 3 tests failed (0.00s)
Options
The tasty-leancheck provider has only one option, --leancheck-tests
:
$ ./test --leancheck-tests 10
Test properties checked by LeanCheck
sort == sort . reverse: OK
+++ OK, passed 10 tests.
Fermat's little theorem: OK
+++ OK, passed 10 tests.
Fermat's last theorem: OK
+++ OK, passed 10 tests.
All 3 tests passed (0.00s)