The hstest package
hstest looks through all Haskell source files in the current directory (by default), runs all properties via QuickCheck 1 (properties must have a name that starts prop_), and runs all tests via HUnit (tests must have a name that starts test_).
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
Properties
| Versions | 0.0.0, 0.0.1 |
|---|---|
| Dependencies | base (≥4.0.0 & <4.3), directory (≥1.0.0 & <1.1), filepath (≥1.1.0 & <1.2), ghc (≥6.10.1 & <6.12), ghc-paths (≥0.1.0 & <0.2), HUnit (≥1.2.0 & <1.3), mtl (≥1.1.0 & <1.2), QuickCheck (≥1.2.0.0 & <1.3), random (≥1.0.0 & <1.1) or base (≥4.0.0 & <4.3), directory (≥1.0.0 & <1.1), filepath (≥1.1.0 & <1.2), ghc (≥6.12.1 & <6.14), ghc-paths (≥0.1.0 & <0.2), HUnit (≥1.2.0 & <1.3), mtl (≥1.1.0 & <1.2), QuickCheck (≥1.2.0.0 & <1.3), random (≥1.0.0 & <1.1) |
| License | BSD3 |
| Copyright | © Dave Hinton, 2010; portions © Koen Claessen |
| Author | Dave Hinton |
| Maintainer | Dave Hinton <beakerchu@googlemail.com> |
| Stability | alpha |
| Category | Testing |
| Home page | http://bitbucket.org/dave4420/hstest/wiki/Home |
| Bug tracker | http://bitbucket.org/dave4420/hstest/issues?status=new&status=open |
| Executables | hstest |
| Upload date | Tue Jun 15 01:25:57 UTC 2010 |
| Uploaded by | DaveHinton |
Downloads
- hstest-0.0.1.tar.gz (Cabal source package)
- package description (included in the package)