packages feed

text-show-instances-0.3: tests/Instances/Miscellaneous.hs

{-# LANGUAGE CPP                        #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE 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)

import Data.Functor ((<$>))
#endif

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