module Main (main) where 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 -> (if verbose then putStrLn ("\27[32m[pass]\27[0m " ++ name) else return ()) >> 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