Add `property' contract for QuickCheck properties to DeinProgramm languages
... and don't export the old property "combinator" to the language levels. svn: r16770
This commit is contained in:
parent
3c68ac4a0c
commit
9d1c9672d9
|
@ -11,8 +11,8 @@
|
|||
.. ... .... ..... ......
|
||||
check-expect check-within check-error check-member-of check-range
|
||||
check-property for-all ==> expect expect-within expect-member-of expect-range
|
||||
contract : define-contract -> mixed one-of predicate combined property
|
||||
number real rational integer natural boolean true false string symbol empty-list unspecific
|
||||
contract : define-contract -> mixed one-of predicate combined
|
||||
number real rational integer natural boolean true false string symbol empty-list unspecific property
|
||||
chocolate-cookie)
|
||||
(provide cons)
|
||||
(provide-and-document
|
||||
|
|
|
@ -11,8 +11,8 @@
|
|||
.. ... .... ..... ......
|
||||
check-expect check-within check-error check-member-of check-range
|
||||
check-property for-all ==> expect expect-within expect-member-of expect-range
|
||||
contract : define-contract -> mixed one-of predicate combined property
|
||||
number real rational integer natural boolean true false string empty-list unspecific
|
||||
contract : define-contract -> mixed one-of predicate combined
|
||||
number real rational integer natural boolean true false string empty-list unspecific property
|
||||
chocolate-cookie)
|
||||
(provide cons)
|
||||
(provide-and-document
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
.. ... .... ..... ......
|
||||
check-expect check-within check-error check-member-of check-range
|
||||
check-property for-all ==> expect expect-within expect-member-of expect-range
|
||||
contract : define-contract -> mixed one-of predicate combined property
|
||||
number real rational integer natural boolean true false string empty-list
|
||||
contract : define-contract -> mixed one-of predicate combined
|
||||
number real rational integer natural boolean true false string empty-list property
|
||||
chocolate-cookie)
|
||||
(provide cons list)
|
||||
(provide-and-document
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
.. ... .... ..... ......
|
||||
check-expect check-within check-error check-member-of check-range
|
||||
check-property for-all ==> expect expect-within expect-member-of expect-range
|
||||
contract : define-contract -> mixed one-of predicate combined property
|
||||
number real rational integer natural boolean true false string empty-list
|
||||
contract : define-contract -> mixed one-of predicate combined
|
||||
number real rational integer natural boolean true false string empty-list property
|
||||
chocolate-cookie)
|
||||
(provide cons)
|
||||
(provide-and-document
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
(require deinprogramm/contract/module-begin
|
||||
deinprogramm/contract/contract
|
||||
deinprogramm/contract/contract-test-engine
|
||||
deinprogramm/contract/contract-syntax)
|
||||
(except-in deinprogramm/contract/contract-syntax property))
|
||||
|
||||
(require (for-syntax scheme/base)
|
||||
(for-syntax stepper/private/shared))
|
||||
|
@ -30,14 +30,15 @@
|
|||
(provide (all-from-out deinprogramm/define-record-procedures))
|
||||
(provide (all-from-out test-engine/scheme-tests))
|
||||
(provide contract define-contract :
|
||||
-> mixed one-of predicate combined property)
|
||||
-> mixed one-of predicate combined)
|
||||
|
||||
(provide number real rational integer natural
|
||||
boolean true false
|
||||
string symbol
|
||||
empty-list
|
||||
chocolate-cookie
|
||||
unspecific)
|
||||
unspecific
|
||||
property)
|
||||
|
||||
(define-syntax provide/rename
|
||||
(syntax-rules ()
|
||||
|
@ -1067,4 +1068,7 @@
|
|||
(beginner-equal? val cand))
|
||||
candidates)))
|
||||
|
||||
|
||||
(define property (contract (predicate (lambda (x)
|
||||
(or (boolean? x)
|
||||
(property? x))))))
|
||||
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
arbitrary-symbol
|
||||
arbitrary-procedure
|
||||
property
|
||||
property?
|
||||
==>
|
||||
label
|
||||
classify
|
||||
|
|
|
@ -243,7 +243,10 @@ Vertrag für die leere Liste.
|
|||
}
|
||||
|
||||
@defform/none[contract]{
|
||||
Vertrag Verträge.}
|
||||
Vertrag für Verträge.}
|
||||
|
||||
@defidform[property]{
|
||||
Vertrag für Eigenschaften.}
|
||||
|
||||
@subsection{@scheme[predicate]}
|
||||
@defform[(predicate expr)]{
|
||||
|
@ -276,17 +279,6 @@ für den Rückgabewert.
|
|||
}}
|
||||
}
|
||||
|
||||
@subsection{@scheme[property]}
|
||||
@defform[(property expr contr)]{
|
||||
Dieser Vertrag ist für ein Objekt @scheme[obj] gültig, wenn der
|
||||
Vertrag @scheme[contr] für @scheme[(expr obj)] gültig ist.
|
||||
|
||||
(In der Regel ist @scheme[expr] ein Record-Selektor @scheme[s]. In
|
||||
dem Fall ist der Vertrag @scheme[(property s c)] für alle Records
|
||||
gültig, bei denen der Wert des zu @scheme[s] gehörigen Felds den
|
||||
Vertrag @scheme[c] erfüllt.)
|
||||
}
|
||||
|
||||
@subsection{@scheme[list]}
|
||||
@defform[(list contr)]{
|
||||
Dieser Vertrag ist dann für einen Wert gültig, wenn dieser eine Liste ist,
|
||||
|
|
|
@ -60,7 +60,6 @@
|
|||
@#,scheme[(list contr)]
|
||||
@#,scheme[(code:line %a %b %c (code:comment @#,seclink["contract-variable"]{Vertrags-Variable}))]
|
||||
@#,scheme[(combined contr (... ...))]
|
||||
@#,scheme[(property expr contr)]
|
||||
@#,scheme[contract]
|
||||
]
|
||||
[test-case @#,scheme[(check-expect expr expr)]
|
||||
|
|
Loading…
Reference in New Issue
Block a user