283 lines
9.5 KiB
Scheme
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"))
|
|
|