{-# OPTIONS_GHC -Wno-orphans #-}
-- Stolen from quickcheck-instances (BSD-3)
module Data.Vector.Arbitrary () where

import Data.Vector (Vector)
import Test.QuickCheck (Arbitrary(..), Arbitrary1(..), arbitrary1, shrink1)
import qualified Data.Vector

instance Arbitrary1 Vector where
  liftArbitrary :: forall a. Gen a -> Gen (Vector a)
liftArbitrary =
    ([a] -> Vector a) -> Gen [a] -> Gen (Vector a)
forall a b. (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap [a] -> Vector a
forall a. [a] -> Vector a
Data.Vector.fromList
    (Gen [a] -> Gen (Vector a))
-> (Gen a -> Gen [a]) -> Gen a -> Gen (Vector a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Gen a -> Gen [a]
forall a. Gen a -> Gen [a]
forall (f :: * -> *) a. Arbitrary1 f => Gen a -> Gen (f a)
liftArbitrary
  liftShrink :: forall a. (a -> [a]) -> Vector a -> [Vector a]
liftShrink a -> [a]
shr =
    ([a] -> Vector a) -> [[a]] -> [Vector a]
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap [a] -> Vector a
forall a. [a] -> Vector a
Data.Vector.fromList
    ([[a]] -> [Vector a])
-> (Vector a -> [[a]]) -> Vector a -> [Vector a]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> [a]) -> [a] -> [[a]]
forall a. (a -> [a]) -> [a] -> [[a]]
forall (f :: * -> *) a. Arbitrary1 f => (a -> [a]) -> f a -> [f a]
liftShrink a -> [a]
shr
    ([a] -> [[a]]) -> (Vector a -> [a]) -> Vector a -> [[a]]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector a -> [a]
forall a. Vector a -> [a]
Data.Vector.toList

instance Arbitrary a => Arbitrary (Vector a) where
  arbitrary :: Gen (Vector a)
arbitrary = Gen (Vector a)
forall (f :: * -> *) a. (Arbitrary1 f, Arbitrary a) => Gen (f a)
arbitrary1
  shrink :: Vector a -> [Vector a]
shrink = Vector a -> [Vector a]
forall (f :: * -> *) a. (Arbitrary1 f, Arbitrary a) => f a -> [f a]
shrink1