cryptol-2.3.0: Cryptol: The Language of Cryptography

Copyright(c) 2013-2016 Galois, Inc.
LicenseBSD3
Maintainercryptol@galois.com
Stabilityprovisional
Portabilityportable
Safe HaskellSafe
LanguageHaskell98

Cryptol.Testing.Concrete

Description

 

Synopsis

Documentation

data TestResult Source

A test result is either a pass, a failure due to evaluating to False, or a failure due to an exception raised during evaluation

runOneTest :: Value -> [Value] -> IO TestResult Source

Apply a testable value to some arguments. Note that this function assumes that the values come from a call to testableType (i.e., things are type-correct). We run in the IO monad in order to catch any EvalErrors.

testableType :: Type -> Maybe (Integer, [[Value]]) Source

Given a (function) type, compute all possible inputs for it. We also return the total number of test (i.e., the length of the outer list.

typeSize :: Type -> Maybe Integer Source

Given a fully-evaluated type, try to compute the number of values in it. Returns Nothing for infinite types, user-defined types, polymorhic types, and, currently, function spaces. Of course, we can easily compute the sizes of function spaces, but we can't easily enumerate their inhabitants.

typeValues :: Type -> [Value] Source

Returns all the values in a type. Returns an empty list of values, for types where typeSize returned Nothing.

data TestSpec m s Source

Constructors

TestSpec 

Fields

testFn :: Integer -> s -> m (TestResult, s)
 
testProp :: String

The property as entered by the user

testTotal :: Integer
 
testPossible :: Integer
 
testRptProgress :: Integer -> Integer -> m ()
 
testClrProgress :: m ()
 
testRptFailure :: TestResult -> m ()
 
testRptSuccess :: m ()
 

data TestReport Source

Constructors

TestReport 

Fields

reportResult :: TestResult
 
reportProp :: String

The property as entered by the user

reportTestsRun :: Integer
 
reportTestsPossible :: Integer
 

runTests :: Monad m => TestSpec m s -> s -> m TestReport Source