genvalidity-hspec-cereal 0.0.0.1 → 0.1.0.0
raw patch · 3 files changed
+46/−49 lines, 3 filesdep ~genvaliditydep ~genvalidity-hspecPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: genvalidity, genvalidity-hspec
API changes (from Hackage documentation)
- Test.Validity.Cereal: encodeAndDecodeAreInversesOnGen :: (Show a, Eq a, Serialize a) => Gen a -> Property
+ Test.Validity.Cereal: encodeAndDecodeAreInversesOnGen :: (Show a, Eq a, Serialize a) => Gen a -> (a -> [a]) -> Property
- Test.Validity.Cereal: neverFailsToEncodeOnGen :: (Show a, Serialize a) => Gen a -> Property
+ Test.Validity.Cereal: neverFailsToEncodeOnGen :: (Show a, Serialize a) => Gen a -> (a -> [a]) -> Property
- Test.Validity.Cereal: serializeSpecOnGen :: forall a. (Show a, Eq a, Typeable a, Serialize a) => Gen a -> String -> Spec
+ Test.Validity.Cereal: serializeSpecOnGen :: forall a. (Show a, Eq a, Typeable a, Serialize a) => Gen a -> String -> (a -> [a]) -> Spec
Files
- genvalidity-hspec-cereal.cabal +7/−7
- src/Test/Validity/Cereal.hs +38/−41
- test/Test/Validity/CerealSpec.hs +1/−1
genvalidity-hspec-cereal.cabal view
@@ -1,5 +1,5 @@ name: genvalidity-hspec-cereal-version: 0.0.0.1+version: 0.1.0.0 cabal-version: >=1.10 build-type: Simple license: MIT@@ -22,11 +22,11 @@ Test.Validity.Cereal build-depends: base >=4.9 && <=5,- genvalidity-hspec >=0.3 && <0.5,- genvalidity >=0.3 && <0.4,- hspec,+ genvalidity-hspec >=0.5 && <0.6,+ genvalidity >=0.4 && <0.5,+ hspec -any, cereal >=0.5 && <0.6,- QuickCheck,+ QuickCheck -any, deepseq >=1.4 && <1.5 default-language: Haskell2010 hs-source-dirs: src/@@ -47,9 +47,9 @@ main-is: Spec.hs build-depends: base -any,- genvalidity >=0.3 && <0.4,+ genvalidity -any, genvalidity-hspec-cereal -any,- hspec+ hspec -any default-language: Haskell2010 hs-source-dirs: test/ other-modules:
src/Test/Validity/Cereal.hs view
@@ -30,44 +30,43 @@ -- Example usage: -- -- > serializeSpecOnValid @Double-serializeSpecOnValid- :: forall a.- (Show a, Eq a, Typeable a, GenValid a, Serialize a)+serializeSpecOnValid ::+ forall a. (Show a, Eq a, Typeable a, GenValid a, Serialize a) => Spec-serializeSpecOnValid = serializeSpecOnGen (genValid @a) "valid"+serializeSpecOnValid = serializeSpecOnGen (genValid @a) "valid" shrinkValid -- | Standard test spec for properties of 'Serialize'-related functions for unchecked values -- -- Example usage: -- -- > serializeSpec @Int-serializeSpec- :: forall a.- (Show a, Eq a, Typeable a, GenUnchecked a, Serialize a)+serializeSpec ::+ forall a. (Show a, Eq a, Typeable a, GenUnchecked a, Serialize a) => Spec-serializeSpec = serializeSpecOnGen (genUnchecked @a) "unchecked"+serializeSpec = serializeSpecOnGen (genUnchecked @a) "unchecked" shrinkUnchecked -- | Standard test spec for properties of 'Serialize'-related functions for arbitrary values -- -- Example usage: -- -- > serializeSpecOnArbitrary @Int-serializeSpecOnArbitrary- :: forall a.- (Show a, Eq a, Typeable a, Arbitrary a, Serialize a)+serializeSpecOnArbitrary ::+ forall a. (Show a, Eq a, Typeable a, Arbitrary a, Serialize a) => Spec-serializeSpecOnArbitrary = serializeSpecOnGen (arbitrary @a) "arbitrary"+serializeSpecOnArbitrary = serializeSpecOnGen (arbitrary @a) "arbitrary" shrink -- | Standard test spec for properties of 'Serialize'-related functions for a given generator (and a name for that generator). -- -- Example usage: -- -- > serializeSpecOnGen (genListOf $ pure 'a') "sequence of 'a's"-serializeSpecOnGen- :: forall a.- (Show a, Eq a, Typeable a, Serialize a)- => Gen a -> String -> Spec-serializeSpecOnGen gen genname =+serializeSpecOnGen ::+ forall a. (Show a, Eq a, Typeable a, Serialize a)+ => Gen a+ -> String+ -> (a -> [a])+ -> Spec+serializeSpecOnGen gen genname s = parallel $ do let name = nameOf @a describe ("Serialize " ++ name ++ " (" ++ genname ++ ")") $ do@@ -78,7 +77,7 @@ , "\"" ++ genname , name ++ "\"" ]) $- neverFailsToEncodeOnGen gen+ neverFailsToEncodeOnGen gen s describe ("decode :: " ++ name ++ " -> Data.ByteString.ByteString") $ it (unwords@@ -86,34 +85,32 @@ , "\"" ++ genname , name ++ "\"" ++ "'s" ]) $- encodeAndDecodeAreInversesOnGen gen+ encodeAndDecodeAreInversesOnGen gen s -- | ----- prop> neverFailsToEncodeOnGen @Bool arbitrary--- prop> neverFailsToEncodeOnGen @Bool genUnchecked--- prop> neverFailsToEncodeOnGen @Bool genValid--- prop> neverFailsToEncodeOnGen @Int arbitrary--- prop> neverFailsToEncodeOnGen @Int genUnchecked--- prop> neverFailsToEncodeOnGen @Int genValid-neverFailsToEncodeOnGen- :: (Show a, Serialize a)- => Gen a -> Property-neverFailsToEncodeOnGen gen =- forAll gen $ \(a :: a) ->+-- prop> neverFailsToEncodeOnGen @Bool arbitrary shrink+-- prop> neverFailsToEncodeOnGen @Bool genUnchecked shrinkUnchecked+-- prop> neverFailsToEncodeOnGen @Bool genValid shrinkValid+-- prop> neverFailsToEncodeOnGen @Int arbitrary shrink+-- prop> neverFailsToEncodeOnGen @Int genUnchecked shrinkUnchecked+-- prop> neverFailsToEncodeOnGen @Int genValid shrinkValid+neverFailsToEncodeOnGen ::+ (Show a, Serialize a) => Gen a -> (a -> [a]) -> Property+neverFailsToEncodeOnGen gen s =+ forAllShrink gen s $ \(a :: a) -> evaluate (deepseq (Serialize.encode a) ()) `shouldReturn` () -- | ----- prop> encodeAndDecodeAreInversesOnGen @Bool arbitrary--- prop> encodeAndDecodeAreInversesOnGen @Bool genUnchecked--- prop> encodeAndDecodeAreInversesOnGen @Bool genValid--- prop> encodeAndDecodeAreInversesOnGen @Int arbitrary--- prop> encodeAndDecodeAreInversesOnGen @Int genUnchecked--- prop> encodeAndDecodeAreInversesOnGen @Int genValid-encodeAndDecodeAreInversesOnGen- :: (Show a, Eq a, Serialize a)- => Gen a -> Property-encodeAndDecodeAreInversesOnGen gen =- forAll gen $ \(a :: a) ->+-- prop> encodeAndDecodeAreInversesOnGen @Bool arbitrary shrink+-- prop> encodeAndDecodeAreInversesOnGen @Bool genUnchecked shrinkUnchecked+-- prop> encodeAndDecodeAreInversesOnGen @Bool genValid shrinkValid+-- prop> encodeAndDecodeAreInversesOnGen @Int arbitrary shrink+-- prop> encodeAndDecodeAreInversesOnGen @Int genUnchecked shrinkUnchecked+-- prop> encodeAndDecodeAreInversesOnGen @Int genValid shrinkValid+encodeAndDecodeAreInversesOnGen ::+ (Show a, Eq a, Serialize a) => Gen a -> (a -> [a]) -> Property+encodeAndDecodeAreInversesOnGen gen s =+ forAllShrink gen s $ \(a :: a) -> Serialize.decode (Serialize.encode a) `shouldBe` Right a
test/Test/Validity/CerealSpec.hs view
@@ -9,7 +9,7 @@ spec :: Spec spec = do- serializeSpecOnGen (genListOf $ pure 'a') "sequence of 'a's"+ serializeSpecOnGen (genListOf $ pure 'a') "sequence of 'a's" (const []) serializeSpecOnValid @Double serializeSpec @Int serializeSpecOnArbitrary @Int