From f3676a152bdc1873be48935d48bb87d3a12a7bce Mon Sep 17 00:00:00 2001 From: Mike Sperber Date: Thu, 17 Sep 2009 12:50:54 +0000 Subject: [PATCH] Generate only printable strings for `string' contract. svn: r16038 --- .../deinprogramm/quickcheck/quickcheck.scm | 24 ++++++++++++++++++- .../deinprogramm/quickcheck/quickcheck.ss | 6 ++--- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/collects/deinprogramm/quickcheck/quickcheck.scm b/collects/deinprogramm/quickcheck/quickcheck.scm index 7b6333f033..15cb004c2a 100644 --- a/collects/deinprogramm/quickcheck/quickcheck.scm +++ b/collects/deinprogramm/quickcheck/quickcheck.scm @@ -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))) diff --git a/collects/deinprogramm/quickcheck/quickcheck.ss b/collects/deinprogramm/quickcheck/quickcheck.ss index db7a4e0ecb..e9d84564d0 100644 --- a/collects/deinprogramm/quickcheck/quickcheck.ss +++ b/collects/deinprogramm/quickcheck/quickcheck.ss @@ -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