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 +4/−0
- quickcheck-instances.cabal +119/−109
- src/Test/QuickCheck/Instances.hs +4/−3
- src/Test/QuickCheck/Instances/Array.hs +3/−3
- src/Test/QuickCheck/Instances/ByteString.hs +12/−12
- src/Test/QuickCheck/Instances/CaseInsensitive.hs +1/−1
- src/Test/QuickCheck/Instances/Containers.hs +2/−2
- src/Test/QuickCheck/Instances/Hashable.hs +1/−1
- src/Test/QuickCheck/Instances/OldTime.hs +1/−1
- src/Test/QuickCheck/Instances/Scientific.hs +1/−1
- src/Test/QuickCheck/Instances/Semigroup.hs +3/−3
- src/Test/QuickCheck/Instances/Tagged.hs +2/−2
- src/Test/QuickCheck/Instances/Text.hs +17/−17
- src/Test/QuickCheck/Instances/These.hs +77/−0
- src/Test/QuickCheck/Instances/Transformer.hs +3/−3
- src/Test/QuickCheck/Instances/UUID.hs +1/−1
- src/Test/QuickCheck/Instances/UnorderedContainers.hs +2/−2
- src/Test/QuickCheck/Instances/Vector.hs +5/−5
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