-- | QuickCheck's internal state. Internal QuickCheck module. module Test.QuickCheck.State where import Test.QuickCheck.Text import Test.QuickCheck.Random import Data.Map(Map) import Data.Set(Set) -------------------------------------------------------------------------- -- State -- | State represents QuickCheck's internal state while testing a property. -- The state is made visible to callback functions. data State = MkState -- static { terminal :: Terminal -- ^ the current terminal , maxSuccessTests :: Int -- ^ maximum number of successful tests needed , maxDiscardedTests :: Int -- ^ maximum number of tests that can be discarded , computeSize :: Int -> Int -> Int -- ^ how to compute the size of test cases from -- #tests and #discarded tests , numTotMaxShrinks :: !Int -- ^ How many shrinks to try before giving up -- dynamic , numSuccessTests :: !Int -- ^ the current number of tests that have succeeded , numDiscardedTests :: !Int -- ^ the current number of discarded tests , numRecentlyDiscardedTests :: !Int -- ^ the number of discarded tests since the last successful test , labels :: !(Map String Int) -- ^ all labels that have been defined so far , collected :: ![Set String] -- ^ all labels that have been collected so far , expectedFailure :: !Bool -- ^ indicates if the property is expected to fail , randomSeed :: !QCGen -- ^ the current random seed -- shrinking , numSuccessShrinks :: !Int -- ^ number of successful shrinking steps so far , numTryShrinks :: !Int -- ^ number of failed shrinking steps since the last successful shrink , numTotTryShrinks :: !Int -- ^ total number of failed shrinking steps } -------------------------------------------------------------------------- -- the end.