Commits

Anonymous committed dd8c5c4

Copied in brief explanation from the cabal description.

  • Participants
  • Parent commits 13b94f3

Comments (0)

Files changed (1)

-== Welcome ==
-
-Welcome to your wiki! This is the default page we've installed for your convenience. Go ahead and edit it.
-
-=== Wiki features ===
-
-This wiki uses the [[http://www.wikicreole.org/|Creole]] syntax, and is fully compatible with the 1.0 specification.
-
-The wiki itself is actually a hg repository, which means you can clone it, edit it locally/offline, add images or any other file type, and push it back to us. It will be live immediately.
-
-Go ahead and try:
-
-{{{
-$ hg clone http://bitbucket.org/dave4420/hstest/wiki/
-}}}
-
-Wiki pages are normal files, with the .wiki extension. You can edit them locally, as well as creating new ones.
-
-=== Syntax highlighting ===
-
-You can also highlight snippets of text, we use the excellent [[http://www.pygments.org/|Pygments]] library.
-
-Here's an example of some Python code:
-
-{{{
-#!python
-
-def wiki_rocks(text):
-	formatter = lambda t: "funky"+t
-	return formatter(text)
-}}}
-
-You can check out the source of this page to see how that's done, and make sure to bookmark [[http://pygments.org/docs/lexers/|the vast library of Pygment lexers]], we accept the 'short name' or the 'mimetype' of anything in there.
-
-Have fun!
+= hstest
+
+{{{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':
+
+{{{
+#!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
+}}}