@hackage easytest0.3
Simple, expressive testing library
Installation
Tested Compilers
Dependencies (10)
- base >=4.5 && <=5
- call-stack >=0.1
- hedgehog >=0.6 && <=0.6.1
- mtl
- profunctors
- semigroups >=0.18 && <0.19 Show all…
Dependents (2)
@hackage/hledger, @hackage/hledger-lib
EasyTest is a simple testing toolkit for unit- and property-testing. It's based on the hedgehog property-testing system. Here's an example usage:
module Main where
import EasyTest
import qualified Hedgehog.Gen as Gen
import qualified Hedgehog.Range as Range
suite :: Test
suite = tests
[ scope "addition.ex1" $ unitTest $ 1 + 1 === 2
, scope "addition.ex2" $ unitTest $ 2 + 3 === 5
, scope "list.reversal" $ property $ do
ns <- forAll $
Gen.list (Range.singleton 10) (Gen.int Range.constantBounded)
reverse (reverse ns) === ns
-- equivalent to `scope "addition.ex3"`
, scope "addition" . scope "ex3" $ unitTest $ 3 + 3 === 6
, scope "always passes" $ unitTest success -- record a success result
, scope "failing test" $ crash "oh noes!!"
]
-- NB: `run suite` would run all tests, but we only run
-- tests whose scopes are prefixed by "addition"
main :: IO Summary
main = runOnly "addition" suiteThis generates the output:
━━━ runOnly "addition" ━━━ ✓ addition.ex1 passed 1 test. ✓ addition.ex2 passed 1 test. ⚐ list.reversal gave up after 1 discard, passed 0 tests. ✓ addition.ex3 passed 1 test. ⚐ always passes gave up after 1 discard, passed 0 tests. ⚐ failing test gave up after 1 discard, passed 0 tests. ⚐ 3 gave up, 3 succeeded.
We write tests with ordinary Haskell code, with control flow explicit and under programmer control.