| Copyright | (c) 2018 Rudy Matela |
|---|---|
| License | 3-Clause BSD (see the file LICENSE) |
| Maintainer | Rudy Matela <rudy@matela.com.br> |
| Safe Haskell | None |
| Language | Haskell2010 |
Test.Framework.Providers.LeanCheck
Description
LeanCheck support for test-framework (Test.Framework).
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
]The output for the above program is:
./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 2Use -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.
Please see the documentation of Test.LeanCheck and Test.Framework.Providers for more details.
Synopsis
- testProperty :: Testable a => TestName -> a -> Test
Documentation
testProperty :: Testable a => TestName -> a -> Test Source #
Given a Testable property, returns a test-framework test.
For example, place the following in a TestGroup list:
testProperty "sort . sort == sort" $ \xs -> sort (sort xs :: [Int]) == sort xs
You may want to import this module qualified and use LC.TestProperty
if mixing Test.LeanCheck tests
with those of other property testing libraries.