hans-3.0.2: tests/Tests/Utils.hs
module Tests.Utils where
import Test.QuickCheck
import Data.Serialize (Putter,Get,runGet,runPut)
encodeDecodeIdentity :: (Eq a, Show a) => Putter a -> Get a -> Gen a -> Property
encodeDecodeIdentity put get gen =
forAll gen $ \ a ->
case runGet get (runPut (put a)) of
Right a' -> a === a'
Left str -> property False
showReadIdentity :: (Eq a, Show a) => (a -> ShowS) -> ReadS a -> Gen a -> Property
showReadIdentity sw rd gen =
forAll gen $ \ a ->
case rd (sw a "") of
[(a',_)] -> a === a'
_ -> property False