~ chicken-core (chicken-5) /tests/read-lines-tests.scm
Trap1;; Tests for `read-lines'
2
3(import (chicken file)
4 (chicken io))
5
6(include "test.scm")
7
8(define input-test-file "read-lines.in")
9
10(with-output-to-file input-test-file
11 (lambda ()
12 (print #<<EOF
131
142
153
164
175
18EOF
19)))
20
21(test-begin "read-lines")
22
23(test-equal
24 "without arguments"
25 '("1" "2" "3" "4" "5")
26 (with-input-from-file input-test-file read-lines))
27
28(test-equal
29 "with a port as argument"
30 '("1" "2" "3" "4" "5")
31 (call-with-input-file input-test-file
32 (lambda (port)
33 (read-lines port))))
34
35(test-equal
36 "with a limit"
37 '("1" "2")
38 (call-with-input-file input-test-file
39 (lambda (port)
40 (read-lines port 2))))
41
42(test-error
43 "with an invalid first argument (port)"
44 (read-lines input-test-file))
45
46(test-error
47 "with an invalid second argument (max)"
48 (call-with-input-file input-test-file
49 (lambda (port)
50 (dynamic-wind
51 void
52 (lambda () (read-lines port 2.0))
53 (lambda () (close-input-port port))))))
54
55(test-end "read-lines")
56
57(delete-file input-test-file)
58
59(test-exit)