-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Simple Perl inspired testing -- -- Test.Simple provides simple, Perl inspired primitives for easy -- testing. It outputs test results in TAP format. @package test-simple @version 0.1 -- | 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!
--
module Test.Simple
-- | Test.Simple is implemented as monad transformer.
data TestSimpleT m a
-- | Is used in like, unlike tests.
class Likeable a b
isLike :: Likeable a b => a -> b -> Bool
-- | 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.
testSimpleMain :: MonadIO m => TestSimpleT m a -> m ()
-- | 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. plan :: Monad m => Int -> TestSimpleT m () -- | Is Bool ok? ok :: Monad m => Bool -> TestSimpleT m Bool -- | Are values different? isnt :: (Eq a, Show a, Monad m) => a -> a -> TestSimpleT m Bool -- | Are values equal? is :: (Eq a, Show a, Monad m) => a -> a -> TestSimpleT m Bool -- | Is a like b? like :: (Show a, Show b, Likeable a b, Monad m) => a -> b -> TestSimpleT m Bool -- | Is a unlike b? unlike :: (Show a, Show b, Likeable a b, Monad m) => a -> b -> TestSimpleT m Bool -- | Records current location to output in case of failures. Necessary -- caveat: failing later without updating location produces the last -- location recorded. loc :: Q Exp -- | Outputs diagnostics message. diag :: Monad m => String -> TestSimpleT m () instance Functor m => Functor (TestSimpleT m) instance MonadTrans TestSimpleT instance Monad m => Monad (TestSimpleT m) instance Monad m => MonadPlus (TestSimpleT m) instance Monad m => MonadState TSState (TestSimpleT m) instance MonadIO m => MonadIO (TestSimpleT m) instance Eq a => Likeable [a] [a]