HCL-1.7.1: test/Spec/MonadPlus.hs
module Spec.MonadPlus (tests) where
import Control.Monad
import Test.HUnit
import System.Console.HCL
tests = TestLabel "MonadPlus" $ TestList
[ mzeroTest
, mplusTests
]
mzeroTest = TestLabel "mzero" $ TestCase $ do
val <- runRequest mzero
assertEqual "" Nothing (val :: Maybe ())
mplusTests = TestLabel "mplus" $ TestList $ map mplusTest
[ ( "both pass", makeReq 1, makeReq 2, Just 1 )
, ( "first fails", reqFail, makeReq 2, Just 2 )
, ( "first errors", err, makeReq 2, Just 2 )
, ( "second fails", makeReq 1, reqFail, Just 1 )
, ( "second errors", makeReq 1, err, Just 1 )
, ( "both fail", reqFail, reqFail, Nothing )
]
mplusTest (label, x, y, expect) = TestLabel label $ TestCase $ do
val <- runRequest $ x `mplus` y
assertEqual "" expect val
err = Request $ fail ""