From d174a0c0a0910301f8c3bd79f3726005920f999b Mon Sep 17 00:00:00 2001 From: Max New Date: Mon, 13 May 2013 20:40:43 -0500 Subject: [PATCH] Added Redex enum tests --- collects/redex/private/enum.rkt | 18 -------------- collects/redex/tests/enum-test.rkt | 38 ++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 18 deletions(-) create mode 100644 collects/redex/tests/enum-test.rkt diff --git a/collects/redex/private/enum.rkt b/collects/redex/private/enum.rkt index ec3fbbe26a..7f5ced414f 100644 --- a/collects/redex/private/enum.rkt +++ b/collects/redex/private/enum.rkt @@ -513,21 +513,3 @@ [`(,ts ...) (map loop ts)] [x x]))) - -(module+ test - (require rackunit) - - (define rep `(,(make-nt 'r - `(,(make-rhs `(list variable - (repeat variable #f #f))))))) - (define rs (hash-ref (lang-enumerators rep) 'r)) - (test-begin - (check-equal? (enum-ith rs 0) '(a)) - (check-equal? (size rs) +inf.f)) - (define λc `(,(make-nt 'e - `(,(make-rhs `(list (repeat variable #f #f))) - ,(make-rhs `(list λ variable (nt e))) - ,(make-rhs `(list (nt e) (nt e))))))) - (define les (lang-enumerators λc)) - (define es (hash-ref les 'e)) - (check-equal? (size es) +inf.f)) diff --git a/collects/redex/tests/enum-test.rkt b/collects/redex/tests/enum-test.rkt new file mode 100644 index 0000000000..78c8dd13dc --- /dev/null +++ b/collects/redex/tests/enum-test.rkt @@ -0,0 +1,38 @@ +#lang racket/base +(require rackunit + redex + (for-syntax racket/base)) + +(define-syntax (try-it stx) + (syntax-case stx () + [(_ N l p) + (with-syntax ([line (syntax-line stx)]) + #'(for ([i (in-range N)]) + (unless (redex-match + l p + (generate-term l p #:i-th i)) + (error 'bad-term "line ~a: i=~a" line i))))])) + +;; Repeat test +(define-language Rep + (r (variable variable ...))) + +(try-it 1000 Rep r) + +;; Recursion test +(define-language Λc + (e (e e) + (λ (x) e) + x) + (x variable)) + +;; slow: fix dep/enum +(try-it 250 Λc e) +(try-it 24 Λc x) + +;; Name test +(define-language Named + (n (any_1 any_1))) + +;; Very slow, to be fixed +(try-it 100 Named n)