fixed structure printing, added example to check-range
This commit is contained in:
parent
b82b8a6c24
commit
fb34d4e76e
|
@ -444,7 +444,11 @@ In contrast, when @racket[delta] is small, the test fails:
|
||||||
#:eval
|
#:eval
|
||||||
(mk-eval
|
(mk-eval
|
||||||
(require test-engine/racket-tests)
|
(require test-engine/racket-tests)
|
||||||
(define-struct roots (x sqrt) #:transparent)
|
(define-struct roots (x sqrt)
|
||||||
|
#:transparent
|
||||||
|
#:methods gen:custom-write
|
||||||
|
[(define (write-proc x port mode)
|
||||||
|
(display `(make-roots ,(roots-x x) ,(roots-sqrt x)) port))])
|
||||||
(define (roots-table xs) (map (lambda (a) (make-roots a (sqrt a))) xs)))
|
(define (roots-table xs) (map (lambda (a) (make-roots a (sqrt a))) xs)))
|
||||||
|
|
||||||
(check-within (roots-table (list 2.))
|
(check-within (roots-table (list 2.))
|
||||||
|
@ -536,8 +540,26 @@ Consider the following two examples in this context:
|
||||||
Checks that the value of the first @racket[expression] as that of
|
Checks that the value of the first @racket[expression] as that of
|
||||||
one of the following @racket[expression]s.
|
one of the following @racket[expression]s.
|
||||||
|
|
||||||
It is an error for any of @racket[expressions]
|
@;%
|
||||||
to produce a function value; see note on @racket[check-expect] for details.
|
@(begin
|
||||||
|
#reader scribble/comment-reader
|
||||||
|
(racketblock
|
||||||
|
;; [List-of X] -> X
|
||||||
|
;; pick a random element from the given list @racket[l]
|
||||||
|
(define (pick-one l)
|
||||||
|
(list-ref l (random (length l))))
|
||||||
|
))
|
||||||
|
@;%
|
||||||
|
|
||||||
|
@examples[#:eval
|
||||||
|
(mk-eval (require test-engine/racket-tests)
|
||||||
|
(define (pick-one l) (list-ref l (random (length l)))))
|
||||||
|
|
||||||
|
(check-member-of (pick-one '("a" "b" "c")) "a" "b" "c")
|
||||||
|
]
|
||||||
|
|
||||||
|
It is an error for any of @racket[expressions] to produce a function value; see
|
||||||
|
note on @racket[check-expect] for details.
|
||||||
}
|
}
|
||||||
|
|
||||||
@defform*[#:id [check-range check-range-id]
|
@defform*[#:id [check-range check-range-id]
|
||||||
|
@ -547,6 +569,27 @@ Consider the following two examples in this context:
|
||||||
between the value of the @racket[low-expression] and the
|
between the value of the @racket[low-expression] and the
|
||||||
@racket[high-expression], inclusive.
|
@racket[high-expression], inclusive.
|
||||||
|
|
||||||
|
A @racket[check-range] form is best used to delimit the possible results of
|
||||||
|
functions that compute inexact numbers:
|
||||||
|
@;%
|
||||||
|
@(begin
|
||||||
|
#reader scribble/comment-reader
|
||||||
|
(racketblock
|
||||||
|
;; [Real -> Real] Real -> Real
|
||||||
|
;; what is the slope of @racket[f] at @racket[x]?
|
||||||
|
(define (differentiate f x)
|
||||||
|
(local ((define epsilon .001)
|
||||||
|
(define left (- x epsilon))
|
||||||
|
(define right (+ x epsilon))
|
||||||
|
(define slope
|
||||||
|
(/ (- (f right) (f left))
|
||||||
|
2 epsilon)))
|
||||||
|
slope))
|
||||||
|
|
||||||
|
(check-range (differentiate sin 0) 0.99 1.00)
|
||||||
|
))
|
||||||
|
@;%
|
||||||
|
|
||||||
It is an error for @racket[expression], @racket[low-expression], or
|
It is an error for @racket[expression], @racket[low-expression], or
|
||||||
@racket[high-expression] to produce a function value or an inexact number;
|
@racket[high-expression] to produce a function value or an inexact number;
|
||||||
see note on @racket[check-expect] for details. }
|
see note on @racket[check-expect] for details. }
|
||||||
|
|
Loading…
Reference in New Issue
Block a user