packages feed

text-show-1: tests/Instances/System/Posix/Types.hs

{-# LANGUAGE CPP                        #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE StandaloneDeriving         #-}

{-# OPTIONS_GHC -fno-warn-orphans #-}

{-|
Module:      Instances.System.Posix.Types
Copyright:   (C) 2014-2015 Ryan Scott
License:     BSD-style (see the file LICENSE)
Maintainer:  Ryan Scott
Stability:   Provisional
Portability: GHC

'Arbitrary' instances for data types in the "System.Posix.Types" module.
-}
module Instances.System.Posix.Types () where

import Instances.Foreign.C.Types ()
import System.Posix.Types
import Test.QuickCheck (Arbitrary(..))

#if !(MIN_VERSION_base(4,5,0))
import Data.Word
import Test.QuickCheck (Gen, arbitrarySizedBoundedIntegral)
import Unsafe.Coerce (unsafeCoerce)
#endif

#include "HsBaseConfig.h"

#if MIN_VERSION_base(4,5,0)
# if defined(HTYPE_DEV_T)
deriving instance Arbitrary CDev
# endif
# if defined(HTYPE_INO_T)
deriving instance Arbitrary CIno
# endif
# if defined(HTYPE_MODE_T)
deriving instance Arbitrary CMode
# endif
# if defined(HTYPE_OFF_T)
deriving instance Arbitrary COff
# endif
# if defined(HTYPE_PID_T)
deriving instance Arbitrary CPid
# endif
# if defined(HTYPE_SSIZE_T)
deriving instance Arbitrary CSsize
# endif
# if defined(HTYPE_GID_T)
deriving instance Arbitrary CGid
# endif
# if defined(HTYPE_NLINK_T)
deriving instance Arbitrary CNlink
# endif
# if defined(HTYPE_UID_T)
deriving instance Arbitrary CUid
# endif
# if defined(HTYPE_CC_T)
deriving instance Arbitrary CCc
# endif
# if defined(HTYPE_SPEED_T)
deriving instance Arbitrary CSpeed
# endif
# if defined(HTYPE_TCFLAG_T)
deriving instance Arbitrary CTcflag
# endif
# if defined(HTYPE_RLIM_T)
deriving instance Arbitrary CRLim
# endif
#else
# if defined(HTYPE_DEV_T)
instance Arbitrary CDev where
    arbitrary = unsafeCoerce (arbitrary :: Gen HTYPE_DEV_T)
# endif
# if defined(HTYPE_INO_T)
instance Arbitrary CIno where
    arbitrary = arbitrarySizedBoundedIntegral
# endif
# if defined(HTYPE_MODE_T)
instance Arbitrary CMode where
    arbitrary = arbitrarySizedBoundedIntegral
# endif
# if defined(HTYPE_OFF_T)
instance Arbitrary COff where
    arbitrary = arbitrarySizedBoundedIntegral
# endif
# if defined(HTYPE_PID_T)
instance Arbitrary CPid where
    arbitrary = arbitrarySizedBoundedIntegral
# endif
# if defined(HTYPE_SSIZE_T)
instance Arbitrary CSsize where
    arbitrary = arbitrarySizedBoundedIntegral
# endif
# if defined(HTYPE_GID_T)
instance Arbitrary CGid where
    arbitrary = arbitrarySizedBoundedIntegral
# endif
# if defined(HTYPE_NLINK_T)
instance Arbitrary CNlink where
    arbitrary = arbitrarySizedBoundedIntegral
# endif
# if defined(HTYPE_UID_T)
instance Arbitrary CUid where
    arbitrary = arbitrarySizedBoundedIntegral
# endif
# if defined(HTYPE_CC_T)
instance Arbitrary CCc where
    arbitrary = unsafeCoerce (arbitrary :: Gen HTYPE_CC_T)
# endif
# if defined(HTYPE_SPEED_T)
instance Arbitrary CSpeed where
    arbitrary = unsafeCoerce (arbitrary :: Gen HTYPE_SPEED_T)
# endif
# if defined(HTYPE_TCFLAG_T)
instance Arbitrary CTcflag where
    arbitrary = arbitrarySizedBoundedIntegral
# endif
# if defined(HTYPE_RLIM_T)
instance Arbitrary CRLim where
    arbitrary = arbitrarySizedBoundedIntegral
# endif
#endif

deriving instance Arbitrary Fd