- verify :: Show b => a -> [Property (b -> Bool)] -> b -> a
- data Property a = Property String a
- data Properties a b c = Properties {}
- properties :: forall a b c. Properties a b c
- with :: (a -> b) -> a -> b
Documentation
verify :: Show b => a -> [Property (b -> Bool)] -> b -> aSource
Check a list of properties. when a property is violated, a trace error is printed at the end i return the first value, just like (flip trace) must be used as opeator:
expressionverify
propertieswith
value tuple
Example:
stringProperty=Property
"length" (\(x, y)-> length (x++y)== length x + length y) main= do let s= "hello " let s2= "world" print $ s++ s2 `verify
` stringProperty `with
`(s,s2) print "that's all!"
It is possible to check quickCheck style properties. The same example with a quickCheck style property:
quickCheckProperty x y= length (x++y)== length x + length y main= do let s= "hello " let s2= "world" print $ s++ s2 `verify
` [Property "stringSumLength" $ uncurry quickCheckProperty] `with
`(s,s2) print "that's all!"
A labeled property includes a string label and an expression
data Properties a b c Source
Properties is a convenient way to express list of properties with the same arity.
properties :: forall a b c. Properties a b cSource
empty properties: properties= Properties [] [] []