diff --git a/pkgs/racket-pkgs/racket-test/tests/racket/contract/value-contract.rkt b/pkgs/racket-pkgs/racket-test/tests/racket/contract/value-contract.rkt index ef2ae39484..e69625b28c 100644 --- a/pkgs/racket-pkgs/racket-test/tests/racket/contract/value-contract.rkt +++ b/pkgs/racket-pkgs/racket-test/tests/racket/contract/value-contract.rkt @@ -1,8 +1,49 @@ #lang racket/base (require "test-util.rkt") -(parameterize ([current-contract-namespace (make-basic-contract-namespace - 'racket/contract)]) +(parameterize ([current-contract-namespace + (make-basic-contract-namespace 'racket/unit 'racket/class 'racket/contract)]) + + (ctest #f value-contract #f) + (ctest #f value-contract (λ (x) x)) + (ctest #f value-contract (unit (import) (export))) + (ctest #f value-contract object%) + + (contract-eval + `(let ([ctc (-> number? number?)]) + (,test ctc value-contract (contract ctc (λ (x) x) 'pos 'neg)))) + (contract-eval + `(let ([ctc (->* (number?) (number?) number?)]) + (,test ctc value-contract (contract ctc (λ (x [y 3]) x) 'pos 'neg)))) + (contract-eval + `(let ([ctc (->d ([x number?]) ([y number?]) [_ number?])]) + (,test ctc value-contract (contract ctc (λ (x [y 3]) x) 'pos 'neg)))) + (contract-eval + `(let ([ctc (->i ([x number?]) ([y number?]) [_ number?])]) + (,test ctc value-contract (contract ctc (λ (x [y 3]) x) 'pos 'neg)))) + (contract-eval + `(let ([ctc (unconstrained-domain-> number?)]) + (,test ctc value-contract (contract ctc (λ (x) 3) 'pos 'neg)))) + (contract-eval + `(let ([ctc (case-> (-> number? number? number?) (-> number? number?))]) + (,test ctc value-contract (contract ctc (case-lambda [(x) 3] [(x y) (+ x y)]) 'pos 'neg)))) + + (contract-eval + `(let ([ctc (box/c number?)]) + (,test ctc value-contract (contract ctc (box 3) 'pos 'neg)))) + (contract-eval + `(let ([ctc (hash/c number? number?)]) + (,test ctc value-contract (contract ctc (make-hash) 'pos 'neg)))) + (contract-eval + `(let ([ctc (vectorof number?)]) + (,test ctc value-contract (contract ctc (vector 1 2 3) 'pos 'neg)))) + (contract-eval + `(let ([ctc (vector/c number? number?)]) + (,test ctc value-contract (contract ctc (vector 4 5) 'pos 'neg)))) + + (contract-eval + `(let ([ctc (object-contract)]) + (,test ctc value-contract (contract ctc (new object%) 'pos 'neg)))) (test/spec-passed/result 'value-contract @@ -26,4 +67,4 @@ (or (and (has-blame? f) (blame-positive (value-blame f))) 'pos)) - 'pos)) + 'pos)) \ No newline at end of file