{-# LANGUAGE CPP, GeneralizedNewtypeDeriving, StandaloneDeriving #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
{-|
Module: Instances.Miscellaneous
Copyright: (C) 2014-2015 Ryan Scott
License: BSD-style (see the file LICENSE)
Maintainer: Ryan Scott
Stability: Experimental
Portability: GHC
Provides miscellaneous 'Arbitrary' instances (taken from @text-show@).
-}
module Instances.Miscellaneous () where
#include "HsBaseConfig.h"
#if !(MIN_VERSION_base(4,8,0))
import Control.Applicative (pure)
#endif
import Data.Functor ((<$>))
import Data.Version (Version(..))
import Foreign.C.Types (CInt(..))
import Foreign.Ptr (Ptr, nullPtr, plusPtr)
import System.Exit (ExitCode(..))
#if defined(HTYPE_GID_T)
import System.Posix.Types (CGid(..))
#endif
#if defined(HTYPE_UID_T)
import System.Posix.Types (CUid(..))
#endif
import Test.Tasty.QuickCheck (Arbitrary(..), oneof)
instance Arbitrary ExitCode where
arbitrary = oneof [pure ExitSuccess, ExitFailure <$> arbitrary]
instance Arbitrary (Ptr a) where
arbitrary = plusPtr nullPtr <$> arbitrary
instance Arbitrary Version where
arbitrary = pure $ Version [0] [""]
-- arbitrary = Version <$> arbitrary <*> arbitrary
deriving instance Arbitrary CInt
#if defined(HTYPE_GID_T)
deriving instance Arbitrary CGid
#endif
#if defined(HTYPE_UID_T)
deriving instance Arbitrary CUid
#endif