From e3c2721052b0e6b2f79763c8092f0407ca20f22e Mon Sep 17 00:00:00 2001 From: Kathy Gray Date: Fri, 18 Sep 2009 12:37:18 +0000 Subject: [PATCH] Adding check-member-of and check-range to the htdp languages and updating the docs. svn: r16064 --- collects/lang/htdp-advanced.ss | 2 ++ collects/lang/htdp-beginner-abbr.ss | 2 ++ collects/lang/htdp-beginner.ss | 2 ++ collects/lang/htdp-intermediate-lambda.ss | 2 ++ collects/lang/htdp-intermediate.ss | 2 ++ collects/scribblings/htdp-langs/advanced.scrbl | 2 ++ .../scribblings/htdp-langs/beginner-abbr.scrbl | 2 ++ collects/scribblings/htdp-langs/beginner.scrbl | 12 ++++++++++++ .../htdp-langs/intermediate-lambda.scrbl | 2 ++ .../scribblings/htdp-langs/intermediate.scrbl | 2 ++ collects/test-engine/test-engine.scrbl | 13 +++++++++++++ collects/tests/profj/TestEngineTest.ss | 15 ++++++++++++++- 12 files changed, 57 insertions(+), 1 deletion(-) diff --git a/collects/lang/htdp-advanced.ss b/collects/lang/htdp-advanced.ss index b36a3e4d1c..613b7b6ca4 100644 --- a/collects/lang/htdp-advanced.ss +++ b/collects/lang/htdp-advanced.ss @@ -55,6 +55,8 @@ check-expect check-within check-error + check-member-of + check-range #%datum #%top-interaction empty true false) diff --git a/collects/lang/htdp-beginner-abbr.ss b/collects/lang/htdp-beginner-abbr.ss index 0b834dbd66..8cde4498d6 100644 --- a/collects/lang/htdp-beginner-abbr.ss +++ b/collects/lang/htdp-beginner-abbr.ss @@ -39,6 +39,8 @@ check-expect check-within check-error + check-member-of + check-range #%datum #%top-interaction empty true false) diff --git a/collects/lang/htdp-beginner.ss b/collects/lang/htdp-beginner.ss index 88849a0d42..c3bc2f9ad1 100644 --- a/collects/lang/htdp-beginner.ss +++ b/collects/lang/htdp-beginner.ss @@ -40,6 +40,8 @@ check-expect check-within check-error + check-member-of + check-range #%datum #%top-interaction empty true false) diff --git a/collects/lang/htdp-intermediate-lambda.ss b/collects/lang/htdp-intermediate-lambda.ss index 338a803f47..11f6930b95 100644 --- a/collects/lang/htdp-intermediate-lambda.ss +++ b/collects/lang/htdp-intermediate-lambda.ss @@ -43,6 +43,8 @@ check-expect check-within check-error + check-member-of + check-range #%datum #%top-interaction empty true false) diff --git a/collects/lang/htdp-intermediate.ss b/collects/lang/htdp-intermediate.ss index 432cf281da..3dbd7a9eac 100644 --- a/collects/lang/htdp-intermediate.ss +++ b/collects/lang/htdp-intermediate.ss @@ -43,6 +43,8 @@ check-expect check-within check-error + check-member-of + check-range #%datum #%top-interaction empty true false) diff --git a/collects/scribblings/htdp-langs/advanced.scrbl b/collects/scribblings/htdp-langs/advanced.scrbl index 71b5c17c89..886fa09b2d 100644 --- a/collects/scribblings/htdp-langs/advanced.scrbl +++ b/collects/scribblings/htdp-langs/advanced.scrbl @@ -344,6 +344,8 @@ The same as Intermediate's @|intm-time|.} @defform[(check-expect expr expr)] @defform[(check-within expr expr expr)] @defform[(check-error expr expr)] +@defform[(check-member-of expr expr)] +@defform[(check-range expr expr expr)] )]{ The same as Beginning's @|beg-check-expect|, etc.} diff --git a/collects/scribblings/htdp-langs/beginner-abbr.scrbl b/collects/scribblings/htdp-langs/beginner-abbr.scrbl index 6c255cb6a9..5e45ad25df 100644 --- a/collects/scribblings/htdp-langs/beginner-abbr.scrbl +++ b/collects/scribblings/htdp-langs/beginner-abbr.scrbl @@ -172,6 +172,8 @@ The same as Beginning's @|beg-and| and @|beg-or|.} @defform[(check-expect expr expr)] @defform[(check-within expr expr expr)] @defform[(check-error expr expr)] +@defform[(check-member-of expr expr)] +@defform[(check-range expr expr expr)] )]{ The same as Beginning's @|beg-check-expect|, etc.} diff --git a/collects/scribblings/htdp-langs/beginner.scrbl b/collects/scribblings/htdp-langs/beginner.scrbl index e26a222ce6..6e551a5983 100644 --- a/collects/scribblings/htdp-langs/beginner.scrbl +++ b/collects/scribblings/htdp-langs/beginner.scrbl @@ -243,6 +243,18 @@ A test case to check that the first @scheme[expr] signals an error, where the error messages matches the string produced by the second @scheme[expr].} +@defform[(check-member-of expr expr)]{ + +A test case to check that the first @scheme[expr] produces an element +in the list of the second @scheme[expr].} + +@defform[(check-range expr expr expr)]{ + +A test case to check that the first @scheme[expr] produces a number +inbetween the numbers produced by the second and third @scheme[expr]s, +inclusive.} + + @; ---------------------------------------------------------------------- @section{@scheme[empty]} diff --git a/collects/scribblings/htdp-langs/intermediate-lambda.scrbl b/collects/scribblings/htdp-langs/intermediate-lambda.scrbl index 03d8aea6d1..d1f30c6a0b 100644 --- a/collects/scribblings/htdp-langs/intermediate-lambda.scrbl +++ b/collects/scribblings/htdp-langs/intermediate-lambda.scrbl @@ -178,6 +178,8 @@ The same as Intermediate's @|intm-time|.} @defform[(check-expect expr expr)] @defform[(check-within expr expr expr)] @defform[(check-error expr expr)] +@defform[(check-member-of expr expr)] +@defform[(check-range expr expr expr)] )]{ The same as Beginning's @|beg-check-expect|, etc.} diff --git a/collects/scribblings/htdp-langs/intermediate.scrbl b/collects/scribblings/htdp-langs/intermediate.scrbl index 7b04ea459e..37d9145f70 100644 --- a/collects/scribblings/htdp-langs/intermediate.scrbl +++ b/collects/scribblings/htdp-langs/intermediate.scrbl @@ -217,6 +217,8 @@ The same as Beginning's @|beg-and| and @|beg-or|.} @defform[(check-expect expr expr)] @defform[(check-within expr expr expr)] @defform[(check-error expr expr)] +@defform[(check-member-of expr expr)] +@defform[(check-range expr expr expr)] )]{ The same as Beginning's @|beg-check-expect|, etc.} diff --git a/collects/test-engine/test-engine.scrbl b/collects/test-engine/test-engine.scrbl index 0c9bd8c691..4dde83851c 100644 --- a/collects/test-engine/test-engine.scrbl +++ b/collects/test-engine/test-engine.scrbl @@ -46,6 +46,19 @@ It is an error to produce a function value.} Checks that evaluating the first expression signals an error, where the error message matches the string.} +@defform[(check-member-of (test any/c) (expecteds (listof any/c)))]{ + +Accepts two value-producing expressions, where the second expression +must evaluate to a list of values. Structurally compares the first +value to each value in the list. + +It is an error to produce a function value.} + +@defform[(check-range (test number/c) (min number/c) (max number/c))]{ + +Accepts three number-producing expressions. Performs the following comparison: +min <= test <= max.} + @defproc[(test) void?]{ Runs all of the tests specified by check forms in the current module diff --git a/collects/tests/profj/TestEngineTest.ss b/collects/tests/profj/TestEngineTest.ss index 504c1dd714..170d71979c 100644 --- a/collects/tests/profj/TestEngineTest.ss +++ b/collects/tests/profj/TestEngineTest.ss @@ -1,7 +1,7 @@ ;; The first three lines of this file were inserted by DrScheme. They record metadata ;; about the language level of this file in a form that our tools can easily process. #reader(lib "htdp-beginner-reader.ss" "lang")((modname TestEngineTest) (read-case-sensitive #t) (teachpacks ()) (htdp-settings #(#t constructor repeating-decimal #f #t none #f ()))) -;;Expect 29 checks, 17 failures +;;Expect 37 checks, 17 failures (define (count f) (cond @@ -42,3 +42,16 @@ (check-error (/ 1 0) "/: division by zero") (check-error 3 "some message") ;fails (check-error (first empty) "another message") ;fails + +(check-member-of (make-ball 1 1 'blue) (list (make-ball 1 2 'blue) (make-ball 1 1 'blue) (make-ball 1 2 'red) 'red)) +(check-member-of 1 (list 1 1 1 1)) +(check-member-of (make-ball 2 2 'blue) (list (make-ball 1 2 'blue) (make-ball 1 1 'blue) (make-ball 1 2 'red) 'red)) ;fails + +(check-range 5 0 10) +(check-range 0 0 10) +(check-range 10 0 10) +(check-range 11 0 10) ;fails +(check-range 5.01 0 10.5) +(check-range 0.0 0 10.5) +(check-range 10.5 0 10.5) +(check-range 10.5001 0 10.5) ;fails