Stability | experimental |
---|---|

Maintainer | boriss@gmail.com |

Safe Haskell | None |

Test.Simple is yet another testing library for Haskell. It has testing primitives familiar to recovering Perl programmers :).

Here is example suitable for cabal test-suite integration. Note that TemplateHaskell usage is optional and is needed for test failure locations only.

{-# LANGUAGE TemplateHaskell #-} import Test.Simple import Control.Monad main :: IO () main = testSimpleMain $ do plan 7 ok True is 1 1 isnt "a" "b" like "abcd" "bc" unlike "a" "b" diag "Successful so far, failures follow ..." $loc >> ok False -- location will be recorded is "a" "b" >>= guard diag "I am not being called" -- not reached because of the guard: MonadPlus FTW!

- data TestSimpleT m a
- class Likeable a b where
- testSimpleMain :: MonadIO m => TestSimpleT m a -> m ()
- plan :: Monad m => Int -> TestSimpleT m ()
- ok :: Monad m => Bool -> TestSimpleT m Bool
- isnt :: (Eq a, Show a, Monad m) => a -> a -> TestSimpleT m Bool
- is :: (Eq a, Show a, Monad m) => a -> a -> TestSimpleT m Bool
- like :: (Show a, Show b, Likeable a b, Monad m) => a -> b -> TestSimpleT m Bool
- unlike :: (Show a, Show b, Likeable a b, Monad m) => a -> b -> TestSimpleT m Bool
- loc :: Q Exp
- diag :: Monad m => String -> TestSimpleT m ()

# Types

data TestSimpleT m a Source

Test.Simple is implemented as monad transformer.

MonadTrans TestSimpleT | |

Monad m => MonadState TSState (TestSimpleT m) | |

Monad m => Monad (TestSimpleT m) | |

Functor m => Functor (TestSimpleT m) | |

Monad m => MonadPlus (TestSimpleT m) | |

MonadIO m => MonadIO (TestSimpleT m) |

# Main

testSimpleMain :: MonadIO m => TestSimpleT m a -> m ()Source

Runs `TestSimpleT`

transformer in `IO`

. Outputs results in TAP format.
Exits with error on test failure.

Note, that it was meant for easy integration with exitcode-stdio-1.0 cabal testing.
Future versions of this library will probably include other, `IO`

independent, test running
functions.

# Plan

plan :: Monad m => Int -> TestSimpleT m ()Source

Sets expected number of tests. Running more or less tests is considered failure. Note, that plans are composable, e.g:

(plan 1 >> ok True) >> (plan 1 >> ok True)

will expect 2 tests.

# Test functions

unlike :: (Show a, Show b, Likeable a b, Monad m) => a -> b -> TestSimpleT m BoolSource

Is `a`

unlike `b`

?

# Diagnostics

Records current location to output in case of failures. Necessary caveat: failing later without updating location produces the last location recorded.