Added Redex enum tests

This commit is contained in:
Max New 2013-05-13 20:40:43 -05:00
parent c31d0e02d4
commit d174a0c0a0
2 changed files with 38 additions and 18 deletions

View File

@ -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))

View File

@ -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)