dejafu/Tests.hs
2014-12-23 15:50:25 +00:00

20 lines
654 B
Haskell

module Main (main) where
import Control.Monad (when)
import Tests.Cases
import Tests.Utils
import System.Exit (exitFailure, exitSuccess)
main :: IO ()
main = do
results <- mapM (runTest True) testCases
if and results then exitSuccess else exitFailure
runTest :: Bool -> Test -> IO Bool
runTest verbose (Test {name = name, result = result}) = do
res <- result
case res of
Pass -> when verbose (putStrLn $ "\27[32m[pass]\27[0m " ++ name) >> return True
Fail str -> putStrLn ("\27[31m[fail]\27[0m " ++ name ++ ": " ++ str) >> return False
Error str -> putStrLn ("\27[35m[error]\27[0m " ++ name ++ ": " ++ str) >> return False