Generate only printable strings for `string' contract.

svn: r16038
This commit is contained in:
Mike Sperber 2009-09-17 12:50:54 +00:00
parent ffe5097042
commit f3676a152b
2 changed files with 26 additions and 4 deletions

View File

@ -36,6 +36,15 @@
(define choose-ascii-char
(lift->generator integer->char (choose-integer 0 127)))
(define choose-ascii-letter
(lift->generator (lambda (i)
(string-ref
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"))
(choose-integer 0 51)))
(define choose-printable-ascii-char
(lift->generator integer->char (choose-integer 32 127)))
(define max-scalar-value #x10FFFF)
(define gap-start #xD800)
(define gap-end #xE000)
@ -213,6 +222,16 @@
(lambda (ch gen)
(variant (char->integer ch) gen))))
(define arbitrary-ascii-letter
(make-arbitrary choose-ascii-letter
(lambda (ch gen)
(variant (char->integer ch) gen))))
(define arbitrary-printable-ascii-char
(make-arbitrary choose-printable-ascii-char
(lambda (ch gen)
(variant (char->integer ch) gen))))
(define arbitrary-char
(make-arbitrary (sized
(lambda (n)
@ -331,6 +350,9 @@
(define arbitrary-ascii-string
(arbitrary-sequence choose-string string->list arbitrary-ascii-char))
(define arbitrary-printable-ascii-string
(arbitrary-sequence choose-string string->list arbitrary-printable-ascii-char))
(define arbitrary-string
(arbitrary-sequence choose-string string->list arbitrary-char))
@ -338,7 +360,7 @@
(arbitrary-sequence choose-symbol
(lambda (symbol)
(string->list (symbol->string symbol)))
arbitrary-ascii-char))
arbitrary-ascii-letter))
(define (arbitrary-procedure arbitrary-result . arbitrary-args)
(let ((arbitrary-arg-tuple (apply arbitrary-tuple arbitrary-args)))

View File

@ -3,18 +3,18 @@
quickcheck quickcheck-results
check-result? result-arguments-list
choose-integer choose-real
choose-ascii-char choose-char
choose-ascii-char choose-ascii-letter choose-printable-ascii-char choose-char
choose-list choose-vector choose-string choose-symbol
generator-unit generator-bind generator-sequence
sized choose-one-of choose-mixed choose-with-frequencies
arbitrary-boolean arbitrary-char arbitrary-ascii-char
arbitrary-boolean arbitrary-char arbitrary-ascii-char arbitrary-printable-ascii-char
arbitrary-integer arbitrary-natural arbitrary-rational arbitrary-real
arbitrary-mixed arbitrary-one-of
arbitrary-pair
arbitrary-list
arbitrary-vector
arbitrary-string
arbitrary-ascii-string
arbitrary-ascii-string arbitrary-printable-ascii-string
arbitrary-symbol
arbitrary-procedure
property