{-# LANGUAGE TypeOperators #-} module Util where import Control.Monad import Data.Word import Data.Int import Data.Array.Vector import Test.QuickCheck instance (Arbitrary e, UA e) => Arbitrary (UArr e) where arbitrary = fmap toU arbitrary instance (Arbitrary a, Arbitrary b) => Arbitrary (a :*: b) where arbitrary = (:*:) `fmap` arbitrary `ap` arbitrary instance Arbitrary Int8 where arbitrary = fromInteger `fmap` arbitrary instance Arbitrary Int16 where arbitrary = fromInteger `fmap` arbitrary instance Arbitrary Int32 where arbitrary = fromInteger `fmap` arbitrary instance Arbitrary Int64 where arbitrary = fromInteger `fmap` arbitrary instance Arbitrary Word8 where arbitrary = fromInteger `fmap` arbitrary instance Arbitrary Word16 where arbitrary = fromInteger `fmap` arbitrary instance Arbitrary Word32 where arbitrary = fromInteger `fmap` arbitrary instance Arbitrary Word64 where arbitrary = fromInteger `fmap` arbitrary instance Arbitrary Word where arbitrary = fromInteger `fmap` arbitrary