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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
module Spec.Show
( testShow
, testShowRead
) where
import Hedgehog
import Hedgehog.Classes
import qualified Hedgehog.Gen as Gen
import qualified Hedgehog.Range as Range
testShow :: [(String, [Laws])]
testShow =
[ ("E", lawsE)
, ("Int", lawsInt)
, ("Int8", lawsInt8)
, ("Int16", lawsInt16)
, ("Int32", lawsInt32)
, ("Int64", lawsInt64)
, ("Word", lawsWord)
, ("Word8", lawsWord8)
, ("Word16", lawsWord16)
, ("Word32", lawsWord32)
, ("Word64", lawsWord64)
]
testShowRead :: [(String, [Laws])]
testShowRead =
[ ("E", readLawsE)
, ("Int", readLawsInt)
, ("Int8", readLawsInt8)
, ("Int16", readLawsInt16)
, ("Int32", readLawsInt32)
, ("Int64", readLawsInt64)
, ("Word", readLawsWord)
, ("Word8", readLawsWord8)
, ("Word16", readLawsWord16)
, ("Word32", readLawsWord32)
, ("Word64", readLawsWord64)
]
lawsE, readLawsE :: [Laws]
lawsE = [showLaws genE]
readLawsE = [showReadLaws genE]
data E = E1 | E2 | E3 | E4 | E5 | E6 | E7 | E8
deriving (Eq, Show, Read, Enum, Bounded)
genE :: Gen E
genE = Gen.enumBounded
ranged :: (Bounded a, Num a) => (Range.Range a -> b) -> b
ranged f = f (Range.constantBounded)
lawsInt, lawsInt8, lawsInt16, lawsInt32, lawsInt64 :: [Laws]
lawsInt = [showLaws (ranged Gen.int)]
lawsInt8 = [showLaws (ranged Gen.int8)]
lawsInt16 = [showLaws (ranged Gen.int16)]
lawsInt32 = [showLaws (ranged Gen.int32)]
lawsInt64 = [showLaws (ranged Gen.int64)]
lawsWord, lawsWord8, lawsWord16, lawsWord32, lawsWord64 :: [Laws]
lawsWord = [showLaws (ranged Gen.word)]
lawsWord8 = [showLaws (ranged Gen.word8)]
lawsWord16 = [showLaws (ranged Gen.word16)]
lawsWord32 = [showLaws (ranged Gen.word32)]
lawsWord64 = [showLaws (ranged Gen.word64)]
readLawsInt, readLawsInt8, readLawsInt16, readLawsInt32, readLawsInt64 :: [Laws]
readLawsInt = [showReadLaws (ranged Gen.int)]
readLawsInt8 = [showReadLaws (ranged Gen.int8)]
readLawsInt16 = [showReadLaws (ranged Gen.int16)]
readLawsInt32 = [showReadLaws (ranged Gen.int32)]
readLawsInt64 = [showReadLaws (ranged Gen.int64)]
readLawsWord, readLawsWord8, readLawsWord16, readLawsWord32, readLawsWord64 :: [Laws]
readLawsWord = [showReadLaws (ranged Gen.word)]
readLawsWord8 = [showReadLaws (ranged Gen.word8)]
readLawsWord16 = [showReadLaws (ranged Gen.word16)]
readLawsWord32 = [showReadLaws (ranged Gen.word32)]
readLawsWord64 = [showReadLaws (ranged Gen.word64)]
|