compatibility/compatibility-test/tests/mzlib/awk.rktl
2014-12-02 09:43:08 -05:00

39 lines
837 B
Racket

(load-relative "loadtest.rktl")
(Section 'awk)
(require mzlib/awk)
(define-syntax (test-awk stx)
(syntax-case stx ()
[(_ val body ...)
(with-syntax ([next (datum->syntax stx 'next)]
[result (datum->syntax stx 'result)])
(syntax
(let* ([p (open-input-string "Hello world.")]
[next (lambda () (let ([o (read p)])
(if (eof-object? o)
o
(symbol->string o))))]
[r null]
[result (lambda (v)
(set! r (append r (list v))))])
body ...
(test val 'awk r))))]))
(test-awk '(hi there)
(awk (next) (str) ()
["ell" (result 'hi)]
["x" (result 'yikes)]
["orl" (result 'there)]))
(test-awk '("l" done)
(awk (next) (str) ()
[/ "el(l)" / (#f a) (result a)]
[(equal? str "world.") (result 'done)]))
(report-errs)