packages feed

genvalidity-containers 0.4.0.1 → 0.5.0.0

raw patch · 5 files changed

+83/−21 lines, 5 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Data.GenValidity.Containers: genTreeOf :: Gen a -> Gen (Tree a)
+ Data.GenValidity.Map: genStructurallyInvalidMap :: (Ord k, GenUnchecked k, GenUnchecked v) => Gen (Map k v)

Files

genvalidity-containers.cabal view
@@ -1,18 +1,19 @@--- This file has been generated from package.yaml by hpack version 0.20.0.+-- This file has been generated from package.yaml by hpack version 0.28.2. -- -- see: https://github.com/sol/hpack ----- hash: 249d5502b09fcdc73906c58d9dd5cd6253b893a42200f4e1a7d2a3e4592be478+-- hash: 4ceb99a83aa476e2b06907a031bf2c38970c3dee854c26896294c39620f4f4cb  name:           genvalidity-containers-version:        0.4.0.1+version:        0.5.0.0 synopsis:       GenValidity support for containers description:    Please see README.md category:       Testing homepage:       https://github.com/NorfairKing/validity#readme bug-reports:    https://github.com/NorfairKing/validity/issues author:         Tom Sydney Kerckhove-maintainer:     syd.kerckhove@gmail.com+maintainer:     syd.kerckhove@gmail.com,+                nick.van.den.broeck666@gmail.com copyright:      Copyright: (c) 2016-2018 Tom Sydney Kerckhove license:        MIT license-file:   LICENSE
src/Data/GenValidity/Map.hs view
@@ -4,10 +4,12 @@ module Data.GenValidity.Map     ( genStructurallyValidMapOf     , genStructurallyValidMapOfInvalidValues+#if MIN_VERSION_containers(0,5,9)+    , genStructurallyInvalidMap+#endif     ) where #if !MIN_VERSION_base(4,8,0)-import Control.Applicative (pure)-import Data.Functor ((<$>))+import Control.Applicative (pure, (<$>), (<*>)) #endif import Data.GenValidity import Data.Validity.Map ()@@ -15,8 +17,11 @@  import Data.Map (Map) import qualified Data.Map as M+#if MIN_VERSION_containers(0,5,9) import qualified Data.Map.Internal as Internal+#endif +#if MIN_VERSION_containers(0,5,9) instance (Ord k, GenUnchecked k, GenUnchecked v) => GenUnchecked (Map k v) where     genUnchecked =         sized $ \n ->@@ -36,15 +41,22 @@         [ Internal.Bin s' k' a' m1' m2'         | (s', k', a', m1', m2') <- shrinkUnchecked (s, k, a, m1, m2)         ]-+#else+instance (Ord k, GenUnchecked k, GenUnchecked v) => GenUnchecked (Map k v) where+    genUnchecked = M.fromList <$> genUnchecked+    shrinkUnchecked = fmap M.fromList . shrinkUnchecked . M.toList+#endif instance (Ord k, GenValid k, GenValid v) => GenValid (Map k v) where     genValid = M.fromList <$> genValid-+#if MIN_VERSION_containers(0,5,9) instance (Ord k, GenInvalid k, GenInvalid v) => GenInvalid (Map k v) where     genInvalid =         oneof             [genStructurallyValidMapOfInvalidValues, genStructurallyInvalidMap]-+#else+instance (Ord k, GenInvalid k, GenInvalid v) => GenInvalid (Map k v) where+    genInvalid = genStructurallyValidMapOfInvalidValues+#endif genStructurallyValidMapOf :: Ord k => Gen (k, v) -> Gen (Map k v) genStructurallyValidMapOf g =     sized $ \n ->@@ -72,11 +84,12 @@                     (,) <$> genUnchecked <*> genUnchecked                 pure $ M.insert key val rest         oneof [go genInvalid genUnchecked, go genUnchecked genInvalid]-+#if MIN_VERSION_containers(0,5,9) genStructurallyInvalidMap ::        (Ord k, GenUnchecked k, GenUnchecked v) => Gen (Map k v) genStructurallyInvalidMap = do     v <- genUnchecked     if M.valid v-        then scale (+ 1) genUnchecked+        then scale (+ 1) genStructurallyInvalidMap         else pure v+#endif
src/Data/GenValidity/Set.hs view
@@ -1,13 +1,15 @@-{-# OPTIONS_GHC -fno-warn-orphans #-} {-# LANGUAGE CPP #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}  module Data.GenValidity.Set     ( genStructurallyValidSetOf     , genStructurallyValidSetOfInvalidValues+#if MIN_VERSION_containers(0,5,9)     , genStructurallyInvalidSet+#endif     ) where #if !MIN_VERSION_base(4,8,0)-import Data.Functor ((<$>))+import Control.Applicative ((<$>), pure) #endif import Data.GenValidity import Data.Validity.Set ()@@ -15,8 +17,10 @@  import Data.Set (Set) import qualified Data.Set as S+#if MIN_VERSION_containers(0,5,9) import qualified Data.Set.Internal as Internal-+#endif+#if MIN_VERSION_containers(0,5,9) instance (Ord v, GenUnchecked v) => GenUnchecked (Set v) where     genUnchecked =         sized $ \n ->@@ -35,15 +39,22 @@         [ Internal.Bin s' a' s1' s2'         | (s', a', s1', s2') <- shrinkUnchecked (s, a, s1, s2)         ]-+#else+instance (Ord v, GenUnchecked v) => GenUnchecked (Set v) where+    genUnchecked = S.fromList <$> genUnchecked+    shrinkUnchecked = fmap S.fromList . shrinkUnchecked . S.toList+#endif instance (Ord v, GenValid v) => GenValid (Set v) where     genValid = S.fromList <$> genValid-+#if MIN_VERSION_containers(0,5,9) instance (Ord v, GenInvalid v) => GenInvalid (Set v) where     genInvalid =         oneof             [genStructurallyValidSetOfInvalidValues, genStructurallyInvalidSet]-+#else+instance (Ord v, GenInvalid v) => GenInvalid (Set v) where+    genInvalid = genStructurallyValidSetOfInvalidValues+#endif genStructurallyValidSetOf :: Ord v => Gen v -> Gen (Set v) genStructurallyValidSetOf g =     sized $ \n ->@@ -64,10 +75,11 @@         val <- resize v genInvalid         rest <- resize m $ genStructurallyValidSetOf genUnchecked         pure $ S.insert val rest-+#if MIN_VERSION_containers(0,5,9) genStructurallyInvalidSet :: (Ord v, GenUnchecked v) => Gen (Set v) genStructurallyInvalidSet = do     v <- genUnchecked     if S.valid v-        then scale (+ 1) genUnchecked+        then scale (+ 1) genStructurallyInvalidSet         else pure v+#endif
test/Test/Validity/Containers/MapSpec.hs view
@@ -1,14 +1,33 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE TypeApplications #-}  module Test.Validity.Containers.MapSpec where  import Test.Hspec -import Data.GenValidity.Map ()+import Data.GenValidity+import Data.GenValidity.Map import Data.Map (Map) import Test.Validity.GenValidity  spec :: Spec spec = do+    describe "genStructurallyValidMapOf" $+        it "produces valid maps" $+        genGeneratesValid+            (genStructurallyValidMapOf @Double @Double genValid)+            (const [])+    describe "genStructurallyValidMapOfInvalidValues" $+        it "produces valid maps" $+        genGeneratesInvalid+            (genStructurallyValidMapOfInvalidValues @Double @Double)+            (const [])+#if MIN_VERSION_containers(0,5,9)+    describe "genStructurallyInvalidMap" $+        it "produces invalid maps" $+        genGeneratesInvalid+            (genStructurallyInvalidMap @Double @Double)+            (const [])+#endif     genValidSpec @(Map Int Double)     genValiditySpec @(Map Double Double)
test/Test/Validity/Containers/SetSpec.hs view
@@ -1,14 +1,31 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE TypeApplications #-}  module Test.Validity.Containers.SetSpec where  import Test.Hspec -import Data.GenValidity.Set ()+import Data.GenValidity+import Data.GenValidity.Set import Data.Set (Set) import Test.Validity.GenValidity  spec :: Spec spec = do+    describe "genStructurallyValidSetOf" $+        it "produces valid sets" $+        genGeneratesValid+            (genStructurallyValidSetOf @Double genValid)+            (const [])+    describe "genStructurallyValidSetOfInvalidValues" $+        it "produces valid sets" $+        genGeneratesInvalid+            (genStructurallyValidSetOfInvalidValues @Double)+            (const [])+#if MIN_VERSION_containers(0,5,9)+    describe "genStructurallyInvalidSet" $+        it "produces invalid sets" $+        genGeneratesInvalid (genStructurallyInvalidSet @Double) (const [])+#endif     genValidSpec @(Set Int)     genValiditySpec @(Set Double)