packages feed

hedgehog-classes-0.1.1.0: test/Spec/Semigroup.hs

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 = []