text-collect.rkt (3382B)
1 #lang racket/base 2 3 (require tests/eli-tester scribble/text/syntax-utils) 4 5 (provide begin/collect-tests) 6 (module+ main (begin/collect-tests)) 7 (define (begin/collect-tests) 8 (test 9 10 ;; begin/collect scope etc 11 (begin/collect 1) => 1 12 (begin/collect 1 2 3) => '(1 2 3) 13 (begin/collect) => '() 14 (begin/collect (define x 1) x) => 1 15 (begin/collect (define x 1)) => '() 16 (begin/collect (define x 1) x x x) => '(1 1 1) 17 (begin/collect (define x 1) (define y 2) x y x y) => '(1 2 1 2) 18 (begin/collect (define x 1) x (define y 2) y) => '(1 2) 19 (begin/collect (define x 1) x (define y 2)) => '(1) 20 (begin/collect (define x 1) x x (define y 2) y y) => '(1 1 2 2) 21 (begin/collect (define x 1) x (define x 2) x) => '(1 2) 22 (begin/collect (define x 1) x x (define x 2) x x) => '(1 1 2 2) 23 (begin/collect (define (x) y) (define y 1) (x) (x) (x)) => '(1 1 1) 24 (begin/collect (define x 1) x (define y 2) x) => '(1 1) 25 (begin/collect (define x 1) x x (define y 2) x x) => '(1 1 1 1) 26 (begin/collect (define x 1) x x (define y x) y y) => '(1 1 1 1) 27 (begin/collect (define (x) y) (define y 1) (x) (x) 28 (define (x) y) (define y 2) (x) (x)) 29 => '(1 1 2 2) 30 (begin/collect (define-syntax-rule (DEF x y) (define x y)) (DEF x 1) x x) 31 => '(1 1) 32 (begin/collect (define-syntax-rule (DEF x y) (define x y)) 1 (DEF x 2) x) 33 => '(1 2) 34 (begin/collect (define-syntax-rule (DEF x y) (define x y)) 35 (DEF x 1) x x 36 (DEF x 2) x x) 37 => '(1 1 2 2) 38 (begin/collect (define (x) y) 39 (define-syntax-rule (DEF x y) (define x y)) 40 (DEF y 1) (x) (x) 41 (DEF y 2) (x) (x)) 42 => '(1 1 1 1) 43 (let ([y 1]) (begin/collect y y (define x y) x y x)) => '(1 1 1 1 1) 44 (let ([y 1]) (begin/collect y y (define y 2) y y)) => '(1 1 2 2) 45 (let ([y 1]) (begin/collect (define (x) y) (x) (x))) => '(1 1) 46 (let ([y 1]) (begin/collect (define (x) y) (define y 2) (x) (x))) => '(2 2) 47 (let ([y 1]) (begin/collect (define (x) y) (x) (x) (define y 2) y y)) 48 => '(1 1 2 2) 49 (let ([y 1]) (begin/collect (define (x) y) (x) (x) (define y 2) y y (x))) 50 => '(1 1 2 2 1) 51 (let ([y 1]) (begin/collect (define (x) y) (x) (x) (define y 2) (x) y y)) 52 => '(1 1 1 2 2) 53 (begin/collect (begin (define (x) y) 54 (define-syntax-rule (DEF x y) (define x y)) 55 (define y 2)) 56 (x) (x)) 57 => '(2 2) 58 (begin/collect (define (x) y) 59 (begin (define-syntax-rule (DEF x y) (define x y)) 60 (define y 2)) 61 (x) (x)) 62 => '(2 2) 63 (begin/collect (define (x) y) 64 (define-syntax-rule (DEF x y) (define x y)) 65 (begin (define y 2)) 66 (x) (x)) 67 => '(2 2) 68 (begin/collect (begin (begin (begin (define (x) y)) 69 (begin (define-syntax-rule (DEF x y) 70 (define x y)))) 71 (begin (begin (define y 2)) 72 (begin (x))) 73 (begin (x)))) 74 => '(2 2) 75 (begin/collect 1 76 (define (f x #:< [< "<"] #:> [> ">"]) (list < x >)) 77 (f 1) 78 (f #:< "[" 2) 79 (f 3 #:> "]" #:< "[")) 80 => '(1 ("<" 1 ">") ("[" 2 ">") ("[" 3 "]")) 81 82 ))