text-show-instances-0.1.0.1: tests/Instances/System/Posix.hs
{-# LANGUAGE CPP #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
{-|
Module: Instances.System.Posix
Copyright: (C) 2014-2015 Ryan Scott
License: BSD-style (see the file LICENSE)
Maintainer: Ryan Scott
Stability: Experimental
Portability: GHC
Provides 'Arbitrary' instances for data types in the @unix@ library.
-}
module Instances.System.Posix () where
#if !(MIN_VERSION_base(4,8,0))
import Control.Applicative ((<*>), pure)
#endif
import Data.Functor ((<$>))
import Instances.Miscellaneous ()
import System.Posix.DynamicLinker (RTLDFlags(..), DL(..))
import System.Posix.Process (ProcessStatus(..))
import System.Posix.User (GroupEntry(..), UserEntry(..))
import Test.Tasty.QuickCheck (Arbitrary(..), oneof)
instance Arbitrary RTLDFlags where
arbitrary = oneof $ map pure [RTLD_LAZY, RTLD_NOW, RTLD_GLOBAL, RTLD_LOCAL]
instance Arbitrary DL where
arbitrary = oneof [pure Null, pure Next, pure Default, DLHandle <$> arbitrary]
instance Arbitrary ProcessStatus where
arbitrary = oneof [ Exited <$> arbitrary
#if MIN_VERSION_unix(2,7,0)
, Terminated <$> arbitrary <*> arbitrary
#else
, Terminated <$> arbitrary
#endif
, Stopped <$> arbitrary
]
instance Arbitrary GroupEntry where
arbitrary = GroupEntry <$> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary
instance Arbitrary UserEntry where
arbitrary = UserEntry <$> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary
<*> arbitrary <*> arbitrary <*> arbitrary