{-# LANGUAGE PatternGuards, ScopedTypeVariables, RecordWildCards, ViewPatterns #-} module Test.Util( Result(..), pass, failure, result, results, progress, failed ) where import Data.Monoid data Result = Result {resultFailures :: Int, resultTotal :: Int} pass :: Result pass = Result 0 1 failure :: Result failure = Result 1 1 result :: Bool -> Result result x = if x then pass else failure results :: IO [Result] -> IO Result results = fmap mconcat instance Monoid Result where mempty = Result 0 0 mappend (Result f1 t1) (Result f2 t2) = Result (f1+f2) (t1+t2) progress :: IO () progress = putChar '.' failed :: [String] -> IO () failed xs = putStrLn $ unlines $ "" : xs