(define-library (chibi syntax-case-test) (export run-tests) (import (chibi) (chibi syntax-case) (chibi test)) (begin (define (run-tests) (test-begin "Syntax Case") (test "syntax constant list" '(+ 1 2) #'(+ 1 2)) (test "pattern variable" 'foo (syntax-case 'foo () (x #'x))) (test "syntax-case pair" '(a b) (syntax-case '(a . b) () ((x . y) #'(x y)))) (test "syntax-case var" 'a (syntax-case '(a . b) (b) ((b . y) #f) ((x . b) #'x))) (test "syntax-case simple ellipsis" '(a b c) (syntax-case '(a b c) () ((a ...) #'(a ...)))) (test "syntax-case ellipsis with tail" '(a b x c) (syntax-case '(a b c) () ((a ... b) #'(a ... x b)))) (test "syntax-case ellipsis with dotted tail" '(a b x c y d) (syntax-case '(a b c . d) () ((a ... b . c) #'(a ... x b y c)))) (test "syntax-case nested ellipsis" '((a b) (d e) c f) (syntax-case '((a b c) (d e f)) () (((x ... y) ...) #'((x ...) ... y ...)))) (test "with-ellipsis" '((a b)) (with-ellipsis ::: (syntax-case '(a) () ((... :::) #'((... b) :::))))) (test-end))))