-- | Properties for 'Monoid' type class
module Test.QuickCheck.Property.Monoid (
module Test.QuickCheck.Property.Common
, prop_MonoidLeft
, prop_MonoidRight
, prop_MonoidIdentity
, prop_Mappend
, prop_Monoid
) where
import Data.Monoid
import Test.QuickCheck.Property.Common
import Test.QuickCheck.Property.Common.Internal
import Test.QuickCheck.Property.Generic
-- | 'mempty' is left identity
prop_MonoidLeft :: Monoid a => T a -> a -> Equal a
prop_MonoidLeft = prop_LeftIdentity mempty mappend
-- | 'mempty' is right identity
prop_MonoidRight :: Monoid a => T a -> a -> Equal a
prop_MonoidRight = prop_RightIdentity mempty mappend
-- | 'mempty' is identity
prop_MonoidIdentity :: Monoid a => T a -> a -> Equal a
prop_MonoidIdentity = prop_Identity mempty mappend
-- | 'mappend' is associative
prop_Mappend :: Monoid a => T a -> a -> a -> a -> Equal a
prop_Mappend = prop_Associative mappend
-- | All properties of monoid
prop_Monoid :: Monoid a => T a -> a -> a -> a -> Equal a
prop_Monoid = prop_GenMonoid mempty mappend