fix ni-range docs; add for tests

This commit is contained in:
Stephen Chang 2016-01-19 14:22:02 -05:00
parent 60845b2098
commit 0f39ee9b72
3 changed files with 77 additions and 2 deletions

View File

@ -158,8 +158,8 @@ each element in the sequence.
(sequence? "word")
(sequence? #\x)]}
@defproc*[([(in-range [end number?]) stream?]
[(in-range [start number?] [end number?] [step number? 1]) stream?])]{
@defproc*[([(in-range [end real?]) stream?]
[(in-range [start real?] [end real?] [step real? 1]) stream?])]{
Returns a sequence (that is also a @tech{stream}) whose elements are
numbers. The single-argument case @racket[(in-range end)] is
equivalent to @racket[(in-range 0 end 1)]. The first number in the

View File

@ -450,7 +450,81 @@
#rx".*expected number of values not received.*")
(test 1 'one (begin (for/fold () () (values)) 1))
;; iterator contract tests
(err/rt-test (for ([x (in-range (sqrt -1))]) x)
exn:fail:contract?
#rx"expected\\: real\\?")
(err/rt-test (for ([x (in-range 1 (sqrt -1))]) x)
exn:fail:contract?
#rx"expected\\: real\\?")
(err/rt-test (for ([x (in-range 1 2 (sqrt -1))]) x)
exn:fail:contract?
#rx"expected\\: real\\?")
(test (* 10 pi) 'in-range-with-reals
(for/sum ([x (in-range 0 (+ (* 4 pi) .1) pi)]) x))
(err/rt-test (for ([x (in-naturals 1.1)]) x)
exn:fail:contract?
#rx"expected\\: exact-nonnegative-integer\\?")
(err/rt-test (for ([x (in-naturals -1)]) x)
exn:fail:contract?
#rx"expected\\: exact-nonnegative-integer\\?")
(err/rt-test (for ([x (in-list 1)]) x)
exn:fail:contract?
#rx"expected\\: list\\?")
(err/rt-test (for ([x (in-list (vector 1 2 3))]) x)
exn:fail:contract?
#rx"expected\\: list\\?")
(err/rt-test (for ([x (in-list (mcons 1 '()))]) x)
exn:fail:contract?
#rx"expected\\: list\\?")
(err/rt-test (for ([x (in-mlist (list 1 2 3))]) x)
exn:fail:contract?
#rx"expected\\: mpair\\?")
(err/rt-test (for ([x (in-vector '(1 2))]) x)
exn:fail:contract?
#rx"expected\\: vector")
(err/rt-test (for ([x (in-vector (vector 1 2) -1)]) x)
exn:fail:contract?
#rx"starting index is out of range")
(err/rt-test (for ([x (in-vector (vector 1 2) 10)]) x)
exn:fail:contract?
#rx"starting index is out of range")
(err/rt-test (for ([x (in-vector (vector 1 2) 1.1)]) x)
exn:fail:contract?
#rx"expected\\: exact-integer\\?")
(err/rt-test (for ([x (in-vector (vector 1 2) 0 1.1)]) x)
exn:fail:contract?
#rx"expected\\: exact-integer\\?")
(err/rt-test (for ([x (in-vector (vector 1 2) 0 2 1.1)]) x)
exn:fail:contract?
#rx"expected:.*exact-integer\\?")
(err/rt-test (for ([x (in-vector (vector 1 2) 0 2 0)]) x)
exn:fail:contract?
#rx"expected:.*not/c zero\\?")
(err/rt-test (for ([x (in-port (vector 1 2))]) x)
exn:fail:contract?
#rx"expected:.*procedure-arity-includes/c 1")
(err/rt-test (for ([x (in-input-port-bytes (vector 1 2))]) x)
exn:fail:contract?
#rx"expected: input-port\\?")
(err/rt-test (for ([x (in-hash (vector 1 2))]) x)
exn:fail:contract?
#rx"expected: hash\\?")
(err/rt-test (for ([x (in-hash-pairs (vector 1 2))]) x)
exn:fail:contract?
#rx"expected: hash\\?")
(err/rt-test (for ([x (in-hash-keys (vector 1 2))]) x)
exn:fail:contract?
#rx"expected: hash\\?")
(err/rt-test (for ([x (in-hash-values (vector 1 2))]) x)
exn:fail:contract?
#rx"expected: hash\\?")
(err/rt-test (for ([x (in-hash (hash 1 2))]) x)
exn:fail:contract:arity?
#rx"expected number of values not received")
;; for/fold syntax checking
(syntax-test #'(for/fold () bad 1) #rx".*bad sequence binding clauses.*")
(report-errs)

View File

@ -590,6 +590,7 @@
(values car cdr l pair? #f #f))
(define (in-mlist l)
(unless (mpair? l) (raise-argument-error 'in-mlist "mpair?" l))
(make-do-sequence (lambda () (:mlist-gen l))))
(define (:mlist-gen l)