packages feed

genvalidity 0.5.0.0 → 0.5.0.1

raw patch · 2 files changed

+75/−2 lines, 2 filesPVP: minor bump suggested

API additions: PVP suggests at least a minor version bump

API changes (from Hackage documentation)

+ Data.GenValidity: genSplit5 :: Int -> Gen (Int, Int, Int, Int, Int)
+ Data.GenValidity: instance (Data.GenValidity.GenInvalid a, Data.GenValidity.GenInvalid b, Data.GenValidity.GenInvalid c, Data.GenValidity.GenInvalid d, Data.GenValidity.GenInvalid e) => Data.GenValidity.GenInvalid (a, b, c, d, e)
+ Data.GenValidity: instance (Data.GenValidity.GenUnchecked a, Data.GenValidity.GenUnchecked b, Data.GenValidity.GenUnchecked c, Data.GenValidity.GenUnchecked d, Data.GenValidity.GenUnchecked e) => Data.GenValidity.GenUnchecked (a, b, c, d, e)
+ Data.GenValidity: instance (Data.GenValidity.GenValid a, Data.GenValidity.GenValid b, Data.GenValidity.GenValid c, Data.GenValidity.GenValid d, Data.GenValidity.GenValid e) => Data.GenValidity.GenValid (a, b, c, d, e)

Files

genvalidity.cabal view
@@ -2,10 +2,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 44ca0d7036af5c0a3fb7191edbe25a916909be1094ab9036589bc8bb76b7609b+-- hash: 6b2dfb29109026a30275df0b6424310c9d43d7f09a648f4c701c0e366fa2de9c  name:           genvalidity-version:        0.5.0.0+version:        0.5.0.1 synopsis:       Testing utilities for the validity library description:    Note: There are companion instance packages for this library:                 .
src/Data/GenValidity.hs view
@@ -279,6 +279,69 @@                      return (a, b, c, d)                 ] +instance (GenUnchecked a, GenUnchecked b, GenUnchecked c, GenUnchecked d, GenUnchecked e) =>+         GenUnchecked (a, b, c, d, e) where+    genUnchecked =+        sized $ \n -> do+            (r, s, t, u, v) <- genSplit5 n+            a <- resize r genUnchecked+            b <- resize s genUnchecked+            c <- resize t genUnchecked+            d <- resize u genUnchecked+            e <- resize v genUnchecked+            return (a, b, c, d, e)++instance (GenValid a, GenValid b, GenValid c, GenValid d, GenValid e) =>+         GenValid (a, b, c, d, e) where+    genValid =+        sized $ \n -> do+            (r, s, t, u, v) <- genSplit5 n+            a <- resize r genValid+            b <- resize s genValid+            c <- resize t genValid+            d <- resize u genValid+            e <- resize v genValid+            return (a, b, c, d, e)++-- | This instance ensures that the generated triple contains at least one invalid element. The other two are unchecked.+instance (GenInvalid a, GenInvalid b, GenInvalid c, GenInvalid d, GenInvalid e) =>+         GenInvalid (a, b, c, d, e) where+    genInvalid =+        sized $ \n -> do+            (r, s, t, u, v) <- genSplit5 n+            oneof+                [ do a <- resize r genInvalid+                     b <- resize s genUnchecked+                     c <- resize t genUnchecked+                     d <- resize u genUnchecked+                     e <- resize v genUnchecked+                     return (a, b, c, d, e)+                , do a <- resize r genUnchecked+                     b <- resize s genInvalid+                     c <- resize t genUnchecked+                     d <- resize u genUnchecked+                     e <- resize v genUnchecked+                     return (a, b, c, d, e)+                , do a <- resize r genUnchecked+                     b <- resize s genUnchecked+                     c <- resize t genInvalid+                     d <- resize u genUnchecked+                     e <- resize v genUnchecked+                     return (a, b, c, d, e)+                , do a <- resize r genUnchecked+                     b <- resize s genUnchecked+                     c <- resize t genUnchecked+                     d <- resize u genInvalid+                     e <- resize v genUnchecked+                     return (a, b, c, d, e)+                , do a <- resize r genUnchecked+                     b <- resize s genUnchecked+                     c <- resize t genUnchecked+                     d <- resize u genUnchecked+                     e <- resize v genInvalid+                     return (a, b, c, d, e)+                ]+ instance GenUnchecked a => GenUnchecked (Maybe a) where     genUnchecked = oneof [pure Nothing, Just <$> genUnchecked] @@ -498,6 +561,16 @@         (a, b) <- genSplit y         (c, d) <- genSplit z         return (a, b, c, d)++-- | 'genSplit5 a' generates a quadruple '(b, c, d, e, f)' such that 'b + c + d + e + f' equals 'a'.+genSplit5 :: Int -> Gen (Int, Int, Int, Int, Int)+genSplit5 n+    | n < 0 = pure (0, 0, 0, 0, 0)+    | otherwise = do+        (y, z) <- genSplit n+        (a, b, c) <- genSplit3 y+        (d, e) <- genSplit z+        return (a, b, c, d, e)  -- | 'arbPartition n' generates a list 'ls' such that 'sum ls' equals 'n'. arbPartition :: Int -> Gen [Int]