1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
module Spec.Foldable (testFoldable) where
import Hedgehog
import Hedgehog.Classes
import Data.Set (Set)
import qualified Data.Set as Set
--import qualified Data.List as List
--import qualified Hedgehog.Gen as Gen
--import qualified Hedgehog.Range as Range
testFoldable :: [(String, [Laws])]
testFoldable =
[ ("Set", listSet)
-- , ("BadList", listBadList)
]
listSet :: [Laws]
listSet = [foldableLaws genSet]
genSet :: Gen a -> Gen (Set a)
genSet gen = do
x <- gen
pure (Set.singleton x)
{-
listBadList :: [Laws]
listBadList = [foldableLaws genBadList]
genBadList :: Gen a -> Gen (BadList a)
genBadList gen = BadList <$> Gen.list (Range.linear 0 20) gen
newtype BadList a = BadList [a]
deriving (Eq, Show)
instance Foldable BadList where
foldMap f (BadList x) = foldMap f x
foldl' = List.foldl
-}
|