{-# LANGUAGE CPP #-}
{-# OPTIONS_GHC -Wall -fno-warn-orphans #-}
#if MIN_VERSION_base(4,9,0)
{-# OPTIONS_GHC -Wno-redundant-constraints #-}
#endif
module Test.QuickCheck.Instances.Array where
import Test.QuickCheck
import Data.Array
instance (Ix a, Integral a, Arbitrary b) => Arbitrary (Array a b) where
arbitrary :: Gen (Array a b)
arbitrary =
(\[b]
x -> (a, a) -> [b] -> Array a b
forall i e. Ix i => (i, i) -> [e] -> Array i e
listArray (a
0,Int -> a
forall a b. (Integral a, Num b) => a -> b
fromIntegral ([b] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [b]
x Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1)) [b]
x) ([b] -> Array a b) -> Gen [b] -> Gen (Array a b)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen [b]
forall a. Arbitrary a => Gen a
arbitrary
instance (Ix a, CoArbitrary b) => CoArbitrary (Array a b) where
coarbitrary :: Array a b -> Gen b -> Gen b
coarbitrary = [b] -> Gen b -> Gen b
forall a b. CoArbitrary a => a -> Gen b -> Gen b
coarbitrary ([b] -> Gen b -> Gen b)
-> (Array a b -> [b]) -> Array a b -> Gen b -> Gen b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Array a b -> [b]
forall i e. Array i e -> [e]
elems