packages feed

free-theorems-0.3.2.0: src/Tests.hs



-- | Defines functions which help to define tests.

module Tests (
    module Arbitraries
  , doTest
) where



import Test.QuickCheck

import Arbitraries



-- | Runs a test in a standardised way.
--   
--   A test must have a label which should not be longer than 75 characters.
--   Otherwise, it is truncated.

doTest :: (Arbitrary a, Show a, Testable b) => String -> (a -> b) -> IO ()
doTest name prop = do
  putStrLn (fixString 75 name ++ ":")
  putStr "   "
  quickCheckWith (stdArgs {maxSuccess = 100}) prop   -- quickCheck prop
  where
    fixString :: Int -> String -> String
    fixString len s =
      if length s <= len
        then s
        else take (len - 3) s ++ "..."