genvalidity-hspec-binary 0.0.0.0 → 0.1.0.0
raw patch · 3 files changed
+57/−54 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.Binary: binarySpecOnGen :: forall a. (Show a, Eq a, Typeable a, Binary a) => Gen a -> String -> Spec
+ Test.Validity.Binary: binarySpecOnGen :: forall a. (Show a, Eq a, Typeable a, Binary a) => Gen a -> String -> (a -> [a]) -> Spec
- Test.Validity.Binary: encodeAndDecodeAreInversesOnGen :: (Show a, Eq a, Binary a) => Gen a -> Property
+ Test.Validity.Binary: encodeAndDecodeAreInversesOnGen :: (Show a, Eq a, Binary a) => Gen a -> (a -> [a]) -> Property
- Test.Validity.Binary: neverFailsToEncodeOnGen :: (Show a, Binary a) => Gen a -> Property
+ Test.Validity.Binary: neverFailsToEncodeOnGen :: (Show a, Binary a) => Gen a -> (a -> [a]) -> Property
Files
- genvalidity-hspec-binary.cabal +27/−26
- src/Test/Validity/Binary.hs +29/−27
- test/Test/Validity/BinarySpec.hs +1/−1
genvalidity-hspec-binary.cabal view
@@ -1,29 +1,35 @@-name: genvalidity-hspec-binary-version: 0.0.0.0-synopsis: Standard spec's for binary-related Instances-description: Standard spec's for cereal-related Instances, see https://hackage.haskell.org/package/binary.-homepage: https://github.com/NorfairKing/validity#readme-license: MIT-license-file: LICENSE-author: Nick Van den Broeck-maintainer: syd.kerckhove@gmail.com-copyright: 2017 Tom Sydney Kerckhove-category: Testing-build-type: Simple-extra-source-files: README.md-cabal-version: >=1.10+name: genvalidity-hspec-binary+version: 0.1.0.0+cabal-version: >=1.10+build-type: Simple+license: MIT+license-file: LICENSE+copyright: 2017 Tom Sydney Kerckhove+maintainer: syd.kerckhove@gmail.com+homepage: https://github.com/NorfairKing/validity#readme+synopsis: Standard spec's for binary-related Instances+description:+ Standard spec's for cereal-related Instances, see https://hackage.haskell.org/package/binary.+category: Testing+author: Nick Van den Broeck+extra-source-files:+ README.md +source-repository head+ type: git+ location: https://github.com/NorfairKing/validity+ library exposed-modules: Test.Validity.Binary build-depends: base >=4.9 && <=5,- genvalidity-hspec >=0.3 && <0.5,- genvalidity >=0.3 && <0.4,- hspec,+ QuickCheck -any, binary >=0.5 && <0.9,- QuickCheck,- deepseq >=1.4 && <1.5+ deepseq >=1.4 && <1.5,+ genvalidity >=0.4 && <0.5,+ genvalidity-hspec >=0.5 && <0.6,+ hspec -any default-language: Haskell2010 hs-source-dirs: src/ ghc-options: -Wall@@ -38,21 +44,16 @@ default-language: Haskell2010 hs-source-dirs: test ghc-options: -threaded- test-suite genvalidity-hspec-binary-test type: exitcode-stdio-1.0 main-is: Spec.hs build-depends: base -any,- genvalidity >=0.3 && <0.4,+ genvalidity -any, genvalidity-hspec-binary -any,- hspec+ hspec -any default-language: Haskell2010 hs-source-dirs: test/ other-modules: Test.Validity.BinarySpec ghc-options: -threaded -rtsopts -with-rtsopts=-N -Wall--source-repository head- type: git- location: https://github.com/NorfairKing/validity
src/Test/Validity/Binary.hs view
@@ -33,7 +33,7 @@ binarySpecOnValid :: forall a. (Show a, Eq a, Typeable a, GenValid a, Binary a) => Spec-binarySpecOnValid = binarySpecOnGen (genValid @a) "valid"+binarySpecOnValid = binarySpecOnGen (genValid @a) "valid" shrinkValid -- | Standard test spec for properties of 'Binary'-related functions for unchecked values --@@ -43,7 +43,7 @@ binarySpec :: forall a. (Show a, Eq a, Typeable a, GenUnchecked a, Binary a) => Spec-binarySpec = binarySpecOnGen (genUnchecked @a) "unchecked"+binarySpec = binarySpecOnGen (genUnchecked @a) "unchecked" shrinkUnchecked -- | Standard test spec for properties of 'Binary'-related functions for arbitrary values --@@ -53,19 +53,20 @@ binarySpecOnArbitrary :: forall a. (Show a, Eq a, Typeable a, Arbitrary a, Binary a) => Spec-binarySpecOnArbitrary = binarySpecOnGen (arbitrary @a) "arbitrary"+binarySpecOnArbitrary = binarySpecOnGen (arbitrary @a) "arbitrary" shrink -- | Standard test spec for properties of 'Binary'-related functions for a given generator (and a name for that generator). -- -- Example usage: ----- > binarySpecOnGen (genListOf $ pure 'a') "sequence of 'a's"+-- > binarySpecOnGen (genListOf $ pure 'a') "sequence of 'a's" (const []) binarySpecOnGen :: forall a. (Show a, Eq a, Typeable a, Binary a) => Gen a -> String+ -> (a -> [a]) -> Spec-binarySpecOnGen gen genname =+binarySpecOnGen gen genname s = parallel $ do let name = nameOf @a describe ("Binary " ++ name ++ " (" ++ genname ++ ")") $ do@@ -77,7 +78,7 @@ , "\"" ++ genname , name ++ "\"" ]) $- neverFailsToEncodeOnGen gen+ neverFailsToEncodeOnGen gen s describe ("decode :: " ++ name ++ " -> Data.ByteString.Lazy.ByteString") $ it@@ -86,34 +87,35 @@ , "\"" ++ 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, Binary 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, Binary a) => Gen a -> (a -> [a]) -> Property+neverFailsToEncodeOnGen gen s =+ forAllShrink gen s $ \(a :: a) -> evaluate (deepseq (Binary.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, Binary a) => Gen a -> Property-encodeAndDecodeAreInversesOnGen gen =- forAll gen $ \(a :: a) ->+-- prop> encodeAndDecodeAreInversesOnGen @Bool arbitrary shrinkValid+-- 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, Binary a) => Gen a -> (a -> [a]) -> Property+encodeAndDecodeAreInversesOnGen gen s =+ forAllShrink gen s $ \(a :: a) -> case Binary.decodeOrFail (Binary.encode a) of Right (_, _, b) -> a `shouldBe` b- Left (_, _, s) ->+ Left (_, _, s_) -> expectationFailure $- unwords ["decode of encode is not identity:", s]+ unwords ["decode of encode is not identity:", s_]
test/Test/Validity/BinarySpec.hs view
@@ -9,7 +9,7 @@ spec :: Spec spec = do- binarySpecOnGen (genListOf $ pure 'a') "sequence of 'a's"+ binarySpecOnGen (genListOf $ pure 'a') "sequence of 'a's" (const []) binarySpecOnValid @Double binarySpec @Int binarySpecOnArbitrary @Int