test-unsyntax.rkt (2684B)
1 #lang racket/base 2 3 (require subtemplate/private/top-subscripts 4 subtemplate/private/ddd-forms 5 subtemplate/private/unsyntax-preparse 6 subtemplate/private/template-subscripts 7 (except-in subtemplate/private/override ?? ?@) 8 stxparse-info/case 9 stxparse-info/parse 10 rackunit 11 syntax/macro-testing 12 phc-toolkit/untyped 13 (only-in racket/base [... …])) 14 15 (check-equal? (syntax->datum 16 (syntax-parse #'(1 2 3) 17 [(x …) 18 (quasisubtemplate-ddd (x …))])) 19 '(1 2 3)) 20 21 (check-equal? (syntax->datum 22 (syntax-case #'(1 2 3) () 23 [(x …) 24 (quasisubtemplate-ddd (#,(+ x 4) …))])) 25 '(5 6 7)) 26 27 (check-equal? (syntax->datum 28 (syntax-case #'(1 2 3) () 29 [(x …) 30 (quasisubtemplate-ddd (a b c))])) 31 '(a b c)) 32 33 (check-equal? (syntax->datum 34 (syntax-case #'(1 2 3) () 35 [(xᵢ …) 36 (quasisubtemplate-ddd (#,(cons yᵢ (+ xᵢ 4)) …))])) 37 '([1/y . 5] [2/y . 6] [3/y . 7])) 38 39 (check-equal? (syntax->datum 40 (syntax-case #'(1 2 3) () 41 [(xᵢ …) 42 (quasisubtemplate-ddd (#,@(list yᵢ (+ xᵢ 4)) …))])) 43 '(1/y 5 2/y 6 3/y 7)) 44 45 (check-equal? (syntax->datum 46 (syntax-case #'(1 2 3) () 47 [(xᵢ …) 48 (quasisubtemplate-ddd (#,(?@ yᵢ (+ xᵢ 4)) …))])) 49 '(1/y 5 2/y 6 3/y 7)) 50 51 (check-equal? (syntax->datum 52 (syntax-parse #'([1 2 3] [a #:kw c]) 53 [([xᵢ …] [{~and {~or zᵢ:id #:kw}} …]) 54 (quasisubtemplate-ddd (#,(?? #'zᵢ (?@ #'yᵢ (+ xᵢ 4))) …))])) 55 '(a 2/y 6 c)) 56 57 (check-equal? (syntax->datum 58 (syntax-case #'([1 2 3] [4 5 6]) () 59 [([x …] …) 60 (quasisubtemplate-ddd ((#,(- x) …) …))])) 61 '((-1 -2 -3) (-4 -5 -6))) 62 63 (check-equal? (syntax->datum 64 (syntax-case #'([1 2 3] [4 5 6]) () 65 [([x …] …) 66 (quasisubtemplate-ddd (([#,(- x) #,,x] …) …))])) 67 (let ([l '((1 2 3) (4 5 6))]) 68 `(([-1 ,l] [-2 ,l] [-3 ,l]) ([-4 ,l] [-5 ,l] [-6 ,l])))) 69 70 (check-equal? (syntax->datum 71 (syntax-case #'([1 2 3] [4 5 6]) () 72 [([x …] …) 73 (quasisubtemplate-ddd (([#,(- x) #,,@x] …) …))])) 74 (let ([l '((1 2 3) (4 5 6))]) 75 `(([-1 ,@l] [-2 ,@l] [-3 ,@l]) ([-4 ,@l] [-5 ,@l] [-6 ,@l]))))