easytest: Simple, expressive testing library
This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.
Warnings:
- 'ghc-options: -O2' is rarely needed. Check that it is giving a real benefit and not just imposing longer compile times on your users.
EasyTest is a simple testing toolkit, meant to replace most uses of QuickCheck, SmallCheck, HUnit, and frameworks like Tasty, etc. Here's an example usage:
module Main where import EasyTest import Control.Applicative import Control.Monad suite :: Test () suite = tests [ scope "addition.ex1" $ expect (1 + 1 == 2) , scope "addition.ex2" $ expect (2 + 3 == 5) , scope "list.reversal" . fork $ do -- generate lists from size 0 to 10, of Ints in (0,43) -- shorthand: listsOf [0..10] (int' 0 43) ns <- [0..10] `forM` \n -> replicateM n (int' 0 43) ns `forM_` \ns -> expect (reverse (reverse ns) == ns) -- equivalent to `scope "addition.ex3"` , scope "addition" . scope "ex3" $ expect (3 + 3 == 6) , scope "always passes" $ do note "I'm running this test, even though it always passes!" ok -- like `pure ()`, but records 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 = runOnly "addition" suite
This generates the output:
Randomness seed for this run is 5104092164859451056 Raw test output to follow ... ------------------------------------------------------------ OK addition.ex1 OK addition.ex2 OK addition.ex3 ------------------------------------------------------------ ✅ 3 tests passed, no failures! 👍 🎉
The idea here is to write tests with ordinary Haskell code, with control flow explicit and under programmer control.
Properties
Versions | 0.1, 0.1.1, 0.2, 0.2.1, 0.2.1, 0.3 |
---|---|
Change log | CHANGES.md |
Dependencies | async (>=2.1 && <=2.3), base (>=4.8 && <=5), call-stack (>=0.1), containers (>=0.4.0 && <0.7), mtl (>=2.0.1 && <2.3), random (>=1.1 && <2), semigroups (>=0.18 && <0.19), stm (>=2.4 && <3), text (>=1.2 && <1.3), transformers (>=0.4.2) [details] |
License | MIT |
Copyright | Copyright (C) 2017-2018 Joel Burget, Copyright (C) 2016 Paul Chiusano and contributors |
Author | Joel Burget, Paul Chiusano |
Maintainer | Joel Burget <joelburget@gmail.com> |
Category | Testing |
Home page | https://github.com/joelburget/easytest |
Bug tracker | https://github.com/joelburget/easytest/issues |
Source repo | head: git clone git@github.com:joelburget/easytest.git |
Uploaded | by joelb at 2018-10-24T18:56:38Z |
Modules
[Index] [Quick Jump]
Flags
Manual Flags
Name | Description | Default |
---|---|---|
optimized | Disabled | |
quiet | Disabled |
Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info
Downloads
- easytest-0.2.1.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
Package maintainers
For package maintainers and hackage trustees