{-# LANGUAGE CPP #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module Orphans where import Prelude () import Prelude.Compat import Test.Tasty.QuickCheck import Data.Orphans () import Test.QuickCheck.Instances () #if !MIN_VERSION_quickcheck_instances(0,3,12) import Data.Vector as V #endif #if !(MIN_VERSION_QuickCheck(2,8,0) && MIN_VERSION_base(4,8,0)) && !(MIN_VERSION_QuickCheck(2,9,0)) import Numeric.Natural (Natural) #endif #if !MIN_VERSION_QuickCheck(2,9,0) import Control.Applicative (Const (..)) import Data.List.NonEmpty (NonEmpty (..)) import Data.Version (Version (..)) #endif import Data.Proxy (Proxy (..)) import Data.Tagged (Tagged (..)) #if !MIN_VERSION_quickcheck_instances(0,3,12) instance Arbitrary a => Arbitrary (Vector a) where arbitrary = V.fromList <$> arbitrary shrink = fmap V.fromList . shrink . V.toList #endif #if !(MIN_VERSION_QuickCheck(2,8,0) && MIN_VERSION_base(4,8,0)) && !(MIN_VERSION_QuickCheck(2,9,0)) instance Arbitrary Natural where arbitrary = fmap (fromInteger . abs) arbitrary #endif #if !MIN_VERSION_QuickCheck(2,9,0) instance Arbitrary a => Arbitrary (NonEmpty a) where arbitrary = do x <- arbitrary xs <- arbitrary return (x :| xs) instance Arbitrary a => Arbitrary (Const a b) where arbitrary = fmap Const arbitrary instance Arbitrary Version where arbitrary = do x <- fmap abs arbitrary xs <- (fmap . fmap) abs arbitrary return $ Version (x : xs) [] #endif instance Arbitrary a => Arbitrary (Tagged t a) where arbitrary = fmap Tagged arbitrary instance Arbitrary (Proxy a) where arbitrary = return Proxy