packages feed

QuickCheckVariant 0.1.0.3 → 0.1.0.4

raw patch · 2 files changed

+43/−5 lines, 2 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

QuickCheckVariant.cabal view
@@ -2,7 +2,7 @@ -- PVP summary:      +-+------- breaking API changes --                   | | +----- non-breaking API additions --                   | | | +--- code changes with no API change-version:             0.1.0.3+version:             0.1.0.4 synopsis:            Generator of "valid" and "invalid" data in a type class description:         Generator of "valid" and "invalid" data in a type class homepage:            https://github.com/sanjorgek/QuickCheckVariant
src/Test/QuickCheck/Variant.hs view
@@ -19,9 +19,18 @@ >>> instance (Varaint a) => Arbitrary a where {arbitrary = oneof [valid, invalid]} -} class Variant a where+  -- |Get a generator of valid random data type   valid   :: Gen a+  -- |Get a generator of invalid random data type   invalid :: Gen a +{-|+Variant of a list.++A valid list only had valid data.++A invalid list had only invalid data or some valid data with invalid data.+-} instance (Variant a) => Variant [a] where   valid = do     x <- valid@@ -30,8 +39,15 @@   invalid = do     x <- invalid     xs <- invalid-    (oneof . map return) [[], [x], x:xs]+    y <- valid+    ys <- valid+    (oneof . map return) [[x], x:xs, x:ys, y:xs] +{-|+Variant Maybe++Only Just data can be invalid, nothing always is valid.+-} instance (Variant a) => Variant (Maybe a) where   invalid = do     x <- invalid@@ -40,6 +56,9 @@     x <- valid     (oneof . map return) [Nothing, Just x] +{-|+Varaint Either.+-} instance (Variant a, Variant b) => Variant (Either a b) where   invalid = do     x <- invalid@@ -50,24 +69,43 @@     y <- valid     (oneof . map return) [Left x, Right y] +{-|+Varaint tuple++Invalid tuple may had some valid data with invalid data or only invalid data.++Valid tuple had only valid data.+-} instance (Variant a, Variant b) => Variant ((,) a b) where   invalid = do     x <- invalid     y <- invalid-    return (x, y)+    z <- valid+    w <- valid+    (oneof . map return) [(x,y), (x,z), (w,y)]   valid = do     x <- valid     y <- valid     return (x, y) +{-|+Varaint 3-tuple++Invalid 3-tuple may had some valid data with invalid data or only invalid data.++Valid 3-tuple had only valid data.+-} instance (Variant a, Variant b, Variant c) => Variant ((,,) a b c) where   invalid = do     x <- invalid     y <- invalid     z <- invalid-    return (x, y, z)+    w <- valid+    v <- valid+    u <- valid +    (oneof . map return) [(x,y,z), (x,y,u), (x,v,z), (w,y,z), (w,v,z), (x,v,u), (w,y,u)]   valid = do     x <- valid     y <- valid-    z <- invalid    +    z <- valid         return (x, y, z)