diff options
author | Joey Hess <joey@kitenet.net> | 2012-12-19 22:58:31 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2012-12-19 23:13:50 -0400 |
commit | 066ee1c9dcd01649ae4acc665079d9a5cf525b54 (patch) | |
tree | 334d5eb98f55a448d734a239ced1d4f89ebe7af9 /Utility/QuickCheck.hs | |
parent | e12b224621c873b2d7fdaad1242e437b2b07cf30 (diff) |
refactor
Diffstat (limited to 'Utility/QuickCheck.hs')
-rw-r--r-- | Utility/QuickCheck.hs | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/Utility/QuickCheck.hs b/Utility/QuickCheck.hs new file mode 100644 index 000000000..e13b6c00d --- /dev/null +++ b/Utility/QuickCheck.hs @@ -0,0 +1,37 @@ +{- QuickCheck instances + - + - Copyright 2012 Joey Hess <joey@kitenet.net> + - + - Licensed under the GNU GPL version 3 or higher. + -} + +{-# OPTIONS_GHC -fno-warn-orphans #-} +{-# LANGUAGE TypeSynonymInstances #-} + +module Utility.QuickCheck where + +import Test.QuickCheck +import Data.Time.Clock.POSIX +import System.Posix.Types + +{- Times before the epoch are excluded. -} +instance Arbitrary POSIXTime where + arbitrary = nonNegative arbitrarySizedIntegral + +instance Arbitrary EpochTime where + arbitrary = nonNegative arbitrarySizedIntegral + +{- Pids are never negative, or 0. -} +instance Arbitrary ProcessID where + arbitrary = arbitrarySizedBoundedIntegral `suchThat` (> 0) + +{- Inodes are never negative. -} +instance Arbitrary FileID where + arbitrary = nonNegative arbitrarySizedIntegral + +{- File sizes are never negative. -} +instance Arbitrary FileOffset where + arbitrary = nonNegative arbitrarySizedIntegral + +nonNegative :: (Num a, Ord a) => Gen a -> Gen a +nonNegative g = g `suchThat` (>= 0) |