{-# LANGUAGE CPP #-} {-# OPTIONS_GHC -Wall -fno-warn-orphans #-} 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 (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