racket/collects/redex/tests/lw-test.ss

283 lines
9.5 KiB
Scheme

#|
DO NOT TABIFY THIS FILE
|#
;
;
; ;;;;
; ; ; ;
; ; ; ;;; ;; ;; ;;; ;;;;;
; ; ; ; ; ;; ; ; ; ;
; ; ; ; ; ; ; ; ; ;
; ; ; ; ; ; ; ; ; ;
; ; ; ; ; ; ; ; ; ; ;
; ;;;; ;;; ;;; ;;; ;;; ;;;
;
;
;
;
;
;
; ;; ; ;;;
; ; ; ;
; ;;;;; ;;; ; ;; ;;; ;;;;; ;;; ;;;
; ; ; ; ;; ; ; ; ; ;
; ; ;;;; ; ; ; ; ; ;
; ; ; ; ; ; ; ; ; ;
; ; ; ; ; ; ; ; ; ;;
; ;;; ;;;;;;;;;; ;;;;; ;;;;; ;
; ;
; ;;;;
;
;
;
;
; ;; ; ;;; ; ;;
; ; ; ; ;
; ;;;;; ; ;; ;;; ;;;; ;;;;; ;;; ; ;;;
; ; ;; ; ; ; ; ; ; ; ; ;
; ; ; ; ; ;;; ; ; ; ;;;;;
; ; ; ; ; ; ; ; ; ;
; ; ; ; ; ; ; ; ; ; ; ;
; ;;; ;;; ;;; ;;;;; ;;;; ;;;;; ;;;;; ;;;;; ;;;;
;
;
;
;
(module lw-test mzscheme
(require "test-util.ss"
"../private/loc-wrapper.ss"
"lw-test-util.ss")
(reset-count)
(test (normalize-lw (to-lw ()))
(build-lw (list (build-lw "(" 0 0 0 1)
(build-lw ")" 0 0 1 1))
0 0 0 2))
(test (normalize-lw (to-lw "x"))
(build-lw "“x”" 0 0 0 3))
(test (normalize-lw (to-lw "#f"))
(build-lw "“#f”" 0 0 0 4))
(test (normalize-lw (to-lw #f))
(build-lw "#f" 0 0 0 2))
(test (normalize-lw (to-lw/uq ()))
(make-lw (list (make-lw "(" 0 0 0 1 #t #f)
(make-lw ")" 0 0 1 1 #t #f))
0 0 0 2 #t #f))
(test (normalize-lw (to-lw (a)))
(build-lw (list (build-lw "(" 0 0 0 1)
(build-lw 'a 0 0 1 1)
(build-lw ")" 0 0 2 1))
0 0 0 3))
(test (normalize-lw (to-lw (a
b)))
(build-lw (list (build-lw "(" 0 0 0 1)
(build-lw 'a 0 0 1 1)
(build-lw 'b 1 0 1 1)
(build-lw ")" 1 0 2 1))
0 1 0 3))
(test (normalize-lw (to-lw (a b)))
(build-lw
(list (build-lw "(" 0 0 0 1)
(build-lw 'a 0 0 1 1)
(build-lw 'b 0 0 3 1)
(build-lw ")" 0 0 4 1))
0 0 0 5))
(test (normalize-lw (to-lw (a
(b c)
d)))
(build-lw (list (build-lw "(" 0 0 0 1)
(build-lw 'a 0 0 1 1)
(build-lw
(list (build-lw "(" 1 0 1 1)
(build-lw 'b 1 0 2 1)
(build-lw 'c 1 0 4 1)
(build-lw ")" 1 0 5 1))
1 0 1 5)
(build-lw 'd 2 0 1 1)
(build-lw ")" 2 0 2 1))
0 2 0 3))
(test (normalize-lw (to-lw (abcdefghijkl
b)))
(build-lw (list (build-lw "(" 0 0 0 1)
(build-lw 'abcdefghijkl 0 0 1 12)
(build-lw 'b 1 0 1 1)
(build-lw ")" 1 0 2 1))
0 1 0 3))
(test (normalize-lw (to-lw ((a b)
c)))
(build-lw (list (build-lw "(" 0 0 0 1)
(build-lw
(list (build-lw "(" 0 0 1 1)
(build-lw 'a 0 0 2 1)
(build-lw 'b 0 0 4 1)
(build-lw ")" 0 0 5 1))
0 0 1 5)
(build-lw 'c 1 0 1 1)
(build-lw ")" 1 0 2 1))
0 1 0 3))
(test (normalize-lw (to-lw (aaa bbb
(ccc
ddd)))) ;; <--- the ddd should be lined up under the aaa
(build-lw (list (build-lw "(" 0 0 0 1)
(build-lw 'aaa 0 0 1 3)
(build-lw 'bbb 0 0 5 3)
(build-lw
(list
(build-lw "(" 1 0 5 1)
(build-lw 'ccc 1 0 6 3)
(build-lw 'ddd 2 0 1 3)
(build-lw ")" 2 0 4 1))
1 1 1 4)
(build-lw ")" 2 0 5 1))
0 2 0 6))
(test (normalize-lw (to-lw (aaa bbb
(ccc
ddd ;; <--- the ddd should be lined up under the aaa
eee)))) ;; <--- the eee should be lined up under the ccc
(build-lw (list (build-lw "(" 0 0 0 1)
(build-lw 'aaa 0 0 1 3)
(build-lw 'bbb 0 0 5 3)
(build-lw
(list
(build-lw "(" 1 0 5 1)
(build-lw 'ccc 1 0 6 3)
(build-lw 'ddd 2 0 1 3)
(build-lw 'eee 3 0 6 3)
(build-lw ")" 3 0 9 1))
1 2 1 9)
(build-lw ")" 3 0 10 1))
0 3 0 11))
(test (normalize-lw (to-lw ([{}])))
(build-lw (list (build-lw "(" 0 0 0 1)
(build-lw
(list
(build-lw "[" 0 0 1 1)
(build-lw
(list
(build-lw "{" 0 0 2 1)
(build-lw "}" 0 0 3 1))
0 0 2 2)
(build-lw "]" 0 0 4 1))
0 0 1 4)
(build-lw ")" 0 0 5 1))
0 0 0 6))
(test (normalize-lw (to-lw ,x))
(make-lw
(list
(make-lw "" 0 0 0 0 #f #f)
'spring
(make-lw 'x 0 0 1 1 #t #f))
0 0 0 2 #f #f))
(test (normalize-lw (to-lw ,@x))
(make-lw
(list
(make-lw "" 0 0 0 0 #f #f)
'spring
(make-lw 'x 0 0 2 1 #t #f))
0 0 0 3 #f #f))
(test (normalize-lw (to-lw 'x))
(make-lw
(list
(make-lw "'" 0 0 0 1 #f #f)
'spring
(make-lw 'x 0 0 1 1 #f #f))
0 0 0 2 #f #f))
(test (normalize-lw (to-lw ,(term x)))
(make-lw
(list
(make-lw "" 0 0 0 0 #f #f)
'spring
(make-lw
(list
(make-lw "" 0 0 1 0 #t #f)
'spring
(make-lw 'x 0 0 7 1 #f #f))
0 0 1 7 #t #f))
0 0 0 8 #f #f))
(test (normalize-lw (to-lw (term x)))
(build-lw
(list
(build-lw "(" 0 0 0 1)
(build-lw 'term 0 0 1 4)
(build-lw 'x 0 0 6 1)
(build-lw ")" 0 0 7 1))
0 0 0 8))
(test (normalize-lw (to-lw '(term x)))
(build-lw
(list
(build-lw "'" 0 0 0 1)
'spring
(build-lw
(list
(build-lw "(" 0 0 1 1)
(build-lw 'term 0 0 2 4)
(build-lw 'x 0 0 7 1)
(build-lw ")" 0 0 8 1))
0
0
1
8))
0 0 0 9))
(test (normalize-lw (to-lw ''x))
(build-lw
(list
(build-lw "'" 0 0 0 1)
'spring
(build-lw
(list
(build-lw "'" 0 0 1 1)
'spring
(build-lw 'x 0 0 2 1))
0
0
1
2))
0 0 0 3))
;; this one seems suspicious: why does the second comma start at 1 instead of 0?
;; rendering seems to work, however, so we'll go with it ..
(test (normalize-lw (to-lw ,,x))
(build-lw
(list
(build-lw "" 0 0 0 0)
'spring
(make-lw
(list
(make-lw "," 0 0 1 1 #t #f)
'spring
(make-lw 'x 0 0 2 1 #t #f))
0 0 1 2
#t #f))
0 0 0 3))
(print-tests-passed "lw-test.ss"))