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

View File

@ -3,18 +3,18 @@
quickcheck quickcheck-results quickcheck quickcheck-results
check-result? result-arguments-list check-result? result-arguments-list
choose-integer choose-real 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 choose-list choose-vector choose-string choose-symbol
generator-unit generator-bind generator-sequence generator-unit generator-bind generator-sequence
sized choose-one-of choose-mixed choose-with-frequencies 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-integer arbitrary-natural arbitrary-rational arbitrary-real
arbitrary-mixed arbitrary-one-of arbitrary-mixed arbitrary-one-of
arbitrary-pair arbitrary-pair
arbitrary-list arbitrary-list
arbitrary-vector arbitrary-vector
arbitrary-string arbitrary-string
arbitrary-ascii-string arbitrary-ascii-string arbitrary-printable-ascii-string
arbitrary-symbol arbitrary-symbol
arbitrary-procedure arbitrary-procedure
property property