packages feed

HUnit-1.2.4.2: tests/HUnitTestOptimize.hs

-- HUnitTestOptimize.hs
--
-- The purpose of this file is to test whether certain issues occur with optimization.
-- It should be built and run with each level of optimization.  I.e., -O0, -O1, -O2

module Main (main) where

import Control.Monad (unless)
import Test.HUnit

simpleTestRunner :: Test -> IO Counts
simpleTestRunner t = do 
    (counts', _) <- runTestText nullAccum t
    return counts'
    where
        nullAccum = PutText (\ _ _ _ -> return ()) ()

main :: IO Counts
main = do
    counts2 <- simpleTestRunner $ TestList [ 
        True ~=? True,
        False ~=? True,
        TestCase $ assertEqual "both true" True True,
        TestCase $ assertEqual "false true" False True,
        TestCase $ assertEqual "fa" False True,
        TestCase $ assertEqual "f" False True,
        TestCase $ (False @?= True),
        TestCase $ unless (False == True) (assertFailure "f")
        ]
    counts3 <- runTestTT $ TestList [
        TestCase $ assertEqual "Number of cases" (cases counts2) 8,
        TestCase $ assertEqual "Number of cases tried" (tried counts2) 8,
        TestCase $ assertEqual "Number of failures" (failures counts2) 6
        ]
    putStrLn "There should be 3 cases, 3 tried, and 0 errors and 0 failures."
    return counts3