parent
290104da0a
commit
c7d103da99
|
@ -4,8 +4,8 @@
|
|||
;; for testing: (certainly the path will be an other on other systems...)
|
||||
|
||||
;; ,open define-record-types handle
|
||||
;; ,config ,load C:/cygwin/home/mephisto/cvs_scsh/scsh/scsh/test/test-packages.scm
|
||||
;; ,load C:/cygwin/home/mephisto/cvs_scsh/scsh/scsh/test/test-base.scm
|
||||
;; ,config ,load C:/cygwin/home/mephisto/cvs-scsh/scsh/scsh/test/test-packages.scm
|
||||
;; ,load C:/cygwin/home/mephisto/cvs-scsh/scsh/scsh/test/test-base.scm
|
||||
;; load this file
|
||||
;; (test-all)
|
||||
|
||||
|
@ -43,37 +43,30 @@
|
|||
(add-test! 'counter-inc-test 'awk
|
||||
(lambda ()
|
||||
(let ((read '())
|
||||
(tmp-file (create-temp-file)))
|
||||
(call-with-output-file tmp-file
|
||||
(lambda (out-port)
|
||||
(let loop ((i 0))
|
||||
(string (let loop ((i 0))
|
||||
(if (not (= 9 i))
|
||||
(begin
|
||||
(write "test-zeile\n" out-port)
|
||||
(loop (+ i 1)))))))
|
||||
|
||||
(call-with-input-file tmp-file
|
||||
(lambda (in-port)
|
||||
(string-append "test-zeile\n"
|
||||
(loop (+ i 1))))
|
||||
""))))
|
||||
((lambda (in-port)
|
||||
(awk (read-line in-port) (line) counter ()
|
||||
(#t (set! read (cons counter read))))))
|
||||
(delete-file tmp-file)
|
||||
(equal? read '(10 9 8 7 6 5 4 3 2 1)))))
|
||||
(#t (set! read (cons counter read)))))
|
||||
(make-string-input-port string))
|
||||
(equal? read '(9 8 7 6 5 4 3 2 1)))))
|
||||
|
||||
;; --- does the "int-test" work properly ---
|
||||
|
||||
(add-test! 'int-test-test 'awk
|
||||
(lambda ()
|
||||
(let ((read '())
|
||||
(tmp-file (create-temp-file)))
|
||||
(call-with-output-file tmp-file
|
||||
(lambda (out-port)
|
||||
(let loop ((i 0))
|
||||
(if (not (= 20 i))
|
||||
(string (let loop ((i 0))
|
||||
(if (not (= 9 i))
|
||||
(begin
|
||||
(write "test-zeile\n" out-port)
|
||||
(loop (+ i 1)))))))
|
||||
(call-with-input-file tmp-file
|
||||
(lambda (in-port)
|
||||
(string-append "test-zeile\n"
|
||||
(loop (+ i 1))))
|
||||
""))))
|
||||
((lambda (in-port)
|
||||
(awk (read-line in-port) (line) counter ()
|
||||
(1 (set! read (cons 1 read)))
|
||||
(2 (set! read (cons 2 read)))
|
||||
|
@ -84,38 +77,27 @@
|
|||
(7 (set! read (cons 7 read)))
|
||||
(8 (set! read (cons 8 read)))
|
||||
(9 (set! read (cons 9 read)))
|
||||
(0 (set! read (cons 0 read))))))
|
||||
(delete-file tmp-file)
|
||||
(0 (set! read (cons 0 read)))))
|
||||
(make-string-input-port string))
|
||||
(equal? read '(9 8 7 6 5 4 3 2 1)))))
|
||||
|
||||
;; --- big line ---
|
||||
|
||||
(add-test! 'read-one-mb-line-from-file 'awk
|
||||
(lambda ()
|
||||
(let ((one-kb-line (let loop ((i 0))
|
||||
(if (= 1024 i)
|
||||
""
|
||||
(string-append "a" (loop (+ i 1))))))
|
||||
(tmp-file (create-temp-file))
|
||||
(read '()))
|
||||
|
||||
(call-with-output-file tmp-file
|
||||
(lambda (out-port)
|
||||
(let loop ((i 0))
|
||||
(if (= 1024 i)
|
||||
(write-string "" out-port)
|
||||
(begin
|
||||
(write-string one-kb-line out-port)
|
||||
(loop (+ i 1)))))))
|
||||
(call-with-input-file tmp-file
|
||||
(lambda (in-port)
|
||||
(awk (read-line in-port) (line) c ()
|
||||
(#t (begin
|
||||
(set! read line))))))
|
||||
(delete-file tmp-file)
|
||||
(and (string? read)
|
||||
(= (string-length read)
|
||||
(* 1024 1024))))))
|
||||
;(add-test! 'read-one-mb-line-from-file 'awk
|
||||
; (lambda ()
|
||||
; (let ((one-mb-line (let loop ((i 0))
|
||||
; (if (= 1048576 i)
|
||||
; ""
|
||||
; (string-append "a" (loop (+ i 1))))))
|
||||
; (read '()))
|
||||
; ((lambda (in-port)
|
||||
; (awk (read-line in-port) (line) c ()
|
||||
; (#t (begin
|
||||
; (set! read line)))))
|
||||
; (make-string-input-port one-mb-line))
|
||||
; (and (string? read)
|
||||
; (= (string-length read)
|
||||
; 1048576)))))
|
||||
|
||||
;; --- special signs ---
|
||||
|
||||
|
@ -124,48 +106,38 @@
|
|||
(let (( strange-sign-line
|
||||
(let loop ((i 0))
|
||||
(if (= i 256)
|
||||
""
|
||||
(if (= i 10) ;; comes along with everything but line-feed
|
||||
"\n"
|
||||
(if (= i 10) ;; works with everything but line-feed
|
||||
(loop (+ i 1))
|
||||
(string-append (ascii->string i)
|
||||
(loop (+ i 1)))))))
|
||||
(tmp-file (create-temp-file))
|
||||
(read '()))
|
||||
(call-with-output-file tmp-file
|
||||
(lambda (out-port)
|
||||
(write-string strange-sign-line out-port)
|
||||
(write-string "\n" out-port)))
|
||||
(call-with-input-file tmp-file
|
||||
(lambda (in-port)
|
||||
((lambda (in-port)
|
||||
(awk (read-line in-port) (line) ()
|
||||
(#t (set! read line)))))
|
||||
(delete-file tmp-file)
|
||||
(equal? read strange-sign-line))))
|
||||
(#t (set! read line))))
|
||||
(make-string-input-port strange-sign-line))
|
||||
(equal? (string-append read "\n") strange-sign-line))))
|
||||
|
||||
;; --- sre-expr-test ---
|
||||
|
||||
(add-test! 'sre-expr-test-test 'awk
|
||||
(lambda ()
|
||||
(let ((tmp-file (create-temp-file))
|
||||
(read '()))
|
||||
(call-with-output-file tmp-file
|
||||
(lambda (out-port)
|
||||
(write-string "ein paar testzeilen, um\n" out-port)
|
||||
(write-string "sre-expr-test zu prüfen:\n" out-port)
|
||||
(write-string "EINE ZEILE GRO/3...\n" out-port)
|
||||
(write-string "eine zeile klein...\n" out-port)
|
||||
(write-string "eine zeile mit zeichen...\n" out-port)
|
||||
(write-string "*+#'~,;:.-_<>|!§$%&/()=?\"\\[]{}\n" out-port)))
|
||||
(call-with-input-file tmp-file
|
||||
(lambda (in-port)
|
||||
(let ((read '())
|
||||
(str (string-append "ein paar testzeilen, um\n"
|
||||
"sre-expr-test zu prüfen:\n"
|
||||
"EINE ZEILE GRO/3...\n"
|
||||
"eine zeile klein...\n"
|
||||
"eine zeile mit zeichen...\n"
|
||||
"*+#'~,;:.-_<>|!§$%&/()=?\"\\[]{}\n")))
|
||||
((lambda (in-port)
|
||||
(awk (read-line in-port) (line) ()
|
||||
(("sre" "zu") (set! read (cons 'sre-zu read)))
|
||||
("eine" (set! read (cons 'eine read)))
|
||||
("EINE" (set! read (cons 'EINE read)))
|
||||
((* "3") (set! read (cons '*3 read)))
|
||||
((? "s") (set! read (cons '?s read)))
|
||||
((+ "+") (set! read (cons '++ read))))))
|
||||
(delete-file tmp-file)
|
||||
((+ "+") (set! read (cons '++ read)))))
|
||||
(make-string-input-port str))
|
||||
;; |z6 |z5 |z4 |z3 |z2 |z1 |
|
||||
(equal? (list '++ '?s '*3 '?s '*3 'eine 'sre-zu '?s '*3 'eine 'sre-zu '?s '*3 'EINE '?s '*3 'sre-zu '?s '*3 'sre-zu)
|
||||
read))))
|
||||
|
@ -174,18 +146,14 @@
|
|||
|
||||
(add-test! 'when-bool-exp-test-test 'awk
|
||||
(lambda ()
|
||||
(let ((tmp-file (create-temp-file))
|
||||
(read '()))
|
||||
(call-with-output-file tmp-file
|
||||
(lambda (out-port)
|
||||
(write-string "ein paar testzeilen, um\n" out-port)
|
||||
(write-string "when-bool-expr-test zu prüfen:\n" out-port)
|
||||
(write-string "EINE ZEILE GRO/3...\n" out-port)
|
||||
(write-string "eine zeile klein...\n" out-port)
|
||||
(write-string "eine zeile mit zeichen...\n" out-port)
|
||||
(write-string "*+#'~,;:.-_<>|!§$%&/()=?\"\\[]{}\n" out-port)))
|
||||
(call-with-input-file tmp-file
|
||||
(lambda (in-port)
|
||||
(let ((read '())
|
||||
(str (string-append "ein paar testzeilen, um\n"
|
||||
"when-bool-expr-test zu prüfen:\n"
|
||||
"EINE ZEILE GRO/3...\n"
|
||||
"eine zeile klein...\n"
|
||||
"eine zeile mit zeichen...\n"
|
||||
"*+#'~,;:.-_<>|!§$%&/()=?\"\\[]{}\n")))
|
||||
((lambda (in-port)
|
||||
(awk (read-line in-port) (line) counter ()
|
||||
((when (= counter 1))
|
||||
(set! read (cons 'first-clause read)))
|
||||
|
@ -193,8 +161,8 @@
|
|||
"when-bool-expr-test zu prüfen:"))
|
||||
(set! read (cons 'second-clause read)))
|
||||
((when (> counter 2))
|
||||
(set! read (cons 'third-clause read))))))
|
||||
(delete-file tmp-file)
|
||||
(set! read (cons 'third-clause read)))))
|
||||
(make-string-input-port str))
|
||||
(equal? read
|
||||
(list 'third-clause 'third-clause 'third-clause 'third-clause 'second-clause 'first-clause)))))
|
||||
|
||||
|
@ -202,18 +170,14 @@
|
|||
|
||||
(add-test! 'expr-test-test 'awk
|
||||
(lambda ()
|
||||
(let ((tmp-file (create-temp-file))
|
||||
(read '()))
|
||||
(call-with-output-file tmp-file
|
||||
(lambda (out-port)
|
||||
(write-string "ein paar testzeilen, um\n" out-port)
|
||||
(write-string "expr-test zu prüfen:\n" out-port)
|
||||
(write-string "EINE ZEILE GRO/3...\n" out-port)
|
||||
(write-string "eine zeile klein...\n" out-port)
|
||||
(write-string "eine zeile mit zeichen...\n" out-port)
|
||||
(write-string "*+#'~,;:.-_<>|!§$%&/()=?\"\\[]{}\n" out-port)))
|
||||
(call-with-input-file tmp-file
|
||||
(lambda (in-port)
|
||||
(let ((read '())
|
||||
(str (string-append "ein paar testzeilen, um\n"
|
||||
"expr-test zu prüfen:\n"
|
||||
"EINE ZEILE GRO/3...\n"
|
||||
"eine zeile klein...\n"
|
||||
"eine zeile mit zeichen...\n"
|
||||
"*+#'~,;:.-_<>|!§$%&/()=?\"\\[]{}\n")))
|
||||
((lambda (in-port)
|
||||
(awk (read-line in-port) (line) counter ()
|
||||
("paar" (set! read (cons 'first-clause read)))
|
||||
((equal? line
|
||||
|
@ -222,8 +186,8 @@
|
|||
((> counter 5)
|
||||
(set! read (cons 'third-clause read)))
|
||||
((+ "3") ;; makes problems here, but was ok in sre-xpr-test ;;FIXXX it
|
||||
(set! read (cons 'fourth-clause read))))))
|
||||
(delete-file tmp-file)
|
||||
(set! read (cons 'fourth-clause read)))))
|
||||
(make-string-input-port str))
|
||||
(equal? read
|
||||
(list 'third-clause 'fourth-clause 'second-clause 'first-clause)))))
|
||||
|
||||
|
@ -232,18 +196,14 @@
|
|||
|
||||
(add-test! 'several-bodys-in-clause-test 'awk
|
||||
(lambda ()
|
||||
(let ((tmp-file (create-temp-file))
|
||||
(read '()))
|
||||
(call-with-output-file tmp-file
|
||||
(lambda (out-port)
|
||||
(write-string "ein paar testzeilen, um\n" out-port)
|
||||
(write-string "expr-test zu prüfen:\n" out-port)
|
||||
(write-string "EINE ZEILE GRO/3...\n" out-port)
|
||||
(write-string "eine zeile klein...\n" out-port)
|
||||
(write-string "eine zeile mit zeichen...\n" out-port)
|
||||
(write-string "*+#'~,;:.-_<>|!§$%&/()=?\"\\[]{}\n" out-port)))
|
||||
(call-with-input-file tmp-file
|
||||
(lambda (in-port)
|
||||
(let ((read '())
|
||||
(str (string-append "ein paar testzeilen, um\n"
|
||||
"expr-test zu prüfen:\n"
|
||||
"EINE ZEILE GRO/3...\n"
|
||||
"eine zeile klein...\n"
|
||||
"eine zeile mit zeichen...\n"
|
||||
"*+#'~,;:.-_<>|!§$%&/()=?\"\\[]{}\n")))
|
||||
((lambda (in-port)
|
||||
(awk (read-line in-port) (line) counter ()
|
||||
(1 (set! read (cons 'clause-one-body-one read))
|
||||
(set! read (cons 'clause-one-body-two read))
|
||||
|
@ -252,8 +212,8 @@
|
|||
"eine zeile klein..."))
|
||||
(set! read (cons 'clause-two-body-one read))
|
||||
(set! read (cons 'clause-two-body-two read))
|
||||
(set! read (cons 'clause-two-body-three read))))))
|
||||
(delete-file tmp-file)
|
||||
(set! read (cons 'clause-two-body-three read)))))
|
||||
(make-string-input-port str))
|
||||
(equal? read
|
||||
(list 'clause-two-body-three 'clause-two-body-two 'clause-two-body-one
|
||||
'clause-one-body-three 'clause-one-body-two 'clause-one-body-one)))))
|
||||
|
@ -263,18 +223,14 @@
|
|||
|
||||
(add-test! 'range-wo-begin-wo-end-test 'awk
|
||||
(lambda ()
|
||||
(let ((tmp-file (create-temp-file))
|
||||
(read '()))
|
||||
(call-with-output-file tmp-file
|
||||
(lambda (out-port)
|
||||
(write-string "ein paar testzeilen, um\n" out-port)
|
||||
(write-string "expr-test zu prüfen:\n" out-port)
|
||||
(write-string "EINE ZEILE GRO/3...\n" out-port)
|
||||
(write-string "eine zeile klein...\n" out-port)
|
||||
(write-string "eine zeile mit zeichen...\n" out-port)
|
||||
(write-string "*+#'~,;:.-_<>|!§$%&/()=?\"\\[]{}\n" out-port)))
|
||||
(call-with-input-file tmp-file
|
||||
(lambda (in-port)
|
||||
(let ((read '())
|
||||
(str (string-append "ein paar testzeilen, um\n"
|
||||
"expr-test zu prüfen:\n"
|
||||
"EINE ZEILE GRO/3...\n"
|
||||
"eine zeile klein...\n"
|
||||
"eine zeile mit zeichen...\n"
|
||||
"*+#'~,;:.-_<>|!§$%&/()=?\"\\[]{}\n")))
|
||||
((lambda (in-port)
|
||||
(awk (read-line in-port) (line) counter ()
|
||||
(range 1 3 (set! read (cons 'first-clause read)))
|
||||
(range (when (equal? line
|
||||
|
@ -285,8 +241,8 @@
|
|||
(range (when (equal? line
|
||||
"expr-test zu prüfen:"))
|
||||
4
|
||||
(set! read (cons 'third-clause read))))))
|
||||
(delete-file tmp-file)
|
||||
(set! read (cons 'third-clause read)))))
|
||||
(make-string-input-port str))
|
||||
(equal? read
|
||||
(list 'second-clause 'second-clause 'third-clause 'first-clause)))))
|
||||
|
||||
|
@ -295,18 +251,14 @@
|
|||
|
||||
(add-test! 'range-w-begin-wo-end-test 'awk
|
||||
(lambda ()
|
||||
(let ((tmp-file (create-temp-file))
|
||||
(read '()))
|
||||
(call-with-output-file tmp-file
|
||||
(lambda (out-port)
|
||||
(write-string "ein paar testzeilen, um\n" out-port)
|
||||
(write-string "expr-test zu prüfen:\n" out-port)
|
||||
(write-string "EINE ZEILE GRO/3...\n" out-port)
|
||||
(write-string "eine zeile klein...\n" out-port)
|
||||
(write-string "eine zeile mit zeichen...\n" out-port)
|
||||
(write-string "*+#'~,;:.-_<>|!§$%&/()=?\"\\[]{}\n" out-port)))
|
||||
(call-with-input-file tmp-file
|
||||
(lambda (in-port)
|
||||
(let ((read '())
|
||||
(str (string-append "ein paar testzeilen, um\n"
|
||||
"expr-test zu prüfen:\n"
|
||||
"EINE ZEILE GRO/3...\n"
|
||||
"eine zeile klein...\n"
|
||||
"eine zeile mit zeichen...\n"
|
||||
"*+#'~,;:.-_<>|!§$%&/()=?\"\\[]{}\n")))
|
||||
((lambda (in-port)
|
||||
(awk (read-line in-port) (line) counter ()
|
||||
(:range 1 3 (set! read (cons 'first-clause read)))
|
||||
(:range (when (equal? line
|
||||
|
@ -317,8 +269,8 @@
|
|||
(:range (when (equal? line
|
||||
"expr-test zu prüfen:"))
|
||||
4
|
||||
(set! read (cons 'third-clause read))))))
|
||||
(delete-file tmp-file)
|
||||
(set! read (cons 'third-clause read)))))
|
||||
(make-string-input-port str))
|
||||
(equal? read
|
||||
(list 'second-clause 'second-clause 'third-clause 'second-clause 'third-clause 'first-clause 'first-clause)))))
|
||||
|
||||
|
@ -327,18 +279,14 @@
|
|||
|
||||
(add-test! 'range-wo-begin-w-end-test 'awk
|
||||
(lambda ()
|
||||
(let ((tmp-file (create-temp-file))
|
||||
(read '()))
|
||||
(call-with-output-file tmp-file
|
||||
(lambda (out-port)
|
||||
(write-string "ein paar testzeilen, um\n" out-port)
|
||||
(write-string "expr-test zu prüfen:\n" out-port)
|
||||
(write-string "EINE ZEILE GRO/3...\n" out-port)
|
||||
(write-string "eine zeile klein...\n" out-port)
|
||||
(write-string "eine zeile mit zeichen...\n" out-port)
|
||||
(write-string "*+#'~,;:.-_<>|!§$%&/()=?\"\\[]{}\n" out-port)))
|
||||
(call-with-input-file tmp-file
|
||||
(lambda (in-port)
|
||||
(let ((read '())
|
||||
(str (string-append "ein paar testzeilen, um\n"
|
||||
"expr-test zu prüfen:\n"
|
||||
"EINE ZEILE GRO/3...\n"
|
||||
"eine zeile klein...\n"
|
||||
"eine zeile mit zeichen...\n"
|
||||
"*+#'~,;:.-_<>|!§$%&/()=?\"\\[]{}\n")))
|
||||
((lambda (in-port)
|
||||
(awk (read-line in-port) (line) counter ()
|
||||
(range: 1 3 (set! read (cons 'first-clause read)))
|
||||
(range: (when (equal? line
|
||||
|
@ -349,8 +297,8 @@
|
|||
(range: (when (equal? line
|
||||
"expr-test zu prüfen:"))
|
||||
4
|
||||
(set! read (cons 'third-clause read))))))
|
||||
(delete-file tmp-file)
|
||||
(set! read (cons 'third-clause read)))))
|
||||
(make-string-input-port str))
|
||||
(equal? read
|
||||
(list 'second-clause 'second-clause 'third-clause 'second-clause 'third-clause 'first-clause 'first-clause)))))
|
||||
|
||||
|
@ -359,18 +307,14 @@
|
|||
|
||||
(add-test! 'range-w-begin-w-end-test 'awk
|
||||
(lambda ()
|
||||
(let ((tmp-file (create-temp-file))
|
||||
(read '()))
|
||||
(call-with-output-file tmp-file
|
||||
(lambda (out-port)
|
||||
(write-string "ein paar testzeilen, um\n" out-port)
|
||||
(write-string "expr-test zu prüfen:\n" out-port)
|
||||
(write-string "EINE ZEILE GRO/3...\n" out-port)
|
||||
(write-string "eine zeile klein...\n" out-port)
|
||||
(write-string "eine zeile mit zeichen...\n" out-port)
|
||||
(write-string "*+#'~,;:.-_<>|!§$%&/()=?\"\\[]{}\n" out-port)))
|
||||
(call-with-input-file tmp-file
|
||||
(lambda (in-port)
|
||||
(let ((read '())
|
||||
(str (string-append "ein paar testzeilen, um\n"
|
||||
"expr-test zu prüfen:\n"
|
||||
"EINE ZEILE GRO/3...\n"
|
||||
"eine zeile klein...\n"
|
||||
"eine zeile mit zeichen...\n"
|
||||
"*+#'~,;:.-_<>|!§$%&/()=?\"\\[]{}\n")))
|
||||
((lambda (in-port)
|
||||
(awk (read-line in-port) (line) counter ()
|
||||
(:range: 1 3 (set! read (cons 'first-clause read)))
|
||||
(:range: (when (equal? line
|
||||
|
@ -381,8 +325,8 @@
|
|||
(:range: (when (equal? line
|
||||
"expr-test zu prüfen:"))
|
||||
4
|
||||
(set! read (cons 'third-clause read))))))
|
||||
(delete-file tmp-file)
|
||||
(set! read (cons 'third-clause read)))))
|
||||
(make-string-input-port str))
|
||||
(equal? read
|
||||
(list 'second-clause 'second-clause 'third-clause 'second-clause 'third-clause
|
||||
'second-clause 'first-clause 'third-clause 'first-clause 'first-clause)))))
|
||||
|
@ -391,25 +335,21 @@
|
|||
|
||||
(add-test! 'else-test 'awk
|
||||
(lambda ()
|
||||
(let ((tmp-file (create-temp-file))
|
||||
(read '()))
|
||||
(call-with-output-file tmp-file
|
||||
(lambda (out-port)
|
||||
(write-string "ein paar testzeilen, um\n" out-port)
|
||||
(write-string "expr-test zu prüfen:\n" out-port)
|
||||
(write-string "EINE ZEILE GRO/3...\n" out-port)
|
||||
(write-string "eine zeile klein...\n" out-port)
|
||||
(write-string "eine zeile mit zeichen...\n" out-port)
|
||||
(write-string "*+#'~,;:.-_<>|!§$%&/()=?\"\\[]{}\n" out-port)))
|
||||
(call-with-input-file tmp-file
|
||||
(lambda (in-port)
|
||||
(let ((read '())
|
||||
(str (string-append "ein paar testzeilen, um\n"
|
||||
"expr-test zu prüfen:\n"
|
||||
"EINE ZEILE GRO/3...\n"
|
||||
"eine zeile klein...\n"
|
||||
"eine zeile mit zeichen...\n"
|
||||
"*+#'~,;:.-_<>|!§$%&/()=?\"\\[]{}\n")))
|
||||
((lambda (in-port)
|
||||
(awk (read-line in-port) (line) ()
|
||||
(1 (set! read (cons 'first-clause read)))
|
||||
(else (set! read (cons 'second-clause read)))
|
||||
(4 (set! read (cons 'third-clause read)))
|
||||
(5 (set! read (cons 'fourth-clause read)))
|
||||
(else (set! read (cons 'fifth-clause read))))))
|
||||
(delete-file tmp-file)
|
||||
(else (set! read (cons 'fifth-clause read)))))
|
||||
(make-string-input-port str))
|
||||
(equal? read
|
||||
(list 'fifth-clause 'second-clause 'fourth-clause 'second-clause 'third-clause
|
||||
'second-clause 'fifth-clause 'second-clause 'fifth-clause 'second-clause
|
||||
|
@ -420,24 +360,20 @@
|
|||
|
||||
(add-test! 'test=>expr-test 'awk
|
||||
(lambda ()
|
||||
(let ((tmp-file (create-temp-file))
|
||||
(read '()))
|
||||
(call-with-output-file tmp-file
|
||||
(lambda (out-port)
|
||||
(write-string "ein paar testzeilen, um\n" out-port)
|
||||
(write-string "expr-test zu prüfen:\n" out-port)
|
||||
(write-string "EINE ZEILE GRO/3...\n" out-port)
|
||||
(write-string "eine zeile klein...\n" out-port)
|
||||
(write-string "eine zeile mit zeichen...\n" out-port)
|
||||
(write-string "*+#'~,;:.-_<>|!§$%&/()=?\"\\[]{}\n" out-port)))
|
||||
(call-with-input-file tmp-file
|
||||
(lambda (in-port)
|
||||
(let ((read '())
|
||||
(str (string-append "ein paar testzeilen, um\n"
|
||||
"expr-test zu prüfen:\n"
|
||||
"EINE ZEILE GRO/3...\n"
|
||||
"eine zeile klein...\n"
|
||||
"eine zeile mit zeichen...\n"
|
||||
"*+#'~,;:.-_<>|!§$%&/()=?\"\\[]{}\n")))
|
||||
((lambda (in-port)
|
||||
(awk (read-line in-port) (line) counter ()
|
||||
(counter => (lambda (c)
|
||||
(set! read (cons c read))))
|
||||
(#f => (lambda (c)
|
||||
(set! read (cons c read)))))))
|
||||
(delete-file tmp-file)
|
||||
(set! read (cons c read))))))
|
||||
(make-string-input-port str))
|
||||
(equal? read (list 6 5 4 3 2 1)))))
|
||||
|
||||
|
||||
|
@ -445,24 +381,20 @@
|
|||
|
||||
(add-test! 'after-test 'awk
|
||||
(lambda ()
|
||||
(let ((tmp-file (create-temp-file))
|
||||
(read '()))
|
||||
(call-with-output-file tmp-file
|
||||
(lambda (out-port)
|
||||
(write-string "ein paar testzeilen, um\n" out-port)
|
||||
(write-string "expr-test zu prüfen:\n" out-port)
|
||||
(write-string "EINE ZEILE GRO/3...\n" out-port)
|
||||
(write-string "eine zeile klein...\n" out-port)
|
||||
(write-string "eine zeile mit zeichen...\n" out-port)
|
||||
(write-string "*+#'~,;:.-_<>|!§$%&/()=?\"\\[]{}\n" out-port)))
|
||||
(let ((read '())
|
||||
(str (string-append "ein paar testzeilen, um\n"
|
||||
"expr-test zu prüfen:\n"
|
||||
"EINE ZEILE GRO/3...\n"
|
||||
"eine zeile klein...\n"
|
||||
"eine zeile mit zeichen...\n"
|
||||
"*+#'~,;:.-_<>|!§$%&/()=?\"\\[]{}\n")))
|
||||
(set! read
|
||||
(call-with-input-file tmp-file
|
||||
(lambda (in-port)
|
||||
((lambda (in-port)
|
||||
(awk (read-line in-port) (line) ()
|
||||
(1 (set! read 1))
|
||||
(2 (set! read 2))
|
||||
(after 'return)))))
|
||||
(delete-file tmp-file)
|
||||
(after 'return)))
|
||||
(make-string-input-port str)))
|
||||
(equal? read 'return))))
|
||||
|
||||
|
||||
|
@ -470,18 +402,14 @@
|
|||
|
||||
(add-test! 'var-decl-test 'awk
|
||||
(lambda ()
|
||||
(let ((tmp-file (create-temp-file))
|
||||
(read '()))
|
||||
(call-with-output-file tmp-file
|
||||
(lambda (out-port)
|
||||
(write-string "ein paar testzeilen, um\n" out-port)
|
||||
(write-string "expr-test zu prüfen:\n" out-port)
|
||||
(write-string "EINE ZEILE GRO/3...\n" out-port)
|
||||
(write-string "eine zeile klein...\n" out-port)
|
||||
(write-string "eine zeile mit zeichen...\n" out-port)
|
||||
(write-string "*+#'~,;:.-_<>|!§$%&/()=?\"\\[]{}\n" out-port)))
|
||||
(call-with-input-file tmp-file
|
||||
(lambda (in-port)
|
||||
(let ((read '())
|
||||
(str (string-append "ein paar testzeilen, um\n"
|
||||
"expr-test zu prüfen:\n"
|
||||
"EINE ZEILE GRO/3...\n"
|
||||
"eine zeile klein...\n"
|
||||
"eine zeile mit zeichen...\n"
|
||||
"*+#'~,;:.-_<>|!§$%&/()=?\"\\[]{}\n")))
|
||||
((lambda (in-port)
|
||||
(awk (read-line in-port) (line) counter ((i 0)
|
||||
(x 2)
|
||||
(y 3))
|
||||
|
@ -490,8 +418,8 @@
|
|||
(3 (set! i (* i 2)))
|
||||
(4 (set! i (- i y)))
|
||||
(5 (set! i (* i x)))
|
||||
(6 (set! read i)))))
|
||||
(delete-file tmp-file)
|
||||
(6 (set! read i))))
|
||||
(make-string-input-port str))
|
||||
(= read 56))))
|
||||
|
||||
|
||||
|
@ -499,72 +427,20 @@
|
|||
|
||||
(add-test! 'multiple-return-values-of-next-record-test 'awk
|
||||
(lambda ()
|
||||
(let ((tmp-file (create-temp-file))
|
||||
(read '()))
|
||||
(call-with-output-file tmp-file
|
||||
(lambda (out-port)
|
||||
(write-string "ein paar testzeilen, um\n" out-port)
|
||||
(write-string "expr-test zu prüfen:\n" out-port)
|
||||
(write-string "EINE ZEILE GRO/3...\n" out-port)
|
||||
(write-string "eine zeile klein...\n" out-port)
|
||||
(write-string "eine zeile mit zeichen...\n" out-port)
|
||||
(write-string "*+#'~,;:.-_<>|!§$%&/()=?\"\\[]{}\n" out-port)))
|
||||
(call-with-input-file tmp-file
|
||||
(lambda (in-port)
|
||||
(let ((read '())
|
||||
(str (string-append "ein paar testzeilen, um\n"
|
||||
"expr-test zu prüfen:\n"
|
||||
"EINE ZEILE GRO/3...\n"
|
||||
"eine zeile klein...\n"
|
||||
"eine zeile mit zeichen...\n"
|
||||
"*+#'~,;:.-_<>|!§$%&/()=?\"\\[]{}\n")))
|
||||
((lambda (in-port)
|
||||
(awk ((lambda ()
|
||||
(values (read-line in-port)1 2 'a 'b))) (line x y a b) counter ()
|
||||
(1 (set! read (cons x read)))
|
||||
(2 (set! read (cons y read)))
|
||||
(3 (set! read (cons a read)))
|
||||
(4 (set! read (cons b read))))))
|
||||
(delete-file tmp-file)
|
||||
(4 (set! read (cons b read)))))
|
||||
(make-string-input-port str))
|
||||
(equal? read
|
||||
(list 'b 'a 2 1)))))
|
||||
|
||||
|
||||
|
||||
;; --- awk-in-awk-test ---
|
||||
|
||||
(add-test! 'awk-in-awk-test 'awk
|
||||
(lambda ()
|
||||
(let ((tmp-file (create-temp-file))
|
||||
(read '()))
|
||||
(call-with-output-file tmp-file
|
||||
(lambda (out-port)
|
||||
(let loop ((i 1))
|
||||
(if (= 10000 i)
|
||||
(write-string (number->string i) out-port)
|
||||
(begin
|
||||
(write-string (number->string i) out-port)
|
||||
(if (zero? (modulo i 100))
|
||||
(write-string "\n" out-port)
|
||||
(write-string " " out-port))
|
||||
(loop (+ i 1)))))))
|
||||
(call-with-input-file tmp-file
|
||||
(lambda (in-port)
|
||||
(awk (read-line in-port) (line) ()
|
||||
(#t (let ((tmp-file-1 (create-temp-file))
|
||||
(l (string-length line)))
|
||||
(call-with-output-file tmp-file-1
|
||||
(lambda (out-port)
|
||||
(let loop ((i 0))
|
||||
(if (= i l)
|
||||
(write-string "" out-port)
|
||||
(let ((ch (string-ref line i)))
|
||||
(if (= 32 (char->ascii ch))
|
||||
(write-string "\n" out-port)
|
||||
(write-string (char->string ch) out-port))
|
||||
(loop (+ i 1)))))))
|
||||
(call-with-input-file tmp-file-1
|
||||
(lambda (in-port)
|
||||
(awk (read-line in-port) (number-str) ()
|
||||
((str-palindrom? number-str) (set! read (cons number-str read))))))
|
||||
(delete-file tmp-file-1))))))
|
||||
(delete-file tmp-file)
|
||||
(equal? read
|
||||
(let loop ((i 10000))
|
||||
(if (zero? i)
|
||||
'()
|
||||
(if (int-palindrom? i)
|
||||
(cons (number->string i) (loop (- i 1)))
|
||||
(loop (- i 1)))))))))
|
Loading…
Reference in New Issue