hstest: Tests properties in specified modules via QuickCheck; uses GHC api for speed

[ bsd3, program, testing ] [ Propose Tags ]

hstest looks through all Haskell source files in the current directory (by default), finds all properties to test (properties must have a name that starts prop_), and runs them via QuickCheck.

For example, suppose you have this Haskell source file called mysort.hs:

mySort xs = ... -- a function you wish to test (definition elided)

prop_lengthStaysTheSame xs = length xs == length (mySort xs)
prop_sumStaysTheSame xs = sum xs == sum (mySort xs)
prop_lowestElementAtStart, prop_highestElementAtEnd :: [Int] -> Bool
prop_lowestElementAtStart xs = not (null xs) ==> minimum xs = head (mySort xs)
prop_highestElementAtEnd xs = not (null xs) ==> maximum xs = last (mySort xs)

Then to check all these tests, you run

$ hstest
Failed prop_highestElementAtEnd:
 *  [-3,2,-2]
mysort.hs: Failed 1 property, passed 3 properties

Oops! Fix mySort and try again:

$ hstest
mysort.hs: Passed 4 properties
Versions [faq] 0.0.0, 0.0.1
Dependencies base (>=4.0.0 && <4.2), directory (>=1.0.0 && <1.1), ghc (>=6.10.1 && <6.12), ghc-paths (>=0.1.0 && <0.2), mtl (>=1.1.0 && <1.2), QuickCheck (>=1.2.0.0 && <1.3), random (>=1.0.0 && <1.1) [details]
License BSD-3-Clause
Copyright © Dave Hinton, 2010; portions © Koen Claessen
Author Dave Hinton
Maintainer Dave Hinton <beakerchu@googlemail.com>
Category Testing
Home page http://bitbucket.org/dave4420/hstest/wiki/Home
Uploaded by DaveHinton at 2010-05-22T23:26:22Z
Distributions NixOS:0.0.1
Executables hstest
Downloads 1454 total (3 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs not available [build log]
All reported builds failed as of 2016-12-29 [all 5 reports]

Downloads

Maintainer's Corner

For package maintainers and hackage trustees