Add expect-member-of' and
expect-range' to DeinProgramm / DMdA languages.
svn: r16750
This commit is contained in:
parent
bd15e86680
commit
01058dfd26
|
@ -10,7 +10,7 @@
|
||||||
define-record-procedures-parametric define-record-procedures-parametric-2
|
define-record-procedures-parametric define-record-procedures-parametric-2
|
||||||
.. ... .... ..... ......
|
.. ... .... ..... ......
|
||||||
check-expect check-within check-error check-member-of check-range
|
check-expect check-within check-error check-member-of check-range
|
||||||
check-property for-all ==> expect expect-within
|
check-property for-all ==> expect expect-within expect-member-of expect-range
|
||||||
contract : define-contract -> mixed one-of predicate combined property
|
contract : define-contract -> mixed one-of predicate combined property
|
||||||
number real rational integer natural boolean true false string symbol empty-list unspecific
|
number real rational integer natural boolean true false string symbol empty-list unspecific
|
||||||
chocolate-cookie)
|
chocolate-cookie)
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
define-record-procedures-parametric define-record-procedures-parametric-2
|
define-record-procedures-parametric define-record-procedures-parametric-2
|
||||||
.. ... .... ..... ......
|
.. ... .... ..... ......
|
||||||
check-expect check-within check-error check-member-of check-range
|
check-expect check-within check-error check-member-of check-range
|
||||||
check-property for-all ==> expect expect-within
|
check-property for-all ==> expect expect-within expect-member-of expect-range
|
||||||
contract : define-contract -> mixed one-of predicate combined property
|
contract : define-contract -> mixed one-of predicate combined property
|
||||||
number real rational integer natural boolean true false string empty-list unspecific
|
number real rational integer natural boolean true false string empty-list unspecific
|
||||||
chocolate-cookie)
|
chocolate-cookie)
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
define-record-procedures define-record-procedures-parametric
|
define-record-procedures define-record-procedures-parametric
|
||||||
.. ... .... ..... ......
|
.. ... .... ..... ......
|
||||||
check-expect check-within check-error check-member-of check-range
|
check-expect check-within check-error check-member-of check-range
|
||||||
check-property for-all ==> expect expect-within
|
check-property for-all ==> expect expect-within expect-member-of expect-range
|
||||||
contract : define-contract -> mixed one-of predicate combined property
|
contract : define-contract -> mixed one-of predicate combined property
|
||||||
number real rational integer natural boolean true false string empty-list
|
number real rational integer natural boolean true false string empty-list
|
||||||
chocolate-cookie)
|
chocolate-cookie)
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
define-record-procedures define-record-procedures-parametric
|
define-record-procedures define-record-procedures-parametric
|
||||||
.. ... .... ..... ......
|
.. ... .... ..... ......
|
||||||
check-expect check-within check-error check-member-of check-range
|
check-expect check-within check-error check-member-of check-range
|
||||||
check-property for-all ==> expect expect-within
|
check-property for-all ==> expect expect-within expect-member-of expect-range
|
||||||
contract : define-contract -> mixed one-of predicate combined property
|
contract : define-contract -> mixed one-of predicate combined property
|
||||||
number real rational integer natural boolean true false string empty-list
|
number real rational integer natural boolean true false string empty-list
|
||||||
chocolate-cookie)
|
chocolate-cookie)
|
||||||
|
|
|
@ -72,8 +72,7 @@
|
||||||
|
|
||||||
(provide for-all ==>
|
(provide for-all ==>
|
||||||
check-property
|
check-property
|
||||||
expect
|
expect expect-within expect-member-of expect-range)
|
||||||
expect-within)
|
|
||||||
|
|
||||||
(provide quote)
|
(provide quote)
|
||||||
|
|
||||||
|
@ -1042,5 +1041,30 @@
|
||||||
(define (expect v1 v2)
|
(define (expect v1 v2)
|
||||||
(quickcheck:property () (beginner-equal? v1 v2)))
|
(quickcheck:property () (beginner-equal? v1 v2)))
|
||||||
|
|
||||||
|
(define (ensure-real who n val)
|
||||||
|
(unless (real? val)
|
||||||
|
(raise
|
||||||
|
(make-exn:fail:contract
|
||||||
|
(string->immutable-string
|
||||||
|
(format "~a Argument ~e zu `~a' keine reelle Zahl." n val who))
|
||||||
|
(current-continuation-marks)))))
|
||||||
|
|
||||||
(define (expect-within v1 v2 epsilon)
|
(define (expect-within v1 v2 epsilon)
|
||||||
|
(ensure-real 'expect-within "Drittes" epsilon)
|
||||||
(quickcheck:property () (beginner-equal~? v1 v2 epsilon)))
|
(quickcheck:property () (beginner-equal~? v1 v2 epsilon)))
|
||||||
|
|
||||||
|
(define (expect-range val min max)
|
||||||
|
(ensure-real 'expect-range "Erstes" val)
|
||||||
|
(ensure-real 'expect-range "Zweites" min)
|
||||||
|
(ensure-real 'expect-range "Drittes" max)
|
||||||
|
(quickcheck:property ()
|
||||||
|
(and (<= min val)
|
||||||
|
(<= val max))))
|
||||||
|
|
||||||
|
(define (expect-member-of val . candidates)
|
||||||
|
(quickcheck:property ()
|
||||||
|
(ormap (lambda (cand)
|
||||||
|
(beginner-equal? val cand))
|
||||||
|
candidates)))
|
||||||
|
|
||||||
|
|
|
@ -326,8 +326,8 @@ des ersten Operanden gleich dem Wert eines der folgenden Operanden ist.}
|
||||||
|
|
||||||
@defform[(check-range expr expr expr)]{
|
@defform[(check-range expr expr expr)]{
|
||||||
|
|
||||||
Ähnlich wie @scheme[check-expect]: Alle drei Operanden müssen ein
|
Ähnlich wie @scheme[check-expect]: Alle drei Operanden müssen
|
||||||
Zahlen. Der Testfall überprüft, ob die erste Zahl zwischen der
|
Zahlen sein. Der Testfall überprüft, ob die erste Zahl zwischen der
|
||||||
zweiten und der dritten liegt (inklusive).}
|
zweiten und der dritten liegt (inklusive).}
|
||||||
|
|
||||||
@defform[(check-error expr expr)]{
|
@defform[(check-error expr expr)]{
|
||||||
|
@ -465,6 +465,20 @@ resultierende Eigenschaft gilt, wenn jede Zahl im Resultat des ersten
|
||||||
@scheme[expr] maximal um @scheme[_delta] von der entsprechenden Zahl
|
@scheme[expr] maximal um @scheme[_delta] von der entsprechenden Zahl
|
||||||
im zweiten @scheme[expr] abweicht.}
|
im zweiten @scheme[expr] abweicht.}
|
||||||
|
|
||||||
|
@defform[(expect-member-of expr expr ...)]{
|
||||||
|
|
||||||
|
Wie @scheme[expect], aber entsprechend @scheme[check-member-of] mit
|
||||||
|
weiteren Ausdrücken, die mit dem ersten verglichen werden. Die
|
||||||
|
resultierende Eigenschaft gilt, wenn das erste Argument gleich
|
||||||
|
einem der anderen Argumente ist.}
|
||||||
|
|
||||||
|
@defform[(expect-range expr expr expr)]{
|
||||||
|
|
||||||
|
Wie @scheme[expect], aber entsprechend @scheme[check-range]: Die
|
||||||
|
Argumente müssen Zahlen sein. Die Eigenschaft gilt, wenn die erste Zahl
|
||||||
|
zwischen der zweiten und dritten Zahl liegt (inklusive).}
|
||||||
|
|
||||||
|
|
||||||
@defform[(==> expr expr)]{
|
@defform[(==> expr expr)]{
|
||||||
Der erste Operand ist ein boolescher Ausdruck, der zweite Operand eine
|
Der erste Operand ist ein boolescher Ausdruck, der zweite Operand eine
|
||||||
Eigenschaft: @scheme[(==> c p)] legt fest, daß die Eigenschaft
|
Eigenschaft: @scheme[(==> c p)] legt fest, daß die Eigenschaft
|
||||||
|
|
Loading…
Reference in New Issue
Block a user