From 104adf9c62a458e848019fc2331184c8c83ab29e Mon Sep 17 00:00:00 2001 From: Sam Tobin-Hochstadt Date: Thu, 14 Jan 2010 21:24:47 +0000 Subject: [PATCH] Types for the other `check-expect'-style forms. svn: r17657 --- .../typed-scheme/succeed/check-within.ss | 17 +++++++ collects/typed/test-engine/type-env-ext.ss | 50 ++++++++++++++++--- 2 files changed, 60 insertions(+), 7 deletions(-) create mode 100644 collects/tests/typed-scheme/succeed/check-within.ss diff --git a/collects/tests/typed-scheme/succeed/check-within.ss b/collects/tests/typed-scheme/succeed/check-within.ss new file mode 100644 index 0000000000..3056438484 --- /dev/null +++ b/collects/tests/typed-scheme/succeed/check-within.ss @@ -0,0 +1,17 @@ + +#lang typed-scheme + +(require scheme/math typed/test-engine/scheme-tests) + +(define-struct: circle ({radius : Number})) +(: circle-area (circle -> Number)) + +(check-within (+ 1 2.14) pi .1) +(check-range 2 1 3) +(check-member-of 'a 'b 'c 'd 'a 'z) +(check-error (error "fail") "fail") + +(define (circle-area c) + (* pi (circle-radius c) (circle-radius c))) + +(test) \ No newline at end of file diff --git a/collects/typed/test-engine/type-env-ext.ss b/collects/typed/test-engine/type-env-ext.ss index 346a529f17..2e1fa26fde 100644 --- a/collects/typed/test-engine/type-env-ext.ss +++ b/collects/typed/test-engine/type-env-ext.ss @@ -25,7 +25,15 @@ (when _ (insert-test _ (lambda () (check-values-expected _ _ _ _)))))) #'insert-test]) - (Univ (-> Univ) . -> . -Void)] + (Univ (-> Univ) . -> . -Void)] + ;; builder + [(syntax-parse (local-expand #'(ce:check-expect 1 1) 'module #f) + #:literals (let when define-values) + [(define-values _ + (let ((_ (nvv _ _ builder _))) + _)) + #'builder]) + (-> Univ)] ;; check-values-expected [(syntax-parse (local-expand #'(ce:check-expect 1 1) 'module #f) #:literals (let when define-values) @@ -35,13 +43,41 @@ (insert-test _ (lambda () (check-values-expected _ _ _ _)))))) #'check-values-expected]) ((-> Univ) Univ Univ Univ . -> . -Void)] - ;; builder - [(syntax-parse (local-expand #'(ce:check-expect 1 1) 'module #f) + ;; check-values-within + [(syntax-parse (local-expand #'(ce:check-within 1 1 1) 'module #f) #:literals (let when define-values) [(define-values _ - (let ((_ (nvv _ _ builder _))) - _)) - #'builder]) - (-> Univ)])) + (let ((_ _)) + (when _ + (insert-test _ (lambda () (check-values-within _ _ _ _ _)))))) + #'check-values-within]) + ((-> Univ) Univ -Real Univ Univ . -> . -Void)] + ;; check-values-error + [(syntax-parse (local-expand #'(ce:check-error 1 "foo") 'module #f) + #:literals (let when define-values) + [(define-values _ + (let ((_ _)) + (when _ + (insert-test _ (lambda () (check-values-error _ _ _ _)))))) + #'check-values-error]) + ((-> Univ) -String Univ Univ . -> . -Void)] + ;; check-range-values-expected + [(syntax-parse (local-expand #'(ce:check-range 1 1 1) 'module #f) + #:literals (let when define-values) + [(define-values _ + (let ((_ _)) + (when _ + (insert-test _ (lambda () (check-range-values-expected _ _ _ _ _)))))) + #'check-range-values-expected]) + ((-> -Real) -Real -Real Univ Univ . -> . -Void)] + ;; check-member-of-values-expected + [(syntax-parse (local-expand #'(ce:check-member-of 1 1) 'module #f) + #:literals (let when define-values) + [(define-values _ + (let ((_ _)) + (when _ + (insert-test _ (lambda () (check-member-of-values-expected _ _ _ _ _)))))) + #'check-member-of-values-expected]) + ((-> Univ) Univ (-lst Univ) Univ Univ . -> . -Void)])) (begin-for-syntax (initialize-type-env ce-env)) \ No newline at end of file