quickcheck-instances 0.3.16.1 → 0.3.17
raw patch · 19 files changed
+884/−656 lines, 19 filesdep ~basedep ~transformers-compatPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: base, transformers-compat
API changes (from Hackage documentation)
- Test.QuickCheck.Instances: instance (Data.CaseInsensitive.Internal.FoldCase a, Test.QuickCheck.Arbitrary.Arbitrary a) => Test.QuickCheck.Arbitrary.Arbitrary (Data.CaseInsensitive.Internal.CI a)
- Test.QuickCheck.Instances: instance (Data.CaseInsensitive.Internal.FoldCase a, Test.QuickCheck.Function.Function a) => Test.QuickCheck.Function.Function (Data.CaseInsensitive.Internal.CI a)
- Test.QuickCheck.Instances: instance (Data.Hashable.Class.Hashable a, GHC.Classes.Eq a, Test.QuickCheck.Arbitrary.Arbitrary a) => Test.QuickCheck.Arbitrary.Arbitrary (Data.HashSet.HashSet a)
- Test.QuickCheck.Instances: instance (Data.Hashable.Class.Hashable a, Test.QuickCheck.Arbitrary.Arbitrary a) => Test.QuickCheck.Arbitrary.Arbitrary (Data.Hashable.Class.Hashed a)
- Test.QuickCheck.Instances: instance (Data.Hashable.Class.Hashable k, GHC.Classes.Eq k, Test.QuickCheck.Arbitrary.Arbitrary k) => Test.QuickCheck.Arbitrary.Arbitrary1 (Data.HashMap.Base.HashMap k)
- Test.QuickCheck.Instances: instance (Data.Hashable.Class.Hashable k, GHC.Classes.Eq k, Test.QuickCheck.Arbitrary.Arbitrary k, Test.QuickCheck.Arbitrary.Arbitrary v) => Test.QuickCheck.Arbitrary.Arbitrary (Data.HashMap.Base.HashMap k v)
- Test.QuickCheck.Instances: instance (Data.Vector.Unboxed.Base.Unbox a, Test.QuickCheck.Arbitrary.Arbitrary a) => Test.QuickCheck.Arbitrary.Arbitrary (Data.Vector.Unboxed.Base.Vector a)
- Test.QuickCheck.Instances: instance (Data.Vector.Unboxed.Base.Unbox a, Test.QuickCheck.Arbitrary.CoArbitrary a) => Test.QuickCheck.Arbitrary.CoArbitrary (Data.Vector.Unboxed.Base.Vector a)
- Test.QuickCheck.Instances: instance (Foreign.Storable.Storable a, Test.QuickCheck.Arbitrary.Arbitrary a) => Test.QuickCheck.Arbitrary.Arbitrary (Data.Vector.Storable.Vector a)
- Test.QuickCheck.Instances: instance (Foreign.Storable.Storable a, Test.QuickCheck.Arbitrary.CoArbitrary a) => Test.QuickCheck.Arbitrary.CoArbitrary (Data.Vector.Storable.Vector a)
- Test.QuickCheck.Instances: instance (GHC.Arr.Ix i, Data.Array.Base.IArray Data.Array.Base.UArray a, Test.QuickCheck.Arbitrary.CoArbitrary i, Test.QuickCheck.Arbitrary.CoArbitrary a) => Test.QuickCheck.Arbitrary.CoArbitrary (Data.Array.Base.UArray i a)
- Test.QuickCheck.Instances: instance (GHC.Arr.Ix i, Test.QuickCheck.Arbitrary.CoArbitrary i, Test.QuickCheck.Arbitrary.CoArbitrary a) => Test.QuickCheck.Arbitrary.CoArbitrary (GHC.Arr.Array i a)
- Test.QuickCheck.Instances: instance (GHC.Num.Num i, GHC.Arr.Ix i, Data.Array.Base.IArray Data.Array.Base.UArray a, Test.QuickCheck.Arbitrary.Arbitrary i, Test.QuickCheck.Arbitrary.Arbitrary a) => Test.QuickCheck.Arbitrary.Arbitrary (Data.Array.Base.UArray i a)
- Test.QuickCheck.Instances: instance (GHC.Num.Num i, GHC.Arr.Ix i, Test.QuickCheck.Arbitrary.Arbitrary i) => Test.QuickCheck.Arbitrary.Arbitrary1 (GHC.Arr.Array i)
- Test.QuickCheck.Instances: instance (GHC.Num.Num i, GHC.Arr.Ix i, Test.QuickCheck.Arbitrary.Arbitrary i, Test.QuickCheck.Arbitrary.Arbitrary a) => Test.QuickCheck.Arbitrary.Arbitrary (GHC.Arr.Array i a)
- Test.QuickCheck.Instances: instance (Test.QuickCheck.Arbitrary.Arbitrary1 f, Test.QuickCheck.Arbitrary.Arbitrary1 g) => Test.QuickCheck.Arbitrary.Arbitrary1 (Data.Functor.Sum.Sum f g)
- Test.QuickCheck.Instances: instance (Test.QuickCheck.Arbitrary.Arbitrary1 f, Test.QuickCheck.Arbitrary.Arbitrary1 g, Test.QuickCheck.Arbitrary.Arbitrary a) => Test.QuickCheck.Arbitrary.Arbitrary (Data.Functor.Sum.Sum f g a)
- Test.QuickCheck.Instances: instance (Test.QuickCheck.Arbitrary.CoArbitrary k, Test.QuickCheck.Arbitrary.CoArbitrary v) => Test.QuickCheck.Arbitrary.CoArbitrary (Data.HashMap.Base.HashMap k v)
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary (Data.Proxy.Proxy a)
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary Data.ByteString.Internal.ByteString
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary Data.ByteString.Lazy.Internal.ByteString
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary Data.Scientific.Scientific
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary Data.Text.Internal.Lazy.Text
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary Data.Text.Internal.Text
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary Data.Time.Calendar.Days.Day
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary Data.Time.Clock.Internal.AbsoluteTime.AbsoluteTime
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary Data.Time.Clock.Internal.DiffTime.DiffTime
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary Data.Time.Clock.Internal.NominalDiffTime.NominalDiffTime
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary Data.Time.Clock.Internal.UTCTime.UTCTime
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary Data.Time.Clock.Internal.UniversalTime.UniversalTime
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary Data.Time.LocalTime.Internal.LocalTime.LocalTime
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary Data.Time.LocalTime.Internal.TimeOfDay.TimeOfDay
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary Data.Time.LocalTime.Internal.TimeZone.TimeZone
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary Data.Time.LocalTime.Internal.ZonedTime.ZonedTime
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary Data.UUID.Types.Internal.UUID
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary GHC.Natural.Natural
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary System.Time.CalendarTime
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary System.Time.ClockTime
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary System.Time.Day
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary System.Time.Month
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary System.Time.TimeDiff
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (Data.List.NonEmpty.NonEmpty a)
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (Data.Semigroup.First a)
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (Data.Semigroup.Last a)
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (Data.Semigroup.Max a)
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (Data.Semigroup.Min a)
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (Data.Semigroup.Option a)
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (Data.Semigroup.WrappedMonoid a)
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (Data.Tree.Tree a)
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (Data.Vector.Vector a)
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary b => Test.QuickCheck.Arbitrary.Arbitrary (Data.Tagged.Tagged a b)
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary1 (Data.Tagged.Tagged a)
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary1 Data.List.NonEmpty.NonEmpty
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary1 Data.Proxy.Proxy
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary1 Data.Semigroup.First
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary1 Data.Semigroup.Last
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary1 Data.Semigroup.Max
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary1 Data.Semigroup.Min
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary1 Data.Semigroup.Option
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary1 Data.Semigroup.WrappedMonoid
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary1 Data.Tree.Tree
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary1 Data.Vector.Vector
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.Arbitrary2 Data.Tagged.Tagged
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.CoArbitrary (Data.Hashable.Class.Hashed a)
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.CoArbitrary (Data.Proxy.Proxy a)
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.CoArbitrary Data.ByteString.Internal.ByteString
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.CoArbitrary Data.ByteString.Lazy.Internal.ByteString
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.CoArbitrary Data.Scientific.Scientific
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.CoArbitrary Data.Text.Internal.Lazy.Text
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.CoArbitrary Data.Text.Internal.Text
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.CoArbitrary Data.Time.Calendar.Days.Day
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.CoArbitrary Data.Time.Clock.Internal.AbsoluteTime.AbsoluteTime
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.CoArbitrary Data.Time.Clock.Internal.DiffTime.DiffTime
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.CoArbitrary Data.Time.Clock.Internal.NominalDiffTime.NominalDiffTime
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.CoArbitrary Data.Time.Clock.Internal.UTCTime.UTCTime
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.CoArbitrary Data.Time.Clock.Internal.UniversalTime.UniversalTime
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.CoArbitrary Data.Time.LocalTime.Internal.LocalTime.LocalTime
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.CoArbitrary Data.Time.LocalTime.Internal.TimeOfDay.TimeOfDay
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.CoArbitrary Data.Time.LocalTime.Internal.TimeZone.TimeZone
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.CoArbitrary Data.Time.LocalTime.Internal.ZonedTime.ZonedTime
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.CoArbitrary Data.UUID.Types.Internal.UUID
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.CoArbitrary GHC.Natural.Natural
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.CoArbitrary System.Time.CalendarTime
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.CoArbitrary System.Time.ClockTime
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.CoArbitrary System.Time.Day
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.CoArbitrary System.Time.Month
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.CoArbitrary System.Time.TimeDiff
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.CoArbitrary a => Test.QuickCheck.Arbitrary.CoArbitrary (Data.CaseInsensitive.Internal.CI a)
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.CoArbitrary a => Test.QuickCheck.Arbitrary.CoArbitrary (Data.HashSet.HashSet a)
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.CoArbitrary a => Test.QuickCheck.Arbitrary.CoArbitrary (Data.List.NonEmpty.NonEmpty a)
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.CoArbitrary a => Test.QuickCheck.Arbitrary.CoArbitrary (Data.Semigroup.First a)
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.CoArbitrary a => Test.QuickCheck.Arbitrary.CoArbitrary (Data.Semigroup.Last a)
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.CoArbitrary a => Test.QuickCheck.Arbitrary.CoArbitrary (Data.Semigroup.Max a)
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.CoArbitrary a => Test.QuickCheck.Arbitrary.CoArbitrary (Data.Semigroup.Min a)
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.CoArbitrary a => Test.QuickCheck.Arbitrary.CoArbitrary (Data.Semigroup.Option a)
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.CoArbitrary a => Test.QuickCheck.Arbitrary.CoArbitrary (Data.Semigroup.WrappedMonoid a)
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.CoArbitrary a => Test.QuickCheck.Arbitrary.CoArbitrary (Data.Tree.Tree a)
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.CoArbitrary a => Test.QuickCheck.Arbitrary.CoArbitrary (Data.Vector.Vector a)
- Test.QuickCheck.Instances: instance Test.QuickCheck.Arbitrary.CoArbitrary b => Test.QuickCheck.Arbitrary.CoArbitrary (Data.Tagged.Tagged a b)
- Test.QuickCheck.Instances: instance Test.QuickCheck.Function.Function (Data.Proxy.Proxy a)
- Test.QuickCheck.Instances: instance Test.QuickCheck.Function.Function Data.Text.Internal.Lazy.Text
- Test.QuickCheck.Instances: instance Test.QuickCheck.Function.Function Data.Text.Internal.Text
- Test.QuickCheck.Instances: instance Test.QuickCheck.Function.Function Data.Time.Calendar.Days.Day
- Test.QuickCheck.Instances: instance Test.QuickCheck.Function.Function Data.Time.Clock.Internal.DiffTime.DiffTime
- Test.QuickCheck.Instances: instance Test.QuickCheck.Function.Function Data.Time.Clock.Internal.UTCTime.UTCTime
- Test.QuickCheck.Instances: instance Test.QuickCheck.Function.Function Data.UUID.Types.Internal.UUID
- Test.QuickCheck.Instances: instance Test.QuickCheck.Function.Function GHC.Natural.Natural
- Test.QuickCheck.Instances: instance Test.QuickCheck.Function.Function a => Test.QuickCheck.Function.Function (Data.List.NonEmpty.NonEmpty a)
- Test.QuickCheck.Instances: instance Test.QuickCheck.Function.Function a => Test.QuickCheck.Function.Function (Data.Semigroup.First a)
- Test.QuickCheck.Instances: instance Test.QuickCheck.Function.Function a => Test.QuickCheck.Function.Function (Data.Semigroup.Last a)
- Test.QuickCheck.Instances: instance Test.QuickCheck.Function.Function a => Test.QuickCheck.Function.Function (Data.Semigroup.Max a)
- Test.QuickCheck.Instances: instance Test.QuickCheck.Function.Function a => Test.QuickCheck.Function.Function (Data.Semigroup.Min a)
- Test.QuickCheck.Instances: instance Test.QuickCheck.Function.Function a => Test.QuickCheck.Function.Function (Data.Semigroup.Option a)
- Test.QuickCheck.Instances: instance Test.QuickCheck.Function.Function a => Test.QuickCheck.Function.Function (Data.Semigroup.WrappedMonoid a)
- Test.QuickCheck.Instances: instance Test.QuickCheck.Function.Function b => Test.QuickCheck.Function.Function (Data.Tagged.Tagged a b)
+ Test.QuickCheck.Instances.Array: instance (GHC.Arr.Ix i, Data.Array.Base.IArray Data.Array.Base.UArray a, Test.QuickCheck.Arbitrary.CoArbitrary i, Test.QuickCheck.Arbitrary.CoArbitrary a) => Test.QuickCheck.Arbitrary.CoArbitrary (Data.Array.Base.UArray i a)
+ Test.QuickCheck.Instances.Array: instance (GHC.Arr.Ix i, Test.QuickCheck.Arbitrary.CoArbitrary i, Test.QuickCheck.Arbitrary.CoArbitrary a) => Test.QuickCheck.Arbitrary.CoArbitrary (GHC.Arr.Array i a)
+ Test.QuickCheck.Instances.Array: instance (GHC.Num.Num i, GHC.Arr.Ix i, Data.Array.Base.IArray Data.Array.Base.UArray a, Test.QuickCheck.Arbitrary.Arbitrary i, Test.QuickCheck.Arbitrary.Arbitrary a) => Test.QuickCheck.Arbitrary.Arbitrary (Data.Array.Base.UArray i a)
+ Test.QuickCheck.Instances.Array: instance (GHC.Num.Num i, GHC.Arr.Ix i, Test.QuickCheck.Arbitrary.Arbitrary i) => Test.QuickCheck.Arbitrary.Arbitrary1 (GHC.Arr.Array i)
+ Test.QuickCheck.Instances.Array: instance (GHC.Num.Num i, GHC.Arr.Ix i, Test.QuickCheck.Arbitrary.Arbitrary i, Test.QuickCheck.Arbitrary.Arbitrary a) => Test.QuickCheck.Arbitrary.Arbitrary (GHC.Arr.Array i a)
+ Test.QuickCheck.Instances.ByteString: instance Test.QuickCheck.Arbitrary.Arbitrary Data.ByteString.Internal.ByteString
+ Test.QuickCheck.Instances.ByteString: instance Test.QuickCheck.Arbitrary.Arbitrary Data.ByteString.Lazy.Internal.ByteString
+ Test.QuickCheck.Instances.ByteString: instance Test.QuickCheck.Arbitrary.Arbitrary Data.ByteString.Short.Internal.ShortByteString
+ Test.QuickCheck.Instances.ByteString: instance Test.QuickCheck.Arbitrary.CoArbitrary Data.ByteString.Internal.ByteString
+ Test.QuickCheck.Instances.ByteString: instance Test.QuickCheck.Arbitrary.CoArbitrary Data.ByteString.Lazy.Internal.ByteString
+ Test.QuickCheck.Instances.ByteString: instance Test.QuickCheck.Arbitrary.CoArbitrary Data.ByteString.Short.Internal.ShortByteString
+ Test.QuickCheck.Instances.ByteString: instance Test.QuickCheck.Function.Function Data.ByteString.Internal.ByteString
+ Test.QuickCheck.Instances.ByteString: instance Test.QuickCheck.Function.Function Data.ByteString.Lazy.Internal.ByteString
+ Test.QuickCheck.Instances.ByteString: instance Test.QuickCheck.Function.Function Data.ByteString.Short.Internal.ShortByteString
+ Test.QuickCheck.Instances.CaseInsensitive: instance (Data.CaseInsensitive.Internal.FoldCase a, Test.QuickCheck.Arbitrary.Arbitrary a) => Test.QuickCheck.Arbitrary.Arbitrary (Data.CaseInsensitive.Internal.CI a)
+ Test.QuickCheck.Instances.CaseInsensitive: instance (Data.CaseInsensitive.Internal.FoldCase a, Test.QuickCheck.Function.Function a) => Test.QuickCheck.Function.Function (Data.CaseInsensitive.Internal.CI a)
+ Test.QuickCheck.Instances.CaseInsensitive: instance Test.QuickCheck.Arbitrary.CoArbitrary a => Test.QuickCheck.Arbitrary.CoArbitrary (Data.CaseInsensitive.Internal.CI a)
+ Test.QuickCheck.Instances.Containers: instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (Data.Tree.Tree a)
+ Test.QuickCheck.Instances.Containers: instance Test.QuickCheck.Arbitrary.Arbitrary1 Data.Tree.Tree
+ Test.QuickCheck.Instances.Containers: instance Test.QuickCheck.Arbitrary.CoArbitrary a => Test.QuickCheck.Arbitrary.CoArbitrary (Data.Tree.Tree a)
+ Test.QuickCheck.Instances.Hashable: instance (Data.Hashable.Class.Hashable a, Test.QuickCheck.Arbitrary.Arbitrary a) => Test.QuickCheck.Arbitrary.Arbitrary (Data.Hashable.Class.Hashed a)
+ Test.QuickCheck.Instances.Hashable: instance Test.QuickCheck.Arbitrary.CoArbitrary (Data.Hashable.Class.Hashed a)
+ Test.QuickCheck.Instances.Natural: instance Test.QuickCheck.Arbitrary.Arbitrary GHC.Natural.Natural
+ Test.QuickCheck.Instances.Natural: instance Test.QuickCheck.Arbitrary.CoArbitrary GHC.Natural.Natural
+ Test.QuickCheck.Instances.Natural: instance Test.QuickCheck.Function.Function GHC.Natural.Natural
+ Test.QuickCheck.Instances.OldTime: instance Test.QuickCheck.Arbitrary.Arbitrary System.Time.CalendarTime
+ Test.QuickCheck.Instances.OldTime: instance Test.QuickCheck.Arbitrary.Arbitrary System.Time.ClockTime
+ Test.QuickCheck.Instances.OldTime: instance Test.QuickCheck.Arbitrary.Arbitrary System.Time.Day
+ Test.QuickCheck.Instances.OldTime: instance Test.QuickCheck.Arbitrary.Arbitrary System.Time.Month
+ Test.QuickCheck.Instances.OldTime: instance Test.QuickCheck.Arbitrary.Arbitrary System.Time.TimeDiff
+ Test.QuickCheck.Instances.OldTime: instance Test.QuickCheck.Arbitrary.CoArbitrary System.Time.CalendarTime
+ Test.QuickCheck.Instances.OldTime: instance Test.QuickCheck.Arbitrary.CoArbitrary System.Time.ClockTime
+ Test.QuickCheck.Instances.OldTime: instance Test.QuickCheck.Arbitrary.CoArbitrary System.Time.Day
+ Test.QuickCheck.Instances.OldTime: instance Test.QuickCheck.Arbitrary.CoArbitrary System.Time.Month
+ Test.QuickCheck.Instances.OldTime: instance Test.QuickCheck.Arbitrary.CoArbitrary System.Time.TimeDiff
+ Test.QuickCheck.Instances.Scientific: instance Test.QuickCheck.Arbitrary.Arbitrary Data.Scientific.Scientific
+ Test.QuickCheck.Instances.Scientific: instance Test.QuickCheck.Arbitrary.CoArbitrary Data.Scientific.Scientific
+ Test.QuickCheck.Instances.Semigroup: instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (Data.List.NonEmpty.NonEmpty a)
+ Test.QuickCheck.Instances.Semigroup: instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (Data.Semigroup.First a)
+ Test.QuickCheck.Instances.Semigroup: instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (Data.Semigroup.Last a)
+ Test.QuickCheck.Instances.Semigroup: instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (Data.Semigroup.Max a)
+ Test.QuickCheck.Instances.Semigroup: instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (Data.Semigroup.Min a)
+ Test.QuickCheck.Instances.Semigroup: instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (Data.Semigroup.Option a)
+ Test.QuickCheck.Instances.Semigroup: instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (Data.Semigroup.WrappedMonoid a)
+ Test.QuickCheck.Instances.Semigroup: instance Test.QuickCheck.Arbitrary.Arbitrary1 Data.List.NonEmpty.NonEmpty
+ Test.QuickCheck.Instances.Semigroup: instance Test.QuickCheck.Arbitrary.Arbitrary1 Data.Semigroup.First
+ Test.QuickCheck.Instances.Semigroup: instance Test.QuickCheck.Arbitrary.Arbitrary1 Data.Semigroup.Last
+ Test.QuickCheck.Instances.Semigroup: instance Test.QuickCheck.Arbitrary.Arbitrary1 Data.Semigroup.Max
+ Test.QuickCheck.Instances.Semigroup: instance Test.QuickCheck.Arbitrary.Arbitrary1 Data.Semigroup.Min
+ Test.QuickCheck.Instances.Semigroup: instance Test.QuickCheck.Arbitrary.Arbitrary1 Data.Semigroup.Option
+ Test.QuickCheck.Instances.Semigroup: instance Test.QuickCheck.Arbitrary.Arbitrary1 Data.Semigroup.WrappedMonoid
+ Test.QuickCheck.Instances.Semigroup: instance Test.QuickCheck.Arbitrary.CoArbitrary a => Test.QuickCheck.Arbitrary.CoArbitrary (Data.List.NonEmpty.NonEmpty a)
+ Test.QuickCheck.Instances.Semigroup: instance Test.QuickCheck.Arbitrary.CoArbitrary a => Test.QuickCheck.Arbitrary.CoArbitrary (Data.Semigroup.First a)
+ Test.QuickCheck.Instances.Semigroup: instance Test.QuickCheck.Arbitrary.CoArbitrary a => Test.QuickCheck.Arbitrary.CoArbitrary (Data.Semigroup.Last a)
+ Test.QuickCheck.Instances.Semigroup: instance Test.QuickCheck.Arbitrary.CoArbitrary a => Test.QuickCheck.Arbitrary.CoArbitrary (Data.Semigroup.Max a)
+ Test.QuickCheck.Instances.Semigroup: instance Test.QuickCheck.Arbitrary.CoArbitrary a => Test.QuickCheck.Arbitrary.CoArbitrary (Data.Semigroup.Min a)
+ Test.QuickCheck.Instances.Semigroup: instance Test.QuickCheck.Arbitrary.CoArbitrary a => Test.QuickCheck.Arbitrary.CoArbitrary (Data.Semigroup.Option a)
+ Test.QuickCheck.Instances.Semigroup: instance Test.QuickCheck.Arbitrary.CoArbitrary a => Test.QuickCheck.Arbitrary.CoArbitrary (Data.Semigroup.WrappedMonoid a)
+ Test.QuickCheck.Instances.Semigroup: instance Test.QuickCheck.Function.Function a => Test.QuickCheck.Function.Function (Data.List.NonEmpty.NonEmpty a)
+ Test.QuickCheck.Instances.Semigroup: instance Test.QuickCheck.Function.Function a => Test.QuickCheck.Function.Function (Data.Semigroup.First a)
+ Test.QuickCheck.Instances.Semigroup: instance Test.QuickCheck.Function.Function a => Test.QuickCheck.Function.Function (Data.Semigroup.Last a)
+ Test.QuickCheck.Instances.Semigroup: instance Test.QuickCheck.Function.Function a => Test.QuickCheck.Function.Function (Data.Semigroup.Max a)
+ Test.QuickCheck.Instances.Semigroup: instance Test.QuickCheck.Function.Function a => Test.QuickCheck.Function.Function (Data.Semigroup.Min a)
+ Test.QuickCheck.Instances.Semigroup: instance Test.QuickCheck.Function.Function a => Test.QuickCheck.Function.Function (Data.Semigroup.Option a)
+ Test.QuickCheck.Instances.Semigroup: instance Test.QuickCheck.Function.Function a => Test.QuickCheck.Function.Function (Data.Semigroup.WrappedMonoid a)
+ Test.QuickCheck.Instances.Tagged: instance Test.QuickCheck.Arbitrary.Arbitrary1 Data.Proxy.Proxy
+ Test.QuickCheck.Instances.Tagged: instance Test.QuickCheck.Arbitrary.Arbitrary2 Data.Tagged.Tagged
+ Test.QuickCheck.Instances.Tagged: instance forall k (a :: k). Test.QuickCheck.Arbitrary.Arbitrary (Data.Proxy.Proxy a)
+ Test.QuickCheck.Instances.Tagged: instance forall k (a :: k). Test.QuickCheck.Arbitrary.Arbitrary1 (Data.Tagged.Tagged a)
+ Test.QuickCheck.Instances.Tagged: instance forall k (a :: k). Test.QuickCheck.Arbitrary.CoArbitrary (Data.Proxy.Proxy a)
+ Test.QuickCheck.Instances.Tagged: instance forall k (a :: k). Test.QuickCheck.Function.Function (Data.Proxy.Proxy a)
+ Test.QuickCheck.Instances.Tagged: instance forall k b (a :: k). Test.QuickCheck.Arbitrary.Arbitrary b => Test.QuickCheck.Arbitrary.Arbitrary (Data.Tagged.Tagged a b)
+ Test.QuickCheck.Instances.Tagged: instance forall k b (a :: k). Test.QuickCheck.Arbitrary.CoArbitrary b => Test.QuickCheck.Arbitrary.CoArbitrary (Data.Tagged.Tagged a b)
+ Test.QuickCheck.Instances.Tagged: instance forall k b (a :: k). Test.QuickCheck.Function.Function b => Test.QuickCheck.Function.Function (Data.Tagged.Tagged a b)
+ Test.QuickCheck.Instances.Text: instance Test.QuickCheck.Arbitrary.Arbitrary Data.Text.Internal.Lazy.Text
+ Test.QuickCheck.Instances.Text: instance Test.QuickCheck.Arbitrary.Arbitrary Data.Text.Internal.Text
+ Test.QuickCheck.Instances.Text: instance Test.QuickCheck.Arbitrary.CoArbitrary Data.Text.Internal.Lazy.Text
+ Test.QuickCheck.Instances.Text: instance Test.QuickCheck.Arbitrary.CoArbitrary Data.Text.Internal.Text
+ Test.QuickCheck.Instances.Text: instance Test.QuickCheck.Function.Function Data.Text.Internal.Lazy.Text
+ Test.QuickCheck.Instances.Text: instance Test.QuickCheck.Function.Function Data.Text.Internal.Text
+ Test.QuickCheck.Instances.Time: instance Test.QuickCheck.Arbitrary.Arbitrary Data.Time.Calendar.Days.Day
+ Test.QuickCheck.Instances.Time: instance Test.QuickCheck.Arbitrary.Arbitrary Data.Time.Clock.Internal.AbsoluteTime.AbsoluteTime
+ Test.QuickCheck.Instances.Time: instance Test.QuickCheck.Arbitrary.Arbitrary Data.Time.Clock.Internal.DiffTime.DiffTime
+ Test.QuickCheck.Instances.Time: instance Test.QuickCheck.Arbitrary.Arbitrary Data.Time.Clock.Internal.NominalDiffTime.NominalDiffTime
+ Test.QuickCheck.Instances.Time: instance Test.QuickCheck.Arbitrary.Arbitrary Data.Time.Clock.Internal.UTCTime.UTCTime
+ Test.QuickCheck.Instances.Time: instance Test.QuickCheck.Arbitrary.Arbitrary Data.Time.Clock.Internal.UniversalTime.UniversalTime
+ Test.QuickCheck.Instances.Time: instance Test.QuickCheck.Arbitrary.Arbitrary Data.Time.LocalTime.Internal.LocalTime.LocalTime
+ Test.QuickCheck.Instances.Time: instance Test.QuickCheck.Arbitrary.Arbitrary Data.Time.LocalTime.Internal.TimeOfDay.TimeOfDay
+ Test.QuickCheck.Instances.Time: instance Test.QuickCheck.Arbitrary.Arbitrary Data.Time.LocalTime.Internal.TimeZone.TimeZone
+ Test.QuickCheck.Instances.Time: instance Test.QuickCheck.Arbitrary.Arbitrary Data.Time.LocalTime.Internal.ZonedTime.ZonedTime
+ Test.QuickCheck.Instances.Time: instance Test.QuickCheck.Arbitrary.CoArbitrary Data.Time.Calendar.Days.Day
+ Test.QuickCheck.Instances.Time: instance Test.QuickCheck.Arbitrary.CoArbitrary Data.Time.Clock.Internal.AbsoluteTime.AbsoluteTime
+ Test.QuickCheck.Instances.Time: instance Test.QuickCheck.Arbitrary.CoArbitrary Data.Time.Clock.Internal.DiffTime.DiffTime
+ Test.QuickCheck.Instances.Time: instance Test.QuickCheck.Arbitrary.CoArbitrary Data.Time.Clock.Internal.NominalDiffTime.NominalDiffTime
+ Test.QuickCheck.Instances.Time: instance Test.QuickCheck.Arbitrary.CoArbitrary Data.Time.Clock.Internal.UTCTime.UTCTime
+ Test.QuickCheck.Instances.Time: instance Test.QuickCheck.Arbitrary.CoArbitrary Data.Time.Clock.Internal.UniversalTime.UniversalTime
+ Test.QuickCheck.Instances.Time: instance Test.QuickCheck.Arbitrary.CoArbitrary Data.Time.LocalTime.Internal.LocalTime.LocalTime
+ Test.QuickCheck.Instances.Time: instance Test.QuickCheck.Arbitrary.CoArbitrary Data.Time.LocalTime.Internal.TimeOfDay.TimeOfDay
+ Test.QuickCheck.Instances.Time: instance Test.QuickCheck.Arbitrary.CoArbitrary Data.Time.LocalTime.Internal.TimeZone.TimeZone
+ Test.QuickCheck.Instances.Time: instance Test.QuickCheck.Arbitrary.CoArbitrary Data.Time.LocalTime.Internal.ZonedTime.ZonedTime
+ Test.QuickCheck.Instances.Time: instance Test.QuickCheck.Function.Function Data.Time.Calendar.Days.Day
+ Test.QuickCheck.Instances.Time: instance Test.QuickCheck.Function.Function Data.Time.Clock.Internal.DiffTime.DiffTime
+ Test.QuickCheck.Instances.Time: instance Test.QuickCheck.Function.Function Data.Time.Clock.Internal.UTCTime.UTCTime
+ Test.QuickCheck.Instances.Transformer: instance (Test.QuickCheck.Arbitrary.Arbitrary1 f, Test.QuickCheck.Arbitrary.Arbitrary1 g) => Test.QuickCheck.Arbitrary.Arbitrary1 (Data.Functor.Sum.Sum f g)
+ Test.QuickCheck.Instances.Transformer: instance (Test.QuickCheck.Arbitrary.Arbitrary1 f, Test.QuickCheck.Arbitrary.Arbitrary1 g, Test.QuickCheck.Arbitrary.Arbitrary a) => Test.QuickCheck.Arbitrary.Arbitrary (Data.Functor.Sum.Sum f g a)
+ Test.QuickCheck.Instances.UUID: instance Test.QuickCheck.Arbitrary.Arbitrary Data.UUID.Types.Internal.UUID
+ Test.QuickCheck.Instances.UUID: instance Test.QuickCheck.Arbitrary.CoArbitrary Data.UUID.Types.Internal.UUID
+ Test.QuickCheck.Instances.UUID: instance Test.QuickCheck.Function.Function Data.UUID.Types.Internal.UUID
+ Test.QuickCheck.Instances.UnorderedContainers: instance (Data.Hashable.Class.Hashable a, GHC.Classes.Eq a, Test.QuickCheck.Arbitrary.Arbitrary a) => Test.QuickCheck.Arbitrary.Arbitrary (Data.HashSet.HashSet a)
+ Test.QuickCheck.Instances.UnorderedContainers: instance (Data.Hashable.Class.Hashable k, GHC.Classes.Eq k, Test.QuickCheck.Arbitrary.Arbitrary k) => Test.QuickCheck.Arbitrary.Arbitrary1 (Data.HashMap.Base.HashMap k)
+ Test.QuickCheck.Instances.UnorderedContainers: instance (Data.Hashable.Class.Hashable k, GHC.Classes.Eq k, Test.QuickCheck.Arbitrary.Arbitrary k, Test.QuickCheck.Arbitrary.Arbitrary v) => Test.QuickCheck.Arbitrary.Arbitrary (Data.HashMap.Base.HashMap k v)
+ Test.QuickCheck.Instances.UnorderedContainers: instance (Test.QuickCheck.Arbitrary.CoArbitrary k, Test.QuickCheck.Arbitrary.CoArbitrary v) => Test.QuickCheck.Arbitrary.CoArbitrary (Data.HashMap.Base.HashMap k v)
+ Test.QuickCheck.Instances.UnorderedContainers: instance Test.QuickCheck.Arbitrary.CoArbitrary a => Test.QuickCheck.Arbitrary.CoArbitrary (Data.HashSet.HashSet a)
+ Test.QuickCheck.Instances.Vector: instance (Data.Vector.Unboxed.Base.Unbox a, Test.QuickCheck.Arbitrary.Arbitrary a) => Test.QuickCheck.Arbitrary.Arbitrary (Data.Vector.Unboxed.Base.Vector a)
+ Test.QuickCheck.Instances.Vector: instance (Data.Vector.Unboxed.Base.Unbox a, Test.QuickCheck.Arbitrary.CoArbitrary a) => Test.QuickCheck.Arbitrary.CoArbitrary (Data.Vector.Unboxed.Base.Vector a)
+ Test.QuickCheck.Instances.Vector: instance (Foreign.Storable.Storable a, Test.QuickCheck.Arbitrary.Arbitrary a) => Test.QuickCheck.Arbitrary.Arbitrary (Data.Vector.Storable.Vector a)
+ Test.QuickCheck.Instances.Vector: instance (Foreign.Storable.Storable a, Test.QuickCheck.Arbitrary.CoArbitrary a) => Test.QuickCheck.Arbitrary.CoArbitrary (Data.Vector.Storable.Vector a)
+ Test.QuickCheck.Instances.Vector: instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (Data.Vector.Vector a)
+ Test.QuickCheck.Instances.Vector: instance Test.QuickCheck.Arbitrary.Arbitrary1 Data.Vector.Vector
+ Test.QuickCheck.Instances.Vector: instance Test.QuickCheck.Arbitrary.CoArbitrary a => Test.QuickCheck.Arbitrary.CoArbitrary (Data.Vector.Vector a)
Files
- CHANGES +8/−0
- quickcheck-instances.cabal +19/−4
- src/Test/QuickCheck/Instances.hs +17/−652
- src/Test/QuickCheck/Instances/Array.hs +51/−0
- src/Test/QuickCheck/Instances/ByteString.hs +53/−0
- src/Test/QuickCheck/Instances/CaseInsensitive.hs +25/−0
- src/Test/QuickCheck/Instances/Containers.hs +50/−0
- src/Test/QuickCheck/Instances/Hashable.hs +23/−0
- src/Test/QuickCheck/Instances/Natural.hs +25/−0
- src/Test/QuickCheck/Instances/OldTime.hs +86/−0
- src/Test/QuickCheck/Instances/Scientific.hs +26/−0
- src/Test/QuickCheck/Instances/Semigroup.hs +126/−0
- src/Test/QuickCheck/Instances/Tagged.hs +53/−0
- src/Test/QuickCheck/Instances/Text.hs +36/−0
- src/Test/QuickCheck/Instances/Time.hs +138/−0
- src/Test/QuickCheck/Instances/Transformer.hs +26/−0
- src/Test/QuickCheck/Instances/UUID.hs +31/−0
- src/Test/QuickCheck/Instances/UnorderedContainers.hs +38/−0
- src/Test/QuickCheck/Instances/Vector.hs +53/−0
CHANGES view
@@ -1,3 +1,11 @@+0.3.17++* Support GHC-8.4.1+* Split package into per-package modules+* Add instances for `ShortByteString`+* Add Function `ByteString` and `ShortByteString` instances (bytestring >= 0.10.4)+* Enable PolyKinds for `Tagged` instances (GHC >= 7.6)+ 0.3.16.1 * Support QuickCheck-2.11
quickcheck-instances.cabal view
@@ -1,5 +1,5 @@ Name: quickcheck-instances-Version: 0.3.16.1+Version: 0.3.17 Synopsis: Common quickcheck instances Description: QuickCheck instances. .@@ -33,7 +33,6 @@ GHC==7.10.3, GHC==8.0.2, GHC==8.2.2,- -- GHC-8.4 is in alpha atm GHC==8.4.1 Source-repository head@@ -42,9 +41,25 @@ 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 Hs-Source-Dirs: src Build-depends:- base >=4.5 && <4.11,+ base >=4.5 && <4.12, QuickCheck >=2.10 && <2.12, array >=0.4.0.0 && <0.6,@@ -59,7 +74,7 @@ text >=1.0.0.0 && <1.3, time >=1.4 && <1.9, transformers >=0.3.0.0 && <0.6,- transformers-compat >=0.5 && <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
src/Test/QuickCheck/Instances.hs view
@@ -29,655 +29,20 @@ -} module Test.QuickCheck.Instances () where -import Prelude ()-import Prelude.Compat--import Control.Applicative (liftA2)-import Data.Functor.Sum (Sum (..))-import Data.Hashable (Hashable, Hashed, hashed)-import Data.Int (Int32)-import Data.Ix (Ix (..))-import Data.List.NonEmpty (NonEmpty (..), nonEmpty)-import Data.Maybe (mapMaybe)-import Data.Proxy (Proxy (..))-import Data.Traversable (for)-import Data.Word (Word32)-import Numeric.Natural (Natural)--import Test.QuickCheck-import Test.QuickCheck.Function (functionIntegral)--import qualified Data.Array.IArray as Array-import qualified Data.Array.Unboxed as Array-import qualified Data.ByteString as BS-import qualified Data.ByteString.Lazy as BL-import qualified Data.CaseInsensitive as CI-import qualified Data.HashMap.Lazy as HML-import qualified Data.HashSet as HS-import qualified Data.Scientific as Scientific-import qualified Data.Semigroup as Semi-import qualified Data.Tagged as Tagged (Tagged (..))-import qualified Data.Text as TS-import qualified Data.Text.Lazy as TL-import qualified Data.Time as Time-import qualified Data.Time.Clock.TAI as Time-import qualified Data.Tree as Tree-import qualified Data.UUID.Types as UUID-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 System.Time as OldTime------------------------------------------------------------------------------------ array----------------------------------------------------------------------------------instance (Num i, Ix i, Arbitrary i) => Arbitrary1 (Array.Array i) where- liftArbitrary = liftA2 makeArray arbitrary . liftArbitrary- liftShrink = shrinkArray--instance (Num i, Ix i, Arbitrary i, Arbitrary a) => Arbitrary (Array.Array i a) where- arbitrary = arbitrary1- shrink = shrink1--instance (Ix i, CoArbitrary i, CoArbitrary a) => CoArbitrary (Array.Array i a) where- coarbitrary arr = coarbitrary (Array.bounds arr, Array.elems arr)---instance (Num i, Ix i, Array.IArray Array.UArray a, Arbitrary i, Arbitrary a) => Arbitrary (Array.UArray i a) where- arbitrary = liftA2 makeArray arbitrary arbitrary- shrink = shrinkArray shrink--instance (Ix i, Array.IArray Array.UArray a, CoArbitrary i, CoArbitrary a) => CoArbitrary (Array.UArray i a) where- coarbitrary arr = coarbitrary (Array.bounds arr, Array.elems arr)---shrinkArray- :: (Num i, Ix i, Array.IArray arr a, Arbitrary i)- => (a -> [a]) -> arr i a -> [arr i a]-shrinkArray shr arr =- [ makeArray lo xs | xs <- liftShrink shr (Array.elems arr) ] ++- [ makeArray lo' (Array.elems arr) | lo' <- shrink lo ]- where- (lo, _) = Array.bounds arr--makeArray :: (Num i, Ix i, Array.IArray arr a) => i -> [a] -> arr i a-makeArray lo xs = Array.listArray (lo, lo + fromIntegral (length xs - 1)) xs------------------------------------------------------------------------------------ vector----------------------------------------------------------------------------------instance Arbitrary1 Vector.Vector where- liftArbitrary = fmap Vector.fromList . liftArbitrary- liftShrink shr = fmap Vector.fromList . liftShrink shr . Vector.toList--instance Arbitrary a => Arbitrary (Vector.Vector a) where- arbitrary = arbitrary1- shrink = shrink1--instance CoArbitrary a => CoArbitrary (Vector.Vector a) where- coarbitrary = coarbitraryVector---instance (SVector.Storable a, Arbitrary a) => Arbitrary (SVector.Vector a) where- arbitrary = arbitraryVector- shrink = shrinkVector--instance (SVector.Storable a, CoArbitrary a) => CoArbitrary (SVector.Vector a) where- coarbitrary = coarbitraryVector--instance (UVector.Unbox a, Arbitrary a) => Arbitrary (UVector.Vector a) where- arbitrary = arbitraryVector- shrink = shrinkVector--instance (UVector.Unbox a, CoArbitrary a) => CoArbitrary (UVector.Vector a) where- coarbitrary = coarbitraryVector--arbitraryVector :: (GVector.Vector v a, Arbitrary a) => Gen (v a)-arbitraryVector = GVector.fromList `fmap` arbitrary--shrinkVector :: (GVector.Vector v a, Arbitrary a) => v a -> [v a]-shrinkVector = fmap GVector.fromList . shrink . GVector.toList--coarbitraryVector :: (GVector.Vector v a, CoArbitrary a) => v a -> Gen b -> Gen b-coarbitraryVector = coarbitrary . GVector.toList------------------------------------------------------------------------------------ scientific----------------------------------------------------------------------------------instance Arbitrary Scientific.Scientific where- arbitrary = do- c <- arbitrary- e <- arbitrary- return $ Scientific.scientific c e- shrink s = map (uncurry Scientific.scientific) $- shrink (Scientific.coefficient s, Scientific.base10Exponent s)--instance CoArbitrary Scientific.Scientific where- coarbitrary s = coarbitrary (Scientific.coefficient s, Scientific.base10Exponent s)------------------------------------------------------------------------------------ bytestring----------------------------------------------------------------------------------instance Arbitrary BS.ByteString where- arbitrary = BS.pack <$> arbitrary- shrink xs = BS.pack <$> shrink (BS.unpack xs)--instance Arbitrary BL.ByteString where- arbitrary = BL.pack <$> arbitrary- shrink xs = BL.pack <$> shrink (BL.unpack xs)--instance CoArbitrary BS.ByteString where- coarbitrary = coarbitrary . BS.unpack--instance CoArbitrary BL.ByteString where- coarbitrary = coarbitrary . BL.unpack------------------------------------------------------------------------------------ text----------------------------------------------------------------------------------instance Arbitrary TS.Text where- arbitrary = TS.pack <$> arbitrary- shrink xs = TS.pack <$> shrink (TS.unpack xs)--instance Arbitrary TL.Text where- arbitrary = TL.pack <$> arbitrary- shrink xs = TL.pack <$> shrink (TL.unpack xs)--instance CoArbitrary TS.Text where- coarbitrary = coarbitrary . TS.unpack--instance CoArbitrary TL.Text where- coarbitrary = coarbitrary . TL.unpack--instance Function TS.Text where- function = functionMap TS.unpack TS.pack--instance Function TL.Text where- function = functionMap TL.unpack TL.pack------------------------------------------------------------------------------------ unordered-containers----------------------------------------------------------------------------------instance (Hashable a, Eq a, Arbitrary a) => Arbitrary (HS.HashSet a) where- arbitrary = HS.fromList <$> arbitrary- shrink hashset = HS.fromList <$> shrink (HS.toList hashset)--instance CoArbitrary a => CoArbitrary (HS.HashSet a) where- coarbitrary = coarbitrary . HS.toList--instance (Hashable k, Eq k, Arbitrary k) => Arbitrary1 (HML.HashMap k) where- liftArbitrary arb =- HML.fromList <$> liftArbitrary (liftArbitrary2 arbitrary arb)- liftShrink shr m =- HML.fromList <$> liftShrink (liftShrink2 shrink shr) (HML.toList m)--instance (Hashable k, Eq k, Arbitrary k, Arbitrary v) => Arbitrary (HML.HashMap k v) where- arbitrary = arbitrary1- shrink = shrink1--instance (CoArbitrary k, CoArbitrary v) => CoArbitrary (HML.HashMap k v) where- coarbitrary = coarbitrary . HML.toList------------------------------------------------------------------------------------ hashable----------------------------------------------------------------------------------#if MIN_VERSION_hashable(1,2,5)-instance (Hashable a, Arbitrary a) => Arbitrary (Hashed a) where- arbitrary = hashed <$> arbitrary--instance CoArbitrary (Hashed a) where- coarbitrary x = coarbitrary (hashed x)-#endif------------------------------------------------------------------------------------ containers----------------------------------------------------------------------------------instance Arbitrary1 Tree.Tree where- liftArbitrary arb = go- where- go = sized $ \n -> do -- Sized is the size of the trees.- value <- arb- pars <- arbPartition (n - 1) -- can go negative!- forest <- for pars $ \i -> resize i go- return $ Tree.Node value forest-- arbPartition :: Int -> Gen [Int]- arbPartition k = case compare k 1 of- LT -> pure []- EQ -> pure [1]- GT -> do- first <- elements [1..k]- rest <- arbPartition $ k - first- return $ first : rest-- liftShrink shr = go - where- go (Tree.Node val forest) = forest ++- [ Tree.Node e fs- | (e, fs) <- liftShrink2 shr (liftShrink go) (val, forest)- ]--instance Arbitrary a => Arbitrary (Tree.Tree a) where- arbitrary = arbitrary1- shrink = shrink1--instance CoArbitrary a => CoArbitrary (Tree.Tree a) where- coarbitrary (Tree.Node val forest) =- coarbitrary val . coarbitrary forest------------------------------------------------------------------------------------ old-time----------------------------------------------------------------------------------instance Arbitrary OldTime.Month where- arbitrary = arbitraryBoundedEnum--instance CoArbitrary OldTime.Month where- coarbitrary = coarbitraryEnum--instance Arbitrary OldTime.Day where- arbitrary = arbitraryBoundedEnum--instance CoArbitrary OldTime.Day where- coarbitrary = coarbitraryEnum--instance Arbitrary OldTime.ClockTime where- arbitrary =- OldTime.TOD <$> choose (0, fromIntegral (maxBound :: Int32))- <*> choose (0, 1000000000000 - 1)- shrink (OldTime.TOD s p) =- [ OldTime.TOD s' p | s' <- shrink s ] ++- [ OldTime.TOD s p' | p' <- shrink p ]--instance CoArbitrary OldTime.ClockTime where- coarbitrary (OldTime.TOD s p) =- coarbitrary s . coarbitrary p--instance Arbitrary OldTime.TimeDiff where- -- a bit of a cheat ...- arbitrary =- OldTime.normalizeTimeDiff <$>- (OldTime.diffClockTimes <$> arbitrary <*> arbitrary)- shrink td@(OldTime.TimeDiff year month day hour minute sec picosec) =- [ td { OldTime.tdYear = y' } | y' <- shrink year ] ++- [ td { OldTime.tdMonth = m' } | m' <- shrink month ] ++- [ td { OldTime.tdDay = d' } | d' <- shrink day ] ++- [ td { OldTime.tdHour = h' } | h' <- shrink hour ] ++- [ td { OldTime.tdMin = m' } | m' <- shrink minute ] ++- [ td { OldTime.tdSec = s' } | s' <- shrink sec ] ++- [ td { OldTime.tdPicosec = p' } | p' <- shrink picosec ]--instance CoArbitrary OldTime.TimeDiff where- coarbitrary (OldTime.TimeDiff year month day hour minute sec picosec) =- coarbitrary year .- coarbitrary month .- coarbitrary day .- coarbitrary hour .- coarbitrary minute .- coarbitrary sec .- coarbitrary picosec---- UTC only-instance Arbitrary OldTime.CalendarTime where- arbitrary = OldTime.toUTCTime <$> arbitrary--instance CoArbitrary OldTime.CalendarTime where- coarbitrary (OldTime.CalendarTime- year month day hour minute sec picosec- wDay yDay tzName tz isDST) =- coarbitrary year .- coarbitrary month .- coarbitrary day .- coarbitrary hour .- coarbitrary minute .- coarbitrary sec .- coarbitrary picosec .- coarbitrary wDay .- coarbitrary yDay .- coarbitrary tzName .- coarbitrary tz .- coarbitrary isDST------------------------------------------------------------------------------------ time----------------------------------------------------------------------------------instance Arbitrary Time.Day where- arbitrary = Time.ModifiedJulianDay <$> (2000 +) <$> arbitrary- shrink = (Time.ModifiedJulianDay <$>) . shrink . Time.toModifiedJulianDay--instance CoArbitrary Time.Day where- coarbitrary = coarbitrary . Time.toModifiedJulianDay--instance Function Time.Day where- function = functionMap Time.toModifiedJulianDay Time.ModifiedJulianDay--instance Arbitrary Time.UniversalTime where- arbitrary = Time.ModJulianDate <$> (2000 +) <$> arbitrary- shrink = (Time.ModJulianDate <$>) . shrink . Time.getModJulianDate--instance CoArbitrary Time.UniversalTime where- coarbitrary = coarbitrary . Time.getModJulianDate--instance Arbitrary Time.DiffTime where- arbitrary = arbitrarySizedFractional-#if MIN_VERSION_time(1,3,0)- shrink = shrinkRealFrac-#else- shrink = (fromRational <$>) . shrink . toRational-#endif--instance CoArbitrary Time.DiffTime where- coarbitrary = coarbitraryReal--instance Function Time.DiffTime where- function = functionMap toRational fromRational--instance Arbitrary Time.UTCTime where- arbitrary =- Time.UTCTime- <$> arbitrary- <*> (fromRational . toRational <$> choose (0::Double, 86400))- shrink ut@(Time.UTCTime day dayTime) =- [ ut { Time.utctDay = d' } | d' <- shrink day ] ++- [ ut { Time.utctDayTime = t' } | t' <- shrink dayTime ]--instance CoArbitrary Time.UTCTime where- coarbitrary (Time.UTCTime day dayTime) =- coarbitrary day . coarbitrary dayTime--instance Function Time.UTCTime where- function = functionMap (\(Time.UTCTime day dt) -> (day,dt))- (uncurry Time.UTCTime)--instance Arbitrary Time.NominalDiffTime where- arbitrary = arbitrarySizedFractional- shrink = shrinkRealFrac--instance CoArbitrary Time.NominalDiffTime where- coarbitrary = coarbitraryReal--instance Arbitrary Time.TimeZone where- arbitrary =- Time.TimeZone- <$> choose (-12*60,14*60) -- utc offset (m)- <*> arbitrary -- is summer time- <*> (sequence . replicate 4 $ choose ('A','Z'))- shrink tz@(Time.TimeZone minutes summerOnly name) =- [ tz { Time.timeZoneMinutes = m' } | m' <- shrink minutes ] ++- [ tz { Time.timeZoneSummerOnly = s' } | s' <- shrink summerOnly ] ++- [ tz { Time.timeZoneName = n' } | n' <- shrink name ]--instance CoArbitrary Time.TimeZone where- coarbitrary (Time.TimeZone minutes summerOnly name) =- coarbitrary minutes . coarbitrary summerOnly . coarbitrary name--instance Arbitrary Time.TimeOfDay where- arbitrary =- Time.TimeOfDay- <$> choose (0, 23) -- hour- <*> choose (0, 59) -- minute- <*> (fromRational . toRational <$> choose (0::Double, 60)) -- picoseconds, via double- shrink tod@(Time.TimeOfDay hour minute sec) =- [ tod { Time.todHour = h' } | h' <- shrink hour ] ++- [ tod { Time.todMin = m' } | m' <- shrink minute ] ++- [ tod { Time.todSec = s' } | s' <- shrink sec ]--instance CoArbitrary Time.TimeOfDay where- coarbitrary (Time.TimeOfDay hour minute sec) =- coarbitrary hour . coarbitrary minute . coarbitrary sec--instance Arbitrary Time.LocalTime where- arbitrary =- Time.LocalTime- <$> arbitrary- <*> arbitrary- shrink lt@(Time.LocalTime day tod) =- [ lt { Time.localDay = d' } | d' <- shrink day ] ++- [ lt { Time.localTimeOfDay = t' } | t' <- shrink tod ]--instance CoArbitrary Time.LocalTime where- coarbitrary (Time.LocalTime day tod) =- coarbitrary day . coarbitrary tod--instance Arbitrary Time.ZonedTime where- arbitrary =- Time.ZonedTime- <$> arbitrary- <*> arbitrary- shrink zt@(Time.ZonedTime lt zone) =- [ zt { Time.zonedTimeToLocalTime = l' } | l' <- shrink lt ] ++- [ zt { Time.zonedTimeZone = z' } | z' <- shrink zone ]--instance CoArbitrary Time.ZonedTime where- coarbitrary (Time.ZonedTime lt zone) =- coarbitrary lt . coarbitrary zone--instance Arbitrary Time.AbsoluteTime where- arbitrary =- Time.addAbsoluteTime- <$> arbitrary- <*> return Time.taiEpoch- shrink at =- (`Time.addAbsoluteTime` at) <$> shrink (Time.diffAbsoluteTime at Time.taiEpoch)--instance CoArbitrary Time.AbsoluteTime where- coarbitrary = coarbitrary . flip Time.diffAbsoluteTime Time.taiEpoch------------------------------------------------------------------------------------ case-insensitive----------------------------------------------------------------------------------instance (CI.FoldCase a, Arbitrary a) => Arbitrary (CI.CI a) where- arbitrary = CI.mk <$> arbitrary- shrink = fmap CI.mk . shrink . CI.original--instance CoArbitrary a => CoArbitrary (CI.CI a) where- coarbitrary = coarbitrary . CI.original--instance (CI.FoldCase a, Function a) => Function (CI.CI a) where- function = functionMap CI.mk CI.original------------------------------------------------------------------------------------ tagged----------------------------------------------------------------------------------instance Arbitrary2 Tagged.Tagged where- liftArbitrary2 _ arb = Tagged.Tagged <$> arb- liftShrink2 _ shr = fmap Tagged.Tagged . shr . Tagged.unTagged--instance Arbitrary1 (Tagged.Tagged a) where- liftArbitrary arb = Tagged.Tagged <$> arb- liftShrink shr = fmap Tagged.Tagged . shr . Tagged.unTagged--instance Arbitrary b => Arbitrary (Tagged.Tagged a b) where- arbitrary = arbitrary1- shrink = shrink1--instance CoArbitrary b => CoArbitrary (Tagged.Tagged a b) where- coarbitrary = coarbitrary . Tagged.unTagged--instance Function b => Function (Tagged.Tagged a b) where- function = functionMap Tagged.unTagged Tagged.Tagged---instance Arbitrary1 Proxy where- liftArbitrary _ = pure Proxy- liftShrink _ _ = []--instance Arbitrary (Proxy a) where- arbitrary = pure Proxy- shrink _ = []--instance CoArbitrary (Proxy a) where- coarbitrary _ = id--instance Function (Proxy a) where- function = functionMap (const ()) (const Proxy)------------------------------------------------------------------------------------ uuid----------------------------------------------------------------------------------uuidFromWords :: (Word32, Word32, Word32, Word32) -> UUID.UUID-uuidFromWords (a,b,c,d) = UUID.fromWords a b c d---- | Uniform distribution.-instance Arbitrary UUID.UUID where- arbitrary = uuidFromWords <$> arbitrary- shrink = map uuidFromWords . shrink . UUID.toWords--instance CoArbitrary UUID.UUID where- coarbitrary = coarbitrary . UUID.toWords--instance Function UUID.UUID where- function = functionMap UUID.toWords uuidFromWords------------------------------------------------------------------------------------ nats----------------------------------------------------------------------------------instance Arbitrary Natural where- arbitrary = arbitrarySizedNatural- shrink = shrinkIntegral--instance CoArbitrary Natural where- coarbitrary = coarbitraryIntegral--instance Function Natural where- function = functionIntegral------------------------------------------------------------------------------------ semigroups----------------------------------------------------------------------------------instance Arbitrary1 NonEmpty where- liftArbitrary arb = liftA2 (:|) arb (liftArbitrary arb)- liftShrink shr (x :| xs) = mapMaybe nonEmpty . liftShrink shr $ x : xs--instance Arbitrary a => Arbitrary (NonEmpty a) where- arbitrary = arbitrary1- shrink = shrink1--instance CoArbitrary a => CoArbitrary (NonEmpty a) where- coarbitrary (x :| xs) = coarbitrary (x, xs)--instance Function a => Function (NonEmpty a) where- function = functionMap g h- where- g (x :| xs) = (x, xs)- h (x, xs) = x :| xs---instance Arbitrary1 Semi.Min where- liftArbitrary arb = Semi.Min <$> arb- liftShrink shr = map Semi.Min . shr . Semi.getMin--instance Arbitrary a => Arbitrary (Semi.Min a) where- arbitrary = arbitrary1- shrink = shrink1--instance CoArbitrary a => CoArbitrary (Semi.Min a) where- coarbitrary = coarbitrary . Semi.getMin--instance Function a => Function (Semi.Min a) where- function = functionMap Semi.getMin Semi.Min---instance Arbitrary1 Semi.Max where- liftArbitrary arb = Semi.Max <$> arb- liftShrink shr = map Semi.Max . shr . Semi.getMax--instance Arbitrary a => Arbitrary (Semi.Max a) where- arbitrary = arbitrary1- shrink = shrink1--instance CoArbitrary a => CoArbitrary (Semi.Max a) where- coarbitrary = coarbitrary . Semi.getMax--instance Function a => Function (Semi.Max a) where- function = functionMap Semi.getMax Semi.Max---instance Arbitrary1 Semi.First where- liftArbitrary arb = Semi.First <$> arb- liftShrink shr = map Semi.First . shr . Semi.getFirst--instance Arbitrary a => Arbitrary (Semi.First a) where- arbitrary = arbitrary1- shrink = shrink1--instance CoArbitrary a => CoArbitrary (Semi.First a) where- coarbitrary = coarbitrary . Semi.getFirst--instance Function a => Function (Semi.First a) where- function = functionMap Semi.getFirst Semi.First---instance Arbitrary1 Semi.Last where- liftArbitrary arb = Semi.Last <$> arb- liftShrink shr = map Semi.Last . shr . Semi.getLast--instance Arbitrary a => Arbitrary (Semi.Last a) where- arbitrary = arbitrary1- shrink = shrink1--instance CoArbitrary a => CoArbitrary (Semi.Last a) where- coarbitrary = coarbitrary . Semi.getLast--instance Function a => Function (Semi.Last a) where- function = functionMap Semi.getLast Semi.Last---instance Arbitrary1 Semi.WrappedMonoid where- liftArbitrary arb = Semi.WrapMonoid <$> arb- liftShrink shr = map Semi.WrapMonoid . shr . Semi.unwrapMonoid--instance Arbitrary a => Arbitrary (Semi.WrappedMonoid a) where- arbitrary = arbitrary1- shrink = shrink1--instance CoArbitrary a => CoArbitrary (Semi.WrappedMonoid a) where- coarbitrary = coarbitrary . Semi.unwrapMonoid--instance Function a => Function (Semi.WrappedMonoid a) where- function = functionMap Semi.unwrapMonoid Semi.WrapMonoid---instance Arbitrary1 Semi.Option where- liftArbitrary arb = Semi.Option <$> liftArbitrary arb- liftShrink shr = map Semi.Option . liftShrink shr . Semi.getOption--instance Arbitrary a => Arbitrary (Semi.Option a) where- arbitrary = arbitrary1- shrink = shrink1--instance CoArbitrary a => CoArbitrary (Semi.Option a) where- coarbitrary = coarbitrary . Semi.getOption--instance Function a => Function (Semi.Option a) where- function = functionMap Semi.getOption Semi.Option------------------------------------------------------------------------------------ transformers------------------------------------------------------------------------------------ TODO: CoArbitrary and Function, needs Coarbitrary1 and Function1--instance (Arbitrary1 f, Arbitrary1 g) => Arbitrary1 (Sum f g) where- liftArbitrary arb = oneof [fmap InL (liftArbitrary arb), fmap InR (liftArbitrary arb)]- liftShrink shr (InL f) = map InL (liftShrink shr f)- liftShrink shr (InR g) = map InR (liftShrink shr g)--instance (Arbitrary1 f, Arbitrary1 g, Arbitrary a) => Arbitrary (Sum f g a) where- arbitrary = arbitrary1- shrink = shrink1+import Test.QuickCheck.Instances.Array ()+import Test.QuickCheck.Instances.ByteString ()+import Test.QuickCheck.Instances.CaseInsensitive ()+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.Scientific ()+import Test.QuickCheck.Instances.Semigroup ()+import Test.QuickCheck.Instances.Tagged ()+import Test.QuickCheck.Instances.Text ()+import Test.QuickCheck.Instances.Time ()+import Test.QuickCheck.Instances.Transformer ()+import Test.QuickCheck.Instances.UUID ()+import Test.QuickCheck.Instances.UnorderedContainers ()+import Test.QuickCheck.Instances.Vector ()
+ src/Test/QuickCheck/Instances/Array.hs view
@@ -0,0 +1,51 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE FlexibleContexts #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}+module Test.QuickCheck.Instances.Array () where++import Prelude ()+import Prelude.Compat++import Control.Applicative (liftA2)+import Data.Ix (Ix (..))++import Test.QuickCheck++import qualified Data.Array.IArray as Array+import qualified Data.Array.Unboxed as Array++-------------------------------------------------------------------------------+-- array+-------------------------------------------------------------------------------++instance (Num i, Ix i, Arbitrary i) => Arbitrary1 (Array.Array i) where+ liftArbitrary = liftA2 makeArray arbitrary . liftArbitrary+ liftShrink = shrinkArray++instance (Num i, Ix i, Arbitrary i, Arbitrary a) => Arbitrary (Array.Array i a) where+ arbitrary = arbitrary1+ shrink = shrink1++instance (Ix i, CoArbitrary i, CoArbitrary a) => CoArbitrary (Array.Array i a) where+ coarbitrary arr = coarbitrary (Array.bounds arr, Array.elems arr)+++instance (Num i, Ix i, Array.IArray Array.UArray a, Arbitrary i, Arbitrary a) => Arbitrary (Array.UArray i a) where+ arbitrary = liftA2 makeArray arbitrary arbitrary+ shrink = shrinkArray shrink++instance (Ix i, Array.IArray Array.UArray a, CoArbitrary i, CoArbitrary a) => CoArbitrary (Array.UArray i a) where+ coarbitrary arr = coarbitrary (Array.bounds arr, Array.elems arr)+++shrinkArray+ :: (Num i, Ix i, Array.IArray arr a, Arbitrary i)+ => (a -> [a]) -> arr i a -> [arr i a]+shrinkArray shr arr =+ [ makeArray lo xs | xs <- liftShrink shr (Array.elems arr) ] +++ [ makeArray lo' (Array.elems arr) | lo' <- shrink lo ]+ where+ (lo, _) = Array.bounds arr++makeArray :: (Num i, Ix i, Array.IArray arr a) => i -> [a] -> arr i a+makeArray lo xs = Array.listArray (lo, lo + fromIntegral (length xs - 1)) xs
+ src/Test/QuickCheck/Instances/ByteString.hs view
@@ -0,0 +1,53 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE FlexibleContexts #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}+module Test.QuickCheck.Instances.ByteString () where++import Prelude ()+import Prelude.Compat++import Test.QuickCheck++import qualified Data.ByteString as BS+import qualified Data.ByteString.Lazy as BL+#if MIN_VERSION_bytestring(0,10,4)+import qualified Data.ByteString.Short as SBS+#endif++-------------------------------------------------------------------------------+-- bytestring+-------------------------------------------------------------------------------++instance Arbitrary BS.ByteString where+ arbitrary = BS.pack <$> arbitrary+ shrink xs = BS.pack <$> shrink (BS.unpack xs)++instance CoArbitrary BS.ByteString where+ coarbitrary = coarbitrary . BS.unpack++instance Function BS.ByteString where+ function = functionMap BS.unpack BS.pack+++instance Arbitrary BL.ByteString where+ arbitrary = BL.pack <$> arbitrary+ shrink xs = BL.pack <$> shrink (BL.unpack xs)++instance CoArbitrary BL.ByteString where+ coarbitrary = coarbitrary . BL.unpack++instance Function BL.ByteString where+ function = functionMap BL.unpack BL.pack+++#if MIN_VERSION_bytestring(0,10,4)+instance Arbitrary SBS.ShortByteString where+ arbitrary = SBS.pack <$> arbitrary+ shrink xs = SBS.pack <$> shrink (SBS.unpack xs)++instance CoArbitrary SBS.ShortByteString where+ coarbitrary = coarbitrary . SBS.unpack++instance Function SBS.ShortByteString where+ function = functionMap SBS.unpack SBS.pack+#endif
+ src/Test/QuickCheck/Instances/CaseInsensitive.hs view
@@ -0,0 +1,25 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE FlexibleContexts #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}+module Test.QuickCheck.Instances.CaseInsensitive () where++import Prelude ()+import Prelude.Compat++import Test.QuickCheck++import qualified Data.CaseInsensitive as CI++-------------------------------------------------------------------------------+-- case-insensitive+-------------------------------------------------------------------------------++instance (CI.FoldCase a, Arbitrary a) => Arbitrary (CI.CI a) where+ arbitrary = CI.mk <$> arbitrary+ shrink = fmap CI.mk . shrink . CI.original++instance CoArbitrary a => CoArbitrary (CI.CI a) where+ coarbitrary = coarbitrary . CI.original++instance (CI.FoldCase a, Function a) => Function (CI.CI a) where+ function = functionMap CI.mk CI.original
+ src/Test/QuickCheck/Instances/Containers.hs view
@@ -0,0 +1,50 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE FlexibleContexts #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}+module Test.QuickCheck.Instances.Containers () where++import Prelude ()+import Prelude.Compat++import Data.Traversable (for)++import Test.QuickCheck++import qualified Data.Tree as Tree++-------------------------------------------------------------------------------+-- containers+-------------------------------------------------------------------------------++instance Arbitrary1 Tree.Tree where+ liftArbitrary arb = go+ where+ go = sized $ \n -> do -- Sized is the size of the trees.+ value <- arb+ pars <- arbPartition (n - 1) -- can go negative!+ forest <- for pars $ \i -> resize i go+ return $ Tree.Node value forest++ arbPartition :: Int -> Gen [Int]+ arbPartition k = case compare k 1 of+ LT -> pure []+ EQ -> pure [1]+ GT -> do+ first <- elements [1..k]+ rest <- arbPartition $ k - first+ return $ first : rest++ liftShrink shr = go + where+ go (Tree.Node val forest) = forest +++ [ Tree.Node e fs+ | (e, fs) <- liftShrink2 shr (liftShrink go) (val, forest)+ ]++instance Arbitrary a => Arbitrary (Tree.Tree a) where+ arbitrary = arbitrary1+ shrink = shrink1++instance CoArbitrary a => CoArbitrary (Tree.Tree a) where+ coarbitrary (Tree.Node val forest) =+ coarbitrary val . coarbitrary forest
+ src/Test/QuickCheck/Instances/Hashable.hs view
@@ -0,0 +1,23 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE FlexibleContexts #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}+module Test.QuickCheck.Instances.Hashable () where++import Prelude ()+import Prelude.Compat++import Data.Hashable (Hashable, Hashed, hashed)++import Test.QuickCheck++-------------------------------------------------------------------------------+-- hashable+-------------------------------------------------------------------------------++#if MIN_VERSION_hashable(1,2,5)+instance (Hashable a, Arbitrary a) => Arbitrary (Hashed a) where+ arbitrary = hashed <$> arbitrary++instance CoArbitrary (Hashed a) where+ coarbitrary x = coarbitrary (hashed x)+#endif
+ src/Test/QuickCheck/Instances/Natural.hs view
@@ -0,0 +1,25 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE FlexibleContexts #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}+module Test.QuickCheck.Instances.Natural () where++import Prelude ()++import Numeric.Natural (Natural)++import Test.QuickCheck+import Test.QuickCheck.Function (functionIntegral)++-------------------------------------------------------------------------------+-- nats+-------------------------------------------------------------------------------++instance Arbitrary Natural where+ arbitrary = arbitrarySizedNatural+ shrink = shrinkIntegral++instance CoArbitrary Natural where+ coarbitrary = coarbitraryIntegral++instance Function Natural where+ function = functionIntegral
+ src/Test/QuickCheck/Instances/OldTime.hs view
@@ -0,0 +1,86 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE FlexibleContexts #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}+module Test.QuickCheck.Instances.OldTime () where++import Prelude ()+import Prelude.Compat++import Data.Int (Int32)++import Test.QuickCheck++import qualified System.Time as OldTime++-------------------------------------------------------------------------------+-- old-time+-------------------------------------------------------------------------------++instance Arbitrary OldTime.Month where+ arbitrary = arbitraryBoundedEnum++instance CoArbitrary OldTime.Month where+ coarbitrary = coarbitraryEnum++instance Arbitrary OldTime.Day where+ arbitrary = arbitraryBoundedEnum++instance CoArbitrary OldTime.Day where+ coarbitrary = coarbitraryEnum++instance Arbitrary OldTime.ClockTime where+ arbitrary =+ OldTime.TOD <$> choose (0, fromIntegral (maxBound :: Int32))+ <*> choose (0, 1000000000000 - 1)+ shrink (OldTime.TOD s p) =+ [ OldTime.TOD s' p | s' <- shrink s ] +++ [ OldTime.TOD s p' | p' <- shrink p ]++instance CoArbitrary OldTime.ClockTime where+ coarbitrary (OldTime.TOD s p) =+ coarbitrary s . coarbitrary p++instance Arbitrary OldTime.TimeDiff where+ -- a bit of a cheat ...+ arbitrary =+ OldTime.normalizeTimeDiff <$>+ (OldTime.diffClockTimes <$> arbitrary <*> arbitrary)+ shrink td@(OldTime.TimeDiff year month day hour minute sec picosec) =+ [ td { OldTime.tdYear = y' } | y' <- shrink year ] +++ [ td { OldTime.tdMonth = m' } | m' <- shrink month ] +++ [ td { OldTime.tdDay = d' } | d' <- shrink day ] +++ [ td { OldTime.tdHour = h' } | h' <- shrink hour ] +++ [ td { OldTime.tdMin = m' } | m' <- shrink minute ] +++ [ td { OldTime.tdSec = s' } | s' <- shrink sec ] +++ [ td { OldTime.tdPicosec = p' } | p' <- shrink picosec ]++instance CoArbitrary OldTime.TimeDiff where+ coarbitrary (OldTime.TimeDiff year month day hour minute sec picosec) =+ coarbitrary year .+ coarbitrary month .+ coarbitrary day .+ coarbitrary hour .+ coarbitrary minute .+ coarbitrary sec .+ coarbitrary picosec++-- UTC only+instance Arbitrary OldTime.CalendarTime where+ arbitrary = OldTime.toUTCTime <$> arbitrary++instance CoArbitrary OldTime.CalendarTime where+ coarbitrary (OldTime.CalendarTime+ year month day hour minute sec picosec+ wDay yDay tzName tz isDST) =+ coarbitrary year .+ coarbitrary month .+ coarbitrary day .+ coarbitrary hour .+ coarbitrary minute .+ coarbitrary sec .+ coarbitrary picosec .+ coarbitrary wDay .+ coarbitrary yDay .+ coarbitrary tzName .+ coarbitrary tz .+ coarbitrary isDST
+ src/Test/QuickCheck/Instances/Scientific.hs view
@@ -0,0 +1,26 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE FlexibleContexts #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}+module Test.QuickCheck.Instances.Scientific () where++import Prelude ()+import Prelude.Compat++import Test.QuickCheck++import qualified Data.Scientific as Scientific++-------------------------------------------------------------------------------+-- scientific+-------------------------------------------------------------------------------++instance Arbitrary Scientific.Scientific where+ arbitrary = do+ c <- arbitrary+ e <- arbitrary+ return $ Scientific.scientific c e+ shrink s = map (uncurry Scientific.scientific) $+ shrink (Scientific.coefficient s, Scientific.base10Exponent s)++instance CoArbitrary Scientific.Scientific where+ coarbitrary s = coarbitrary (Scientific.coefficient s, Scientific.base10Exponent s)
+ src/Test/QuickCheck/Instances/Semigroup.hs view
@@ -0,0 +1,126 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE FlexibleContexts #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}+module Test.QuickCheck.Instances.Semigroup () where++import Prelude ()+import Prelude.Compat++import Control.Applicative (liftA2)+import Data.List.NonEmpty (NonEmpty (..), nonEmpty)+import Data.Maybe (mapMaybe)++import Test.QuickCheck++import qualified Data.Semigroup as Semi++-------------------------------------------------------------------------------+-- semigroups+-------------------------------------------------------------------------------++instance Arbitrary1 NonEmpty where+ liftArbitrary arb = liftA2 (:|) arb (liftArbitrary arb)+ liftShrink shr (x :| xs) = mapMaybe nonEmpty . liftShrink shr $ x : xs++instance Arbitrary a => Arbitrary (NonEmpty a) where+ arbitrary = arbitrary1+ shrink = shrink1++instance CoArbitrary a => CoArbitrary (NonEmpty a) where+ coarbitrary (x :| xs) = coarbitrary (x, xs)++instance Function a => Function (NonEmpty a) where+ function = functionMap g h+ where+ g (x :| xs) = (x, xs)+ h (x, xs) = x :| xs+++instance Arbitrary1 Semi.Min where+ liftArbitrary arb = Semi.Min <$> arb+ liftShrink shr = map Semi.Min . shr . Semi.getMin++instance Arbitrary a => Arbitrary (Semi.Min a) where+ arbitrary = arbitrary1+ shrink = shrink1++instance CoArbitrary a => CoArbitrary (Semi.Min a) where+ coarbitrary = coarbitrary . Semi.getMin++instance Function a => Function (Semi.Min a) where+ function = functionMap Semi.getMin Semi.Min+++instance Arbitrary1 Semi.Max where+ liftArbitrary arb = Semi.Max <$> arb+ liftShrink shr = map Semi.Max . shr . Semi.getMax++instance Arbitrary a => Arbitrary (Semi.Max a) where+ arbitrary = arbitrary1+ shrink = shrink1++instance CoArbitrary a => CoArbitrary (Semi.Max a) where+ coarbitrary = coarbitrary . Semi.getMax++instance Function a => Function (Semi.Max a) where+ function = functionMap Semi.getMax Semi.Max+++instance Arbitrary1 Semi.First where+ liftArbitrary arb = Semi.First <$> arb+ liftShrink shr = map Semi.First . shr . Semi.getFirst++instance Arbitrary a => Arbitrary (Semi.First a) where+ arbitrary = arbitrary1+ shrink = shrink1++instance CoArbitrary a => CoArbitrary (Semi.First a) where+ coarbitrary = coarbitrary . Semi.getFirst++instance Function a => Function (Semi.First a) where+ function = functionMap Semi.getFirst Semi.First+++instance Arbitrary1 Semi.Last where+ liftArbitrary arb = Semi.Last <$> arb+ liftShrink shr = map Semi.Last . shr . Semi.getLast++instance Arbitrary a => Arbitrary (Semi.Last a) where+ arbitrary = arbitrary1+ shrink = shrink1++instance CoArbitrary a => CoArbitrary (Semi.Last a) where+ coarbitrary = coarbitrary . Semi.getLast++instance Function a => Function (Semi.Last a) where+ function = functionMap Semi.getLast Semi.Last+++instance Arbitrary1 Semi.WrappedMonoid where+ liftArbitrary arb = Semi.WrapMonoid <$> arb+ liftShrink shr = map Semi.WrapMonoid . shr . Semi.unwrapMonoid++instance Arbitrary a => Arbitrary (Semi.WrappedMonoid a) where+ arbitrary = arbitrary1+ shrink = shrink1++instance CoArbitrary a => CoArbitrary (Semi.WrappedMonoid a) where+ coarbitrary = coarbitrary . Semi.unwrapMonoid++instance Function a => Function (Semi.WrappedMonoid a) where+ function = functionMap Semi.unwrapMonoid Semi.WrapMonoid+++instance Arbitrary1 Semi.Option where+ liftArbitrary arb = Semi.Option <$> liftArbitrary arb+ liftShrink shr = map Semi.Option . liftShrink shr . Semi.getOption++instance Arbitrary a => Arbitrary (Semi.Option a) where+ arbitrary = arbitrary1+ shrink = shrink1++instance CoArbitrary a => CoArbitrary (Semi.Option a) where+ coarbitrary = coarbitrary . Semi.getOption++instance Function a => Function (Semi.Option a) where+ function = functionMap Semi.getOption Semi.Option
+ src/Test/QuickCheck/Instances/Tagged.hs view
@@ -0,0 +1,53 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE FlexibleContexts #-}+#if __GLASGOW_HASKELL__ >= 706+{-# LANGUAGE PolyKinds #-}+#endif+{-# OPTIONS_GHC -fno-warn-orphans #-}+module Test.QuickCheck.Instances.Tagged () where++import Prelude ()+import Prelude.Compat++import Data.Proxy (Proxy (Proxy))++import Test.QuickCheck++import qualified Data.Tagged as Tagged (Tagged (..))++-------------------------------------------------------------------------------+-- tagged+-------------------------------------------------------------------------------++instance Arbitrary2 Tagged.Tagged where+ liftArbitrary2 _ arb = Tagged.Tagged <$> arb+ liftShrink2 _ shr = fmap Tagged.Tagged . shr . Tagged.unTagged++instance Arbitrary1 (Tagged.Tagged a) where+ liftArbitrary arb = Tagged.Tagged <$> arb+ liftShrink shr = fmap Tagged.Tagged . shr . Tagged.unTagged++instance Arbitrary b => Arbitrary (Tagged.Tagged a b) where+ arbitrary = arbitrary1+ shrink = shrink1++instance CoArbitrary b => CoArbitrary (Tagged.Tagged a b) where+ coarbitrary = coarbitrary . Tagged.unTagged++instance Function b => Function (Tagged.Tagged a b) where+ function = functionMap Tagged.unTagged Tagged.Tagged+++instance Arbitrary1 Proxy where+ liftArbitrary _ = pure Proxy+ liftShrink _ _ = []++instance Arbitrary (Proxy a) where+ arbitrary = pure Proxy+ shrink _ = []++instance CoArbitrary (Proxy a) where+ coarbitrary _ = id++instance Function (Proxy a) where+ function = functionMap (const ()) (const Proxy)
+ src/Test/QuickCheck/Instances/Text.hs view
@@ -0,0 +1,36 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE FlexibleContexts #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}+module Test.QuickCheck.Instances.Text () where++import Prelude ()+import Prelude.Compat++import Test.QuickCheck++import qualified Data.Text as TS+import qualified Data.Text.Lazy as TL++-------------------------------------------------------------------------------+-- text+-------------------------------------------------------------------------------++instance Arbitrary TS.Text where+ arbitrary = TS.pack <$> arbitrary+ shrink xs = TS.pack <$> shrink (TS.unpack xs)++instance Arbitrary TL.Text where+ arbitrary = TL.pack <$> arbitrary+ shrink xs = TL.pack <$> shrink (TL.unpack xs)++instance CoArbitrary TS.Text where+ coarbitrary = coarbitrary . TS.unpack++instance CoArbitrary TL.Text where+ coarbitrary = coarbitrary . TL.unpack++instance Function TS.Text where+ function = functionMap TS.unpack TS.pack++instance Function TL.Text where+ function = functionMap TL.unpack TL.pack
+ src/Test/QuickCheck/Instances/Time.hs view
@@ -0,0 +1,138 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE FlexibleContexts #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}+module Test.QuickCheck.Instances.Time () where++import Prelude ()+import Prelude.Compat++import Test.QuickCheck++import qualified Data.Time as Time+import qualified Data.Time.Clock.TAI as Time++-------------------------------------------------------------------------------+-- time+-------------------------------------------------------------------------------++instance Arbitrary Time.Day where+ arbitrary = Time.ModifiedJulianDay <$> (2000 +) <$> arbitrary+ shrink = (Time.ModifiedJulianDay <$>) . shrink . Time.toModifiedJulianDay++instance CoArbitrary Time.Day where+ coarbitrary = coarbitrary . Time.toModifiedJulianDay++instance Function Time.Day where+ function = functionMap Time.toModifiedJulianDay Time.ModifiedJulianDay++instance Arbitrary Time.UniversalTime where+ arbitrary = Time.ModJulianDate <$> (2000 +) <$> arbitrary+ shrink = (Time.ModJulianDate <$>) . shrink . Time.getModJulianDate++instance CoArbitrary Time.UniversalTime where+ coarbitrary = coarbitrary . Time.getModJulianDate++instance Arbitrary Time.DiffTime where+ arbitrary = arbitrarySizedFractional+#if MIN_VERSION_time(1,3,0)+ shrink = shrinkRealFrac+#else+ shrink = (fromRational <$>) . shrink . toRational+#endif++instance CoArbitrary Time.DiffTime where+ coarbitrary = coarbitraryReal++instance Function Time.DiffTime where+ function = functionMap toRational fromRational++instance Arbitrary Time.UTCTime where+ arbitrary =+ Time.UTCTime+ <$> arbitrary+ <*> (fromRational . toRational <$> choose (0::Double, 86400))+ shrink ut@(Time.UTCTime day dayTime) =+ [ ut { Time.utctDay = d' } | d' <- shrink day ] +++ [ ut { Time.utctDayTime = t' } | t' <- shrink dayTime ]++instance CoArbitrary Time.UTCTime where+ coarbitrary (Time.UTCTime day dayTime) =+ coarbitrary day . coarbitrary dayTime++instance Function Time.UTCTime where+ function = functionMap (\(Time.UTCTime day dt) -> (day,dt))+ (uncurry Time.UTCTime)++instance Arbitrary Time.NominalDiffTime where+ arbitrary = arbitrarySizedFractional+ shrink = shrinkRealFrac++instance CoArbitrary Time.NominalDiffTime where+ coarbitrary = coarbitraryReal++instance Arbitrary Time.TimeZone where+ arbitrary =+ Time.TimeZone+ <$> choose (-12*60,14*60) -- utc offset (m)+ <*> arbitrary -- is summer time+ <*> (sequence . replicate 4 $ choose ('A','Z'))+ shrink tz@(Time.TimeZone minutes summerOnly name) =+ [ tz { Time.timeZoneMinutes = m' } | m' <- shrink minutes ] +++ [ tz { Time.timeZoneSummerOnly = s' } | s' <- shrink summerOnly ] +++ [ tz { Time.timeZoneName = n' } | n' <- shrink name ]++instance CoArbitrary Time.TimeZone where+ coarbitrary (Time.TimeZone minutes summerOnly name) =+ coarbitrary minutes . coarbitrary summerOnly . coarbitrary name++instance Arbitrary Time.TimeOfDay where+ arbitrary =+ Time.TimeOfDay+ <$> choose (0, 23) -- hour+ <*> choose (0, 59) -- minute+ <*> (fromRational . toRational <$> choose (0::Double, 60)) -- picoseconds, via double+ shrink tod@(Time.TimeOfDay hour minute sec) =+ [ tod { Time.todHour = h' } | h' <- shrink hour ] +++ [ tod { Time.todMin = m' } | m' <- shrink minute ] +++ [ tod { Time.todSec = s' } | s' <- shrink sec ]++instance CoArbitrary Time.TimeOfDay where+ coarbitrary (Time.TimeOfDay hour minute sec) =+ coarbitrary hour . coarbitrary minute . coarbitrary sec++instance Arbitrary Time.LocalTime where+ arbitrary =+ Time.LocalTime+ <$> arbitrary+ <*> arbitrary+ shrink lt@(Time.LocalTime day tod) =+ [ lt { Time.localDay = d' } | d' <- shrink day ] +++ [ lt { Time.localTimeOfDay = t' } | t' <- shrink tod ]++instance CoArbitrary Time.LocalTime where+ coarbitrary (Time.LocalTime day tod) =+ coarbitrary day . coarbitrary tod++instance Arbitrary Time.ZonedTime where+ arbitrary =+ Time.ZonedTime+ <$> arbitrary+ <*> arbitrary+ shrink zt@(Time.ZonedTime lt zone) =+ [ zt { Time.zonedTimeToLocalTime = l' } | l' <- shrink lt ] +++ [ zt { Time.zonedTimeZone = z' } | z' <- shrink zone ]++instance CoArbitrary Time.ZonedTime where+ coarbitrary (Time.ZonedTime lt zone) =+ coarbitrary lt . coarbitrary zone++instance Arbitrary Time.AbsoluteTime where+ arbitrary =+ Time.addAbsoluteTime+ <$> arbitrary+ <*> return Time.taiEpoch+ shrink at =+ (`Time.addAbsoluteTime` at) <$> shrink (Time.diffAbsoluteTime at Time.taiEpoch)++instance CoArbitrary Time.AbsoluteTime where+ coarbitrary = coarbitrary . flip Time.diffAbsoluteTime Time.taiEpoch
+ src/Test/QuickCheck/Instances/Transformer.hs view
@@ -0,0 +1,26 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE FlexibleContexts #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}+module Test.QuickCheck.Instances.Transformer () where++import Prelude ()+import Prelude.Compat++import Data.Functor.Sum (Sum (..))++import Test.QuickCheck++-------------------------------------------------------------------------------+-- transformers+-------------------------------------------------------------------------------++-- TODO: CoArbitrary and Function, needs Coarbitrary1 and Function1++instance (Arbitrary1 f, Arbitrary1 g) => Arbitrary1 (Sum f g) where+ liftArbitrary arb = oneof [fmap InL (liftArbitrary arb), fmap InR (liftArbitrary arb)]+ liftShrink shr (InL f) = map InL (liftShrink shr f)+ liftShrink shr (InR g) = map InR (liftShrink shr g)++instance (Arbitrary1 f, Arbitrary1 g, Arbitrary a) => Arbitrary (Sum f g a) where+ arbitrary = arbitrary1+ shrink = shrink1
+ src/Test/QuickCheck/Instances/UUID.hs view
@@ -0,0 +1,31 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE FlexibleContexts #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}+module Test.QuickCheck.Instances.UUID () where++import Prelude ()+import Prelude.Compat++import Data.Word (Word32)++import Test.QuickCheck++import qualified Data.UUID.Types as UUID++-------------------------------------------------------------------------------+-- uuid+-------------------------------------------------------------------------------++uuidFromWords :: (Word32, Word32, Word32, Word32) -> UUID.UUID+uuidFromWords (a,b,c,d) = UUID.fromWords a b c d++-- | Uniform distribution.+instance Arbitrary UUID.UUID where+ arbitrary = uuidFromWords <$> arbitrary+ shrink = map uuidFromWords . shrink . UUID.toWords++instance CoArbitrary UUID.UUID where+ coarbitrary = coarbitrary . UUID.toWords++instance Function UUID.UUID where+ function = functionMap UUID.toWords uuidFromWords
+ src/Test/QuickCheck/Instances/UnorderedContainers.hs view
@@ -0,0 +1,38 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE FlexibleContexts #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}+module Test.QuickCheck.Instances.UnorderedContainers () where++import Prelude ()+import Prelude.Compat++import Data.Hashable (Hashable)++import Test.QuickCheck++import qualified Data.HashMap.Lazy as HML+import qualified Data.HashSet as HS++-------------------------------------------------------------------------------+-- unordered-containers+-------------------------------------------------------------------------------++instance (Hashable a, Eq a, Arbitrary a) => Arbitrary (HS.HashSet a) where+ arbitrary = HS.fromList <$> arbitrary+ shrink hashset = HS.fromList <$> shrink (HS.toList hashset)++instance CoArbitrary a => CoArbitrary (HS.HashSet a) where+ coarbitrary = coarbitrary . HS.toList++instance (Hashable k, Eq k, Arbitrary k) => Arbitrary1 (HML.HashMap k) where+ liftArbitrary arb =+ HML.fromList <$> liftArbitrary (liftArbitrary2 arbitrary arb)+ liftShrink shr m =+ HML.fromList <$> liftShrink (liftShrink2 shrink shr) (HML.toList m)++instance (Hashable k, Eq k, Arbitrary k, Arbitrary v) => Arbitrary (HML.HashMap k v) where+ arbitrary = arbitrary1+ shrink = shrink1++instance (CoArbitrary k, CoArbitrary v) => CoArbitrary (HML.HashMap k v) where+ coarbitrary = coarbitrary . HML.toList
+ src/Test/QuickCheck/Instances/Vector.hs view
@@ -0,0 +1,53 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE FlexibleContexts #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}+module Test.QuickCheck.Instances.Vector () where++import Prelude ()+import Prelude.Compat++import Test.QuickCheck++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++-------------------------------------------------------------------------------+-- vector+-------------------------------------------------------------------------------++instance Arbitrary1 Vector.Vector where+ liftArbitrary = fmap Vector.fromList . liftArbitrary+ liftShrink shr = fmap Vector.fromList . liftShrink shr . Vector.toList++instance Arbitrary a => Arbitrary (Vector.Vector a) where+ arbitrary = arbitrary1+ shrink = shrink1++instance CoArbitrary a => CoArbitrary (Vector.Vector a) where+ coarbitrary = coarbitraryVector+++instance (SVector.Storable a, Arbitrary a) => Arbitrary (SVector.Vector a) where+ arbitrary = arbitraryVector+ shrink = shrinkVector++instance (SVector.Storable a, CoArbitrary a) => CoArbitrary (SVector.Vector a) where+ coarbitrary = coarbitraryVector++instance (UVector.Unbox a, Arbitrary a) => Arbitrary (UVector.Vector a) where+ arbitrary = arbitraryVector+ shrink = shrinkVector++instance (UVector.Unbox a, CoArbitrary a) => CoArbitrary (UVector.Vector a) where+ coarbitrary = coarbitraryVector++arbitraryVector :: (GVector.Vector v a, Arbitrary a) => Gen (v a)+arbitraryVector = GVector.fromList `fmap` arbitrary++shrinkVector :: (GVector.Vector v a, Arbitrary a) => v a -> [v a]+shrinkVector = fmap GVector.fromList . shrink . GVector.toList++coarbitraryVector :: (GVector.Vector v a, CoArbitrary a) => v a -> Gen b -> Gen b+coarbitraryVector = coarbitrary . GVector.toList