module Main where import Test.Tasty import Test.Tasty.QuickCheck import Test.Monad.Control.Checkers import Test.Monad.Cont.Checkers import Test.Monad.Except.Checkers import Test.Monad.Reader.Checkers import Test.Monad.State.Checkers import Test.Monad.Writer.Checkers main :: IO () main = defaultMain tests tests :: TestTree tests = testGroup "Tests" [ testsState , testsCont , testsExcept , testsReader , testsWriter , testsControl ] testsState :: TestTree testsState = testGroup "MonadState" [ testProperties "Normal" checkState_ , testProperties "Mutant" checkState' ] testsCont :: TestTree testsCont = testGroup "MonadCont" [ testProperties "Normal" checkCont_ ] testsExcept :: TestTree testsExcept = testGroup "MonadExcept" [ testProperties "Normal" checkExcept_ , testProperties "Mutant" checkExcept' ] testsReader :: TestTree testsReader = testGroup "MonadReader" [ testProperties "Normal" checkReader_ , testProperties "Mutant" checkReader' ] testsWriter :: TestTree testsWriter = testGroup "MonadWriter" [ testProperties "Normal" checkWriter_ , testProperties "Mutant" checkWriter' ] testsControl :: TestTree testsControl = testGroup "Monad*Control" [ testProperties name props | (name, props) <- checkControl ]