module Spec.Semigroup
( testSemigroup
, testCommutativeSemigroup
, testExponentialSemigroup
, testIdempotentSemigroup
, testRectangularBandSemigroup
) where
import Hedgehog.Classes
import Data.Monoid (Sum(..))
import Hedgehog (Gen)
import qualified Hedgehog.Gen as Gen
import qualified Hedgehog.Range as Range
testSemigroup :: [(String, [Laws])]
testSemigroup = [("Maybe", listMaybe)]
listMaybe :: [Laws]
listMaybe = map ($ genMaybe) [semigroupLaws, commutativeSemigroupLaws]
genMaybe :: Gen (Maybe (Sum Int))
genMaybe = Gen.maybe (fmap Sum $ Gen.int Range.constantBounded)
testCommutativeSemigroup :: [(String, [Laws])]
testCommutativeSemigroup = []
testExponentialSemigroup :: [(String, [Laws])]
testExponentialSemigroup = []
testIdempotentSemigroup :: [(String, [Laws])]
testIdempotentSemigroup = []
testRectangularBandSemigroup :: [(String, [Laws])]
testRectangularBandSemigroup = []