StdProperty.dcl 2.41 KB
Newer Older
1
definition module Gast.StdProperty
Bas Lijnse's avatar
Bas Lijnse committed
2 3 4 5

/*
	GAST: A Generic Automatic Software Test-system
	
6
	stdProperty: opertors on logical properties
Bas Lijnse's avatar
Bas Lijnse committed
7 8 9 10 11 12 13

	Pieter Koopman, 2004
	Radboud Universty, Nijmegen
	The Netherlands
	pieter@cs.ru.nl
*/

14
import Gast.GenLibTest
15
import Gast.Testable
16
from Testing.TestEvents import :: Relation
Bas Lijnse's avatar
Bas Lijnse committed
17 18 19 20 21 22 23 24 25 26 27 28 29 30

class (\/) infixr 2 a b	:: !a b -> Property	//	Conditional or  of arg1 and arg2
class (/\) infixr 3	a b :: !a b -> Property	//	Conditional and of arg1 and arg2

instance /\ Bool     Bool
instance /\ Property Bool
instance /\ Bool     Property
instance /\ Property Property

instance \/ Bool     Bool
instance \/ Property Bool
instance \/ Bool     Property
instance \/ Property Property

31 32 33 34 35
(=.=) infix 4 :: !a !a -> Property | Eq, genShow{|*|}, JSONEncode{|*|} a // shows values x and y if x == y yields False
(<.)  infix 4 :: !a !a -> Property | Ord, genShow{|*|}, JSONEncode{|*|} a // shows values x and y if x <  y yields False
(<=.) infix 4 :: !a !a -> Property | Ord, genShow{|*|}, JSONEncode{|*|} a // shows values x and y if x <= y yields False
(>.)  infix 4 :: !a !a -> Property | Ord, genShow{|*|}, JSONEncode{|*|} a // shows values x and y if x >  y yields False
(>=.) infix 4 :: !a !a -> Property | Ord, genShow{|*|}, JSONEncode{|*|} a // shows values x and y if x >= y yields False
36
check :: !(a b -> Bool) !a !b -> Property | genShow{|*|}, JSONEncode{|*|} a & genShow{|*|}, JSONEncode{|*|} b
37

38
class (==>) infixr 1 b :: !b p -> Property | Testable p
Bas Lijnse's avatar
Bas Lijnse committed
39 40 41 42

instance ==> Bool
instance ==> Property

43
(<==>) infix 1 :: !a !b -> Property	| Testable a & Testable b		//	True if properties are equivalent
Bas Lijnse's avatar
Bas Lijnse committed
44 45 46 47 48 49 50 51 52 53 54

ExistsIn :: (x->p) [x] -> Property | Testable p & TestArg x 		// type is too restricive
Exists :: (x->p) -> Property | Testable p & TestArg x
ForAll :: !(x->p) -> Property | Testable p & TestArg x

ForEach :: ![x] !(x->p) -> Property | Testable p & TestArg x
(For) infixl 0 :: !(x->p) ![x] -> Property | Testable p & TestArg x
(ForAndGen) infixl 0 :: !(x->p) ![x] -> Property | Testable p & TestArg x

classify :: !Bool l !p -> Property | Testable p & genShow{|*|} l
label ::  !l !p -> Property | Testable p & genShow{|*|} l
55
name :: !n !p -> Property | Testable p & toString n
56
limitNrOfRecFieldValues :: !(Map (TypeName, RecFieldName) Int) !p -> Property | Testable p
Bas Lijnse's avatar
Bas Lijnse committed
57 58 59

instance ~ Bool
instance ~ Property
Steffen Michels's avatar
Steffen Michels committed
60 61

approxEqual :: !a !a !a -> Property | abs, Ord, -, genShow{|*|}, JSONEncode{|*|} a