From 176f09a7adfa8e692cc646e344eea93919487a8b Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Fri, 24 Aug 2018 15:46:11 -0500 Subject: [PATCH] add generator for symbols --- .../tests/racket/contract/random-generate.rkt | 1 + .../racket/contract/private/generate-base.rkt | 21 +++++++++++++------ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/pkgs/racket-test/tests/racket/contract/random-generate.rkt b/pkgs/racket-test/tests/racket/contract/random-generate.rkt index 2a39820da9..52ab7b1aea 100644 --- a/pkgs/racket-test/tests/racket/contract/random-generate.rkt +++ b/pkgs/racket-test/tests/racket/contract/random-generate.rkt @@ -43,6 +43,7 @@ (check-not-exn (λ () (test-contract-generation exact-nonnegative-integer?))) (check-not-exn (λ () (test-contract-generation natural?))) +(check-not-exn (λ () (test-contract-generation symbol?))) (check-not-exn (λ () (test-contract-generation (integer-in 0 100)))) (check-not-exn (λ () (test-contract-generation (integer-in 0 (expt 2 1000))))) (check-not-exn (λ () (test-contract-generation (integer-in 0 #f)))) diff --git a/racket/collects/racket/contract/private/generate-base.rkt b/racket/collects/racket/contract/private/generate-base.rkt index 843837a730..a3537535d6 100644 --- a/racket/collects/racket/contract/private/generate-base.rkt +++ b/racket/collects/racket/contract/private/generate-base.rkt @@ -63,6 +63,17 @@ (/ (integer-gen fuel) (exact-positive-integer-gen fuel))) +(define (string-gen fuel) + (define len + (rand-choice [1/10 0] + [1/10 1] + [else (rand-range 2 260)])) + (define strl (build-list len (λ (x) (gen-char fuel)))) + (apply string strl)) + +(define (symbol-gen fuel) + (string->symbol (string-gen fuel))) + (define predicate-generator-table (hash ;; generate integer? @@ -71,6 +82,9 @@ exact-integer? exact-integer-gen + + symbol? + symbol-gen natural? exact-nonnegative-integer-gen @@ -118,12 +132,7 @@ gen-char string? - (λ (fuel) - (let* ([len (rand-choice [1/10 0] - [1/10 1] - [else (rand-range 2 260)])] - [strl (build-list len (λ (x) (gen-char fuel)))]) - (apply string strl))) + string-gen byte?