Added Redex enum tests
This commit is contained in:
parent
c31d0e02d4
commit
d174a0c0a0
|
@ -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))
|
||||
|
|
38
collects/redex/tests/enum-test.rkt
Normal file
38
collects/redex/tests/enum-test.rkt
Normal 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)
|
Loading…
Reference in New Issue
Block a user