genvalidity-bytestring-0.3.0.0: test/Data/GenValidity/ByteStringSpec.hs
module Data.GenValidity.ByteStringSpec
( spec
) where
import Control.DeepSeq
import Test.Hspec
import Test.QuickCheck
import Data.GenValidity
import Data.GenValidity.ByteString ()
import qualified Data.ByteString as SB (ByteString)
import qualified Data.ByteString.Lazy as LB (ByteString)
checkable :: (Validity t, Show t, NFData t) => Gen t -> SpecWith ()
checkable gen =
it "generates bytestrings that can be checked for validity" $
forAll gen $ \v ->
case prettyValidation v of
Left e -> deepseq e True
Right v_ -> deepseq v_ True
showable :: Show t => Gen t -> SpecWith ()
showable gen =
it "generates bytestrings that can be shown" $
forAll gen $ \v -> deepseq (show v) True
spec :: Spec
spec = do
describe "genUnchecked :: Gen SB.ByteString" $ do
checkable (genUnchecked :: Gen SB.ByteString)
-- showable (genUnchecked :: Gen SB.ByteString) DOES NOT HOLD
describe "genValid :: Gen SB.ByteString" $ do
checkable (genValid :: Gen SB.ByteString)
showable (genValid :: Gen SB.ByteString)
it "generates valid strict bytestring" $
forAll (genValid :: Gen SB.ByteString) isValid
describe "genInvalid :: Gen SB.ByteString" $ do
checkable (genInvalid :: Gen SB.ByteString)
-- showable (genInvalid :: Gen SB.ByteString) DOES NOT HOLD
it "generates invalid strict bytestring" $
forAll (genInvalid :: Gen SB.ByteString) isInvalid
describe "genUnchecked :: Gen LB.ByteString" $ do
checkable (genUnchecked :: Gen LB.ByteString)
-- showable (genUnchecked :: Gen LB.ByteString) DOES NOT HOLD
describe "genValid :: Gen LB.ByteString" $ do
checkable (genValid :: Gen LB.ByteString)
showable (genValid :: Gen LB.ByteString)
it "generates valid lazy bytestring" $
forAll (genValid :: Gen LB.ByteString) isValid
describe "genInvalid :: Gen LB.ByteString" $ do
checkable (genInvalid :: Gen LB.ByteString)
-- showable (genInvalid :: Gen LB.ByteString) DOES NOT HOLD
it "generates invalid lazy bytestring" $
forAll (genInvalid :: Gen LB.ByteString) isInvalid