module Test.Data.Monoid where import Test.QuickCheck (TestGroup(..), TestResult, quickCheck) import Prelude import Data.Monoid (mempty) import Data.Ordering (Ordering(..)) propList :: [Int]->Bool propList xs = (xs <> mempty) == (mempty <> xs) && (xs <> mempty) == xs propUnit :: Bool propUnit = ((unit <> mempty) == (mempty <> unit)) && (unit <> mempty) == unit propOrdering1 :: Bool propOrdering1 = (EQ <> mempty) == (mempty <> EQ) && (EQ <> mempty) == EQ propOrdering2 :: Bool propOrdering2 = (LT <> mempty) == (mempty <> LT) && (LT <> mempty) == LT propOrdering3 :: Bool propOrdering3 = (GT <> mempty) == (mempty <> GT) && (GT <> mempty) == GT test :: TestGroup (Integer -> IO TestResult) test = Exe [ quickCheck "list" propList ,quickCheck "unit" propUnit ,quickCheck "Ordering1" propOrdering1 ,quickCheck "Ordering2" propOrdering2 ,quickCheck "Ordering3" propOrdering3 ]