packages feed

quickcheck-instances 0.3.22 → 0.3.23

raw patch · 18 files changed

+258/−166 lines, 18 filesdep +thesedep ~QuickCheckdep ~base-compatdep ~hashable

Dependencies added: these

Dependency ranges changed: QuickCheck, base-compat, hashable, splitmix, transformers-compat

Files

CHANGES view
@@ -1,3 +1,7 @@+0.3.33++* Add `these` instances.+ 0.3.22  * Add `Void` instances.
quickcheck-instances.cabal view
@@ -1,134 +1,144 @@-Name:                quickcheck-instances-Version:             0.3.22+name:               quickcheck-instances+version:            0.3.23+synopsis:           Common quickcheck instances+description:+  QuickCheck instances.+  .+  The goal is to supply QuickCheck instances for+  types provided by the Haskell Platform.+  .+  Since all of these instances are provided as+  orphans, I recommend that you do not use this library+  within another library module, so that you don't+  impose these instances on down-stream consumers of+  your code.+  .+  For information on writing a test-suite with Cabal+  see <https://www.haskell.org/cabal/users-guide/developing-packages.html#test-suites> -Synopsis:            Common quickcheck instances-Description:         QuickCheck instances.-                     .-                     The goal is to supply QuickCheck instances for-                     types provided by the Haskell Platform.-                     .-                     Since all of these instances are provided as-                     orphans, I recommend that you do not use this library-                     within another library module, so that you don't-                     impose these instances on down-stream consumers of-                     your code.-                     .-                     For information on writing a test-suite with Cabal-                     see <https://www.haskell.org/cabal/users-guide/developing-packages.html#test-suites>+license:            BSD3+license-file:       LICENSE+author:+  Antoine Latter <aslatter@gmail.com>, Oleg Grenrus <oleg.grenrus@iki.fi> -License:             BSD3-License-file:        LICENSE-Author:              Antoine Latter <aslatter@gmail.com>, Oleg Grenrus <oleg.grenrus@iki.fi>-Maintainer:          Oleg Grenrus <oleg.grenrus@iki.fi>-Homepage:            https://github.com/phadej/qc-instances-Bug-reports:         https://github.com/phadej/qc-instances/issues-Copyright:           Copyright 2012-2016 Antoine Latter, 2017-2019 Oleg Grenrus-Category:            Testing-Build-type:          Simple-Extra-source-files:  CHANGES-Cabal-version:       >=1.8-Tested-With:-  GHC==7.4.2,-  GHC==7.6.3,-  GHC==7.8.4,-  GHC==7.10.3,-  GHC==8.0.2,-  GHC==8.2.2,-  GHC==8.4.4,-  GHC==8.6.5,-  GHC==8.8.1+maintainer:         Oleg Grenrus <oleg.grenrus@iki.fi>+homepage:           https://github.com/phadej/qc-instances+bug-reports:        https://github.com/phadej/qc-instances/issues+copyright:          Copyright 2012-2016 Antoine Latter, 2017-2019 Oleg Grenrus+category:           Testing+build-type:         Simple+extra-source-files: CHANGES+cabal-version:      >=1.10+tested-with:+  GHC ==7.4.2+   || ==7.6.3+   || ==7.8.4+   || ==7.10.3+   || ==8.0.2+   || ==8.2.2+   || ==8.4.4+   || ==8.6.5+   || ==8.8.3+   || ==8.10.1 -Source-repository head+source-repository head   type:     git   location: https://github.com/phadej/qc-instances.git -Flag bytestring-builder+flag bytestring-builder   description: Use bytestring-builder (with old bytestring)-  default: False-  manual: False+  default:     False+  manual:      False -Library-  Exposed-modules:     Test.QuickCheck.Instances-                       Test.QuickCheck.Instances.Array-                       Test.QuickCheck.Instances.ByteString-                       Test.QuickCheck.Instances.CaseInsensitive-                       Test.QuickCheck.Instances.Containers-                       Test.QuickCheck.Instances.Hashable-                       Test.QuickCheck.Instances.Natural-                       Test.QuickCheck.Instances.OldTime-                       Test.QuickCheck.Instances.Scientific-                       Test.QuickCheck.Instances.Semigroup-                       Test.QuickCheck.Instances.Tagged-                       Test.QuickCheck.Instances.Text-                       Test.QuickCheck.Instances.Time-                       Test.QuickCheck.Instances.Transformer-                       Test.QuickCheck.Instances.UUID-                       Test.QuickCheck.Instances.UnorderedContainers-                       Test.QuickCheck.Instances.Vector-                       Test.QuickCheck.Instances.Void-  Hs-Source-Dirs:      src-  Build-depends:-    base       >=4.5    && <4.13,-    QuickCheck >=2.13.2 && <2.14,-    splitmix   >=0.0.2  && <0.1,+library+  default-language: Haskell2010+  exposed-modules:+    Test.QuickCheck.Instances+    Test.QuickCheck.Instances.Array+    Test.QuickCheck.Instances.ByteString+    Test.QuickCheck.Instances.CaseInsensitive+    Test.QuickCheck.Instances.Containers+    Test.QuickCheck.Instances.Hashable+    Test.QuickCheck.Instances.Natural+    Test.QuickCheck.Instances.OldTime+    Test.QuickCheck.Instances.Scientific+    Test.QuickCheck.Instances.Semigroup+    Test.QuickCheck.Instances.Tagged+    Test.QuickCheck.Instances.Text+    Test.QuickCheck.Instances.These+    Test.QuickCheck.Instances.Time+    Test.QuickCheck.Instances.Transformer+    Test.QuickCheck.Instances.UnorderedContainers+    Test.QuickCheck.Instances.UUID+    Test.QuickCheck.Instances.Vector+    Test.QuickCheck.Instances.Void -    array                >=0.4.0.0 && <0.6,-    base-compat          >=0.9.3   && <0.11,-    bytestring           >=0.9.2.1 && <0.11,-    case-insensitive     >=1.2.0.4 && <1.3,-    containers           >=0.4.2.1 && <0.7,-    hashable             >=1.2.5.0 && <1.4,-    old-time             >=1.1.0.0 && <1.2,-    scientific           >=0.2.0.0 && <0.4,-    tagged               >=0.8.5   && <0.9,-    text                 >=1.0.0.0 && <1.3,-    time-compat          >=1.9.2.2 && <1.10,-    transformers         >=0.3.0.0 && <0.6,-    transformers-compat  >=0.5     && <0.7,-    unordered-containers >=0.2.2.0 && <0.3,-    uuid-types           >=1.0.3   && <1.1,-    vector               >=0.9     && <0.13+  hs-source-dirs:   src+  build-depends:+      base        >=4.5    && <4.15+    , QuickCheck  >=2.13.2 && <2.15+    , splitmix    >=0.0.2  && <0.1 +  build-depends:+      array                 >=0.4.0.0 && <0.6+    , base-compat           >=0.10.5  && <0.12+    , bytestring            >=0.9.2.1 && <0.11+    , case-insensitive      >=1.2.0.4 && <1.3+    , containers            >=0.4.2.1 && <0.7+    , hashable              >=1.2.7.0 && <1.4+    , old-time              >=1.1.0.0 && <1.2+    , scientific            >=0.2.0.0 && <0.4+    , tagged                >=0.8.5   && <0.9+    , text                  >=1.0.0.0 && <1.3+    , these                 >=1.1     && <1.2+    , time-compat           >=1.9.2.2 && <1.10+    , transformers          >=0.3.0.0 && <0.6+    , transformers-compat   >=0.6.5   && <0.7+    , unordered-containers  >=0.2.2.0 && <0.3+    , uuid-types            >=1.0.3   && <1.1+    , vector                >=0.9     && <0.13+   -- version is irrelevant.-  Build-depends: time+  build-depends:    time -  if !impl(ghc >= 8.0)-    build-depends:-      semigroups >=0.18.5 && <0.20+  if !impl(ghc >=8.0)+    build-depends: semigroups >=0.18.5 && <0.20 -  if !impl(ghc >= 7.10)+  if !impl(ghc >=7.10)     build-depends:-      nats >=1 && <1.2,-      void >=0.7.2 && <0.8+        nats  >=1     && <1.2+      , void  >=0.7.2 && <0.8    if flag(bytestring-builder)     build-depends:-      bytestring-builder   >=0.10.4  && <0.11,-      bytestring <0.10.4.0+        bytestring          >=0      && <0.10.4.0+      , bytestring-builder  >=0.10.4 && <0.11+   else-    build-depends:-      bytestring >=0.10.4.0+    build-depends: bytestring >=0.10.4.0 -  Ghc-options:         -Wall+  ghc-options:      -Wall  test-suite self-test-  type: exitcode-stdio-1.0-  main-is: Tests.hs-  hs-source-dirs: test+  default-language: Haskell2010+  type:             exitcode-stdio-1.0+  main-is:          Tests.hs+  hs-source-dirs:   test   build-depends:-    base,-    QuickCheck,-    quickcheck-instances,-    containers,-    tagged,-    uuid-types+      base+    , containers+    , QuickCheck+    , quickcheck-instances+    , tagged+    , uuid-types  benchmark bytestring-gen-  type: exitcode-stdio-1.0-  main-is: ByteString.hs-  hs-source-dirs: bench+  default-language: Haskell2010+  type:             exitcode-stdio-1.0+  main-is:          ByteString.hs+  hs-source-dirs:   bench   build-depends:-    base,-    QuickCheck,-    quickcheck-instances,-    bytestring+      base+    , bytestring+    , QuickCheck+    , quickcheck-instances
src/Test/QuickCheck/Instances.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE CPP #-}+{-# LANGUAGE CPP              #-} {-# LANGUAGE FlexibleContexts #-} {-# OPTIONS_GHC -fno-warn-orphans #-} {-|@@ -35,15 +35,16 @@ import Test.QuickCheck.Instances.Containers () import Test.QuickCheck.Instances.Hashable () import Test.QuickCheck.Instances.Natural ()-import Test.QuickCheck.Instances.OldTime () import Test.QuickCheck.Instances.Natural ()+import Test.QuickCheck.Instances.OldTime () import Test.QuickCheck.Instances.Scientific () import Test.QuickCheck.Instances.Semigroup () import Test.QuickCheck.Instances.Tagged () import Test.QuickCheck.Instances.Text ()+import Test.QuickCheck.Instances.These () import Test.QuickCheck.Instances.Time () import Test.QuickCheck.Instances.Transformer ()-import Test.QuickCheck.Instances.UUID () import Test.QuickCheck.Instances.UnorderedContainers ()+import Test.QuickCheck.Instances.UUID () import Test.QuickCheck.Instances.Vector () import Test.QuickCheck.Instances.Void ()
src/Test/QuickCheck/Instances/Array.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE CPP #-}+{-# LANGUAGE CPP              #-} {-# LANGUAGE FlexibleContexts #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module Test.QuickCheck.Instances.Array () where@@ -7,11 +7,11 @@ import Prelude.Compat  import Control.Applicative (liftA2)-import Data.Ix (Ix (..))+import Data.Ix             (Ix (..))  import Test.QuickCheck -import qualified Data.Array.IArray as Array+import qualified Data.Array.IArray  as Array import qualified Data.Array.Unboxed as Array  -------------------------------------------------------------------------------
src/Test/QuickCheck/Instances/ByteString.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE BangPatterns #-}+{-# LANGUAGE BangPatterns     #-} {-# LANGUAGE FlexibleContexts #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module Test.QuickCheck.Instances.ByteString () where@@ -6,15 +6,15 @@ import Prelude () import Prelude.Compat -import Data.Word (Word8)+import Data.Word              (Word8) import Test.QuickCheck import Test.QuickCheck.Gen import Test.QuickCheck.Random (QCGen (..))  import qualified System.Random.SplitMix as SM -import qualified Data.ByteString as BS-import qualified Data.ByteString.Lazy as BL+import qualified Data.ByteString       as BS+import qualified Data.ByteString.Lazy  as LBS import qualified Data.ByteString.Short as SBS  -------------------------------------------------------------------------------@@ -44,14 +44,14 @@     function = functionMap BS.unpack BS.pack  -instance Arbitrary BL.ByteString where+instance Arbitrary LBS.ByteString where     arbitrary = MkGen $ \(QCGen g0) size ->         if size <= 0-        then BL.empty+        then LBS.empty         else             let (i, g1) = SM.nextInt g0                 size' = i `mod` size-            in BL.unfoldr gen (size', g1)+            in LBS.unfoldr gen (size', g1)       where         gen :: (Int, SM.SMGen) -> Maybe (Word8, (Int, SM.SMGen))         gen (!i, !g)@@ -60,13 +60,13 @@           where             ~(w64, g') = SM.nextWord64 g -    shrink xs = BL.pack <$> shrink (BL.unpack xs)+    shrink xs = LBS.pack <$> shrink (LBS.unpack xs) -instance CoArbitrary BL.ByteString where-    coarbitrary = coarbitrary . BL.unpack+instance CoArbitrary LBS.ByteString where+    coarbitrary = coarbitrary . LBS.unpack -instance Function BL.ByteString where-    function = functionMap BL.unpack BL.pack+instance Function LBS.ByteString where+    function = functionMap LBS.unpack LBS.pack   instance Arbitrary SBS.ShortByteString where
src/Test/QuickCheck/Instances/CaseInsensitive.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE CPP #-}+{-# LANGUAGE CPP              #-} {-# LANGUAGE FlexibleContexts #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module Test.QuickCheck.Instances.CaseInsensitive () where
src/Test/QuickCheck/Instances/Containers.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE CPP #-}+{-# LANGUAGE CPP              #-} {-# LANGUAGE FlexibleContexts #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module Test.QuickCheck.Instances.Containers () where@@ -34,7 +34,7 @@                 rest <- arbPartition $ k - first                 return $ first : rest -    liftShrink shr = go +    liftShrink shr = go       where         go (Tree.Node val forest) = forest ++             [ Tree.Node e fs
src/Test/QuickCheck/Instances/Hashable.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE CPP #-}+{-# LANGUAGE CPP              #-} {-# LANGUAGE FlexibleContexts #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module Test.QuickCheck.Instances.Hashable () where
src/Test/QuickCheck/Instances/OldTime.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE CPP #-}+{-# LANGUAGE CPP              #-} {-# LANGUAGE FlexibleContexts #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module Test.QuickCheck.Instances.OldTime () where
src/Test/QuickCheck/Instances/Scientific.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE CPP #-}+{-# LANGUAGE CPP              #-} {-# LANGUAGE FlexibleContexts #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module Test.QuickCheck.Instances.Scientific () where
src/Test/QuickCheck/Instances/Semigroup.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE CPP #-}+{-# LANGUAGE CPP              #-} {-# LANGUAGE FlexibleContexts #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module Test.QuickCheck.Instances.Semigroup () where@@ -7,8 +7,8 @@ import Prelude.Compat  import Control.Applicative (liftA2)-import Data.List.NonEmpty (NonEmpty (..), nonEmpty)-import Data.Maybe (mapMaybe)+import Data.List.NonEmpty  (NonEmpty (..), nonEmpty)+import Data.Maybe          (mapMaybe)  import Test.QuickCheck 
src/Test/QuickCheck/Instances/Tagged.hs view
@@ -1,7 +1,7 @@-{-# LANGUAGE CPP #-}+{-# LANGUAGE CPP              #-} {-# LANGUAGE FlexibleContexts #-} #if __GLASGOW_HASKELL__ >= 706-{-# LANGUAGE PolyKinds #-}+{-# LANGUAGE PolyKinds        #-} #endif {-# OPTIONS_GHC -fno-warn-orphans #-} module Test.QuickCheck.Instances.Tagged () where
src/Test/QuickCheck/Instances/Text.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE CPP #-}+{-# LANGUAGE CPP              #-} {-# LANGUAGE FlexibleContexts #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module Test.QuickCheck.Instances.Text () where@@ -8,29 +8,29 @@  import Test.QuickCheck -import qualified Data.Text as TS-import qualified Data.Text.Lazy as TL+import qualified Data.Text      as T+import qualified Data.Text.Lazy as LT  ------------------------------------------------------------------------------- -- text ------------------------------------------------------------------------------- -instance Arbitrary TS.Text where-    arbitrary = TS.pack <$> arbitrary-    shrink xs = TS.pack <$> shrink (TS.unpack xs)+instance Arbitrary T.Text where+    arbitrary = T.pack <$> arbitrary+    shrink xs = T.pack <$> shrink (T.unpack xs) -instance Arbitrary TL.Text where-    arbitrary = TL.pack <$> arbitrary-    shrink xs = TL.pack <$> shrink (TL.unpack xs)+instance Arbitrary LT.Text where+    arbitrary = LT.pack <$> arbitrary+    shrink xs = LT.pack <$> shrink (LT.unpack xs) -instance CoArbitrary TS.Text where-    coarbitrary = coarbitrary . TS.unpack+instance CoArbitrary T.Text where+    coarbitrary = coarbitrary . T.unpack -instance CoArbitrary TL.Text where-    coarbitrary = coarbitrary . TL.unpack+instance CoArbitrary LT.Text where+    coarbitrary = coarbitrary . LT.unpack -instance Function TS.Text where-    function = functionMap TS.unpack TS.pack+instance Function T.Text where+    function = functionMap T.unpack T.pack -instance Function TL.Text where-    function = functionMap TL.unpack TL.pack+instance Function LT.Text where+    function = functionMap LT.unpack LT.pack
+ src/Test/QuickCheck/Instances/These.hs view
@@ -0,0 +1,77 @@+{-# LANGUAGE CPP              #-}+{-# LANGUAGE FlexibleContexts #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}+module Test.QuickCheck.Instances.These () where++import Prelude ()+import Prelude.Compat++import Test.QuickCheck++import Data.Functor.These (These1 (..))+import Data.These         (These (..))++-------------------------------------------------------------------------------+-- These+-------------------------------------------------------------------------------++-- | @since 0.7.4+instance Arbitrary2 These where+    liftArbitrary2 arbA arbB = oneof+        [ This <$> arbA+        , That <$> arbB+        , These <$> arbA <*> arbB+        ]++    liftShrink2  shrA _shrB (This x) = This <$> shrA x+    liftShrink2 _shrA  shrB (That y) = That <$> shrB y+    liftShrink2  shrA  shrB (These x y) =+        [This x, That y] ++ [These x' y' | (x', y') <- liftShrink2 shrA shrB (x, y)]++-- | @since 0.7.4+instance (Arbitrary a) => Arbitrary1 (These a) where+    liftArbitrary = liftArbitrary2 arbitrary+    liftShrink = liftShrink2 shrink++-- | @since 0.7.1+instance (Arbitrary a, Arbitrary b) => Arbitrary (These a b) where+    arbitrary = arbitrary1+    shrink = shrink1++-- | @since 0.7.1+instance (Function a, Function b) => Function (These a b) where+  function = functionMap g f+    where+      g (This a)    = Left a+      g (That b)    = Right (Left b)+      g (These a b) = Right (Right (a, b))++      f (Left a)               = This a+      f (Right (Left b))       = That b+      f (Right (Right (a, b))) = These a b++-- | @since 0.7.1+instance (CoArbitrary a, CoArbitrary b) => CoArbitrary (These a b)++-------------------------------------------------------------------------------+-- These1+-------------------------------------------------------------------------------++instance (Arbitrary1 f, Arbitrary1 g) => Arbitrary1 (These1 f g) where+    liftArbitrary arb = oneof+        [ This1 <$> liftArbitrary arb+        , That1 <$> liftArbitrary arb+        , These1 <$> liftArbitrary arb <*> liftArbitrary arb+        ]++    liftShrink shr (This1 x) = This1 <$> liftShrink shr x+    liftShrink shr (That1 y) = That1 <$> liftShrink shr y+    liftShrink shr (These1 x y) =+        [ This1 x, That1 y ] +++        [ These1 x' y'+        | (x', y') <- liftShrink2 (liftShrink shr) (liftShrink shr) (x, y)+        ]++instance (Arbitrary1 f, Arbitrary1 g, Arbitrary a) => Arbitrary (These1 f g a) where+    arbitrary = arbitrary1+    shrink    = shrink1
src/Test/QuickCheck/Instances/Transformer.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE CPP #-}+{-# LANGUAGE CPP              #-} {-# LANGUAGE FlexibleContexts #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module Test.QuickCheck.Instances.Transformer () where@@ -6,8 +6,8 @@ import Prelude () import Prelude.Compat -import Control.Monad.Trans.Maybe (MaybeT(..))-import Data.Functor.Sum (Sum (..))+import Control.Monad.Trans.Maybe (MaybeT (..))+import Data.Functor.Sum          (Sum (..))  import Test.QuickCheck 
src/Test/QuickCheck/Instances/UUID.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE CPP #-}+{-# LANGUAGE CPP              #-} {-# LANGUAGE FlexibleContexts #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module Test.QuickCheck.Instances.UUID () where
src/Test/QuickCheck/Instances/UnorderedContainers.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE CPP #-}+{-# LANGUAGE CPP              #-} {-# LANGUAGE FlexibleContexts #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module Test.QuickCheck.Instances.UnorderedContainers () where@@ -11,7 +11,7 @@ import Test.QuickCheck  import qualified Data.HashMap.Lazy as HML-import qualified Data.HashSet as HS+import qualified Data.HashSet      as HS  ------------------------------------------------------------------------------- -- unordered-containers
src/Test/QuickCheck/Instances/Vector.hs view
@@ -1,6 +1,6 @@-{-# LANGUAGE CPP #-}+{-# LANGUAGE CPP              #-} {-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE TypeOperators    #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module Test.QuickCheck.Instances.Vector () where @@ -10,10 +10,10 @@ import Test.QuickCheck import Test.QuickCheck.Function ((:->)) -import qualified Data.Vector as Vector-import qualified Data.Vector.Generic as GVector+import qualified Data.Vector          as Vector+import qualified Data.Vector.Generic  as GVector import qualified Data.Vector.Storable as SVector-import qualified Data.Vector.Unboxed as UVector+import qualified Data.Vector.Unboxed  as UVector  ------------------------------------------------------------------------------- -- vector