# Difference between revisions of "DocTest"

From HaskellWiki

SimonHengel (talk | contribs) |
SimonHengel (talk | contribs) |
||

Line 4: | Line 4: | ||

[http://docs.python.org/library/doctest.html doctest for Python]. | [http://docs.python.org/library/doctest.html doctest for Python]. | ||

− | == | + | ==Tutorial== |

− | Bellow is a small Haskell module | + | Bellow is a small Haskell module. The module contains source code comments. |

+ | Those comments are examples from an interactive Haskell session and demonstrate how the module is used. | ||

<haskell> | <haskell> | ||

Line 23: | Line 24: | ||

</haskell> | </haskell> | ||

− | DocTest checks if the implementation | + | With DocTest you may checks if the implementation satisfies the given examples, by typing (on your Unix shell): |

− | satisfies the given examples: | ||

<pre> | <pre> | ||

Line 33: | Line 33: | ||

Lines starting with <hask>-- ></hask> denote ''expressions''. | Lines starting with <hask>-- ></hask> denote ''expressions''. | ||

All comment lines following an expression denote the | All comment lines following an expression denote the | ||

− | ''result'' of that expression | + | ''result'' of that expression. Result is defined by what a [http://en.wikipedia.org/wiki/Read-eval-print_loop REPL] |

− | + | (e.g. ghci) prints to <hask>stdout</hask> and <hask>stderror</hask> when | |

+ | evaluating that expression. | ||

==DocTest on Hackage== | ==DocTest on Hackage== |

## Revision as of 12:00, 22 March 2009

## What is DocTest

DocTest is a small program, that checks examples in Haskell comments. It is modeled after doctest for Python.

## Tutorial

Bellow is a small Haskell module. The module contains source code comments. Those comments are examples from an interactive Haskell session and demonstrate how the module is used.

```
module Fib where
-- Examples:
--
-- > fib 10
-- 55
-- > fib 5
-- 5
fib 0 = 0
fib 1 = 1
fib n = fib (n - 1) + fib (n - 2)
```

With DocTest you may checks if the implementation satisfies the given examples, by typing (on your Unix shell):

$ doctest Fib.hs

Lines starting with `-- >`

denote *expressions*.
All comment lines following an expression denote the
*result* of that expression. Result is defined by what a REPL
(e.g. ghci) prints to `stdout`

and `stderror`

when
evaluating that expression.

## DocTest on Hackage

http://hackage.haskell.org/cgi-bin/hackage-scripts/package/DocTest