smartcheck-0.2: src/Test/SmartCheck/Args.hs
-- | SmartCheck arguments.
module Test.SmartCheck.Args
( ScArgs(..)
, scStdArgs
, Format(..)
) where
import qualified Test.QuickCheck as Q
-------------------------------------------------------------------------------
data Format = PrintTree | PrintString
deriving (Eq, Read, Show)
data ScArgs =
ScArgs { format :: Format -- ^ How to show extrapolated formula
--------------
, qcArgs :: Q.Args -- ^ QuickCheck arguments
--------------
, scMaxSize :: Int -- ^ Maximum size of data to generate, in
-- terms of the size parameter of
-- QuickCheck's Arbitrary instance for
-- your data.
--------------
, scMaxDepth :: Maybe Int -- ^ How many levels into the structure of
-- the failed value should we descend
-- when reducing or generalizing?
-- Nothing means we go down to base
-- types.
--------------
-- Reduction
, scMaxReduce :: Int -- ^ How hard (number of rounds) to look
-- for failure in the reduction stage.
--------------
-- Extrapolation
, runForall :: Bool -- ^ Should we extrapolate?
--------------
, scMaxForall :: Int -- ^ How hard (number of rounds) to look
-- for failures during the extrapolation
-- stage.
--------------
, scMinForall :: Int -- ^ Minimum number of times a property's
-- precondition must be passed to
-- generalize it.
--------------
-- Constructor generalization
, runExists :: Bool -- ^ Should we try to generalize
-- constructors?
--------------
, scMaxExists :: Int -- ^ How hard (number of rounds) to look
-- for failing values with each
-- constructor. For "wide" sum types, this
-- value should be increased.
--------------
} deriving (Show, Read)
--------------------------------------------------------------------------------
scStdArgs :: ScArgs
scStdArgs = ScArgs { format = PrintTree
, qcArgs = Q.stdArgs
, scMaxSize = 10
, scMaxDepth = Nothing
---------------------
, scMaxReduce = 100
---------------------
, runForall = True
, scMaxForall = 20
, scMinForall = 10
---------------------
, runExists = True
, scMaxExists = 20
}
--------------------------------------------------------------------------------