source: trunk/source/tests/ansi-tests/read-byte.lsp @ 8991

Last change on this file since 8991 was 8991, checked in by gz, 11 years ago

Check in the gcl ansi test suite (original, in preparation for making local changes)

File size: 4.1 KB
Line 
1;-*- Mode:     Lisp -*-
2;;;; Author:   Paul Dietz
3;;;; Created:  Sat Jan 17 17:30:49 2004
4;;;; Contains: Tests of READ-BYTE, WRITE-BYTE
5
6(in-package :cl-test)
7
8(deftest read-byte.1
9  (let ((s (open "foo.txt"
10                 :direction :output
11                 :if-exists :supersede
12                 :element-type '(unsigned-byte 8))))
13    (values
14     (write-byte 17 s)
15     (close s)
16     (progn
17       (setq s (open "foo.txt"
18                     :direction :input
19                     :element-type '(unsigned-byte 8)))
20       (read-byte s))
21     (close s)))
22  17 t 17 t)
23
24(deftest read-byte.2
25  (let ((s (open "foo.txt"
26                 :direction :output
27                 :if-exists :supersede
28                 :element-type '(unsigned-byte 8))))
29    (values
30     (close s)
31     (progn
32        (setq s (open "foo.txt"
33                     :direction :input
34                     :element-type '(unsigned-byte 8)))
35        (read-byte s nil 'foo))
36     (read-byte s nil)
37     (close s)))
38  t foo nil t)
39
40(deftest read-byte.3
41  (loop with b1 = 0
42        and b2 = 0
43        for i from 1 to 32
44        do (let ((s (open "foo.txt"
45                          :direction :output
46                          :if-exists :supersede
47                          :element-type `(unsigned-byte ,i))))
48             (write-byte (1- (ash 1 i)) s)
49             (write-byte 1 s)
50             (close s))
51        unless (let ((s (open "foo.txt"
52                              :direction :input
53                              :element-type `(unsigned-byte ,i))))
54                 (prog1
55                   (and (eql (setq b1 (read-byte s)) (1- (ash 1 i)))
56                        (eql (setq b2 (read-byte s)) 1))
57                   (close s)))
58        collect (list i b1 b2))
59  nil)
60
61(deftest read-byte.4
62  (loop with b1 = 0
63        and b2 = 0
64        for i from 33 to 200 by 7
65        do (let ((s (open "foo.txt"
66                          :direction :output
67                          :if-exists :supersede
68                          :element-type `(unsigned-byte ,i))))
69             (write-byte (1- (ash 1 i)) s)
70             (write-byte 1 s)
71             (close s))
72        unless (let ((s (open "foo.txt"
73                              :direction :input
74                              :element-type `(unsigned-byte ,i))))
75                 (prog1
76                     (and (eql (setq b1 (read-byte s)) (1- (ash 1 i)))
77                          (eql (setq b2 (read-byte s)) 1))
78                   (close s)))
79        collect (list i b1 b2))
80  nil)
81
82;;; Error tests
83
84(deftest read-byte.error.1
85  (signals-error (read-byte) program-error)
86  t)
87
88(deftest read-byte.error.2
89  (progn
90    (let ((s (open "foo.txt"
91                   :direction :output
92                   :if-exists :supersede
93                  :element-type `(unsigned-byte 8))))
94      (close s))
95    (signals-error
96     (let ((s (open "foo.txt"
97                   :direction :input
98                   :element-type '(unsigned-byte 8))))
99       (read-byte s))
100     end-of-file))
101  t)
102
103(deftest read-byte.error.3
104  (progn
105    (let ((s (open "foo.txt"
106                   :direction :output
107                   :if-exists :supersede)))
108      (close s))
109    (signals-error
110     (let ((s (open "foo.txt" :direction :input)))
111       (unwind-protect
112           (read-byte s)
113         (close s)))
114     error))
115  t)
116
117(deftest read-byte.error.4
118  (signals-error-always
119   (progn
120     (let ((s (open "foo.txt"
121                    :direction :output
122                    :if-exists :supersede
123                    :element-type '(unsigned-byte 8))))
124       (close s))
125     (let ((s (open "foo.txt"
126                    :direction :input
127                    :element-type '(unsigned-byte 8))))
128       (unwind-protect
129           (read-byte s t)
130         (close s))))
131   end-of-file)
132  t t)
133
134(deftest read-byte.error.5
135  (check-type-error #'read-byte #'streamp)
136  nil)
137
138(deftest read-byte.error.6
139  (progn
140    (let ((s (open "foo.txt"
141                   :direction :output
142                   :if-exists :supersede
143                  :element-type '(unsigned-byte 8))))
144      (close s))
145    (signals-error
146     (let ((s (open "foo.txt"
147                   :direction :input
148                   :element-type '(unsigned-byte 8))))
149       (unwind-protect
150           (read-byte s t t nil)
151         (close s)))
152     program-error))
153  t)
154
155       
156(deftest write-byte.error.1
157  (signals-error (write-byte) program-error)
158  t)
159
160(deftest write-byte.error.2
161  (signals-error (write-byte 0) program-error)
162  t)
163
164(deftest write-byte.error.3
165  (signals-error
166   (let ((s (open "foo.txt"
167                  :direction :output
168                  :if-exists :supersede
169                  :element-type '(unsigned-byte 8))))
170     (unwind-protect
171         (write 1 s nil)
172       (close s)))
173   program-error)
174  t)
175
176(deftest write-byte.error.4
177  (check-type-error #'(lambda (x) (write-byte 0 x)) #'streamp)
178  nil)
179
180(deftest write-byte.error.5
181   (signals-error
182    (let ((s (open "foo.txt"
183                   :direction :output
184                   :if-exists :supersede)))
185      (unwind-protect
186          (write 1 s)
187        (close s)))
188    error)
189   t)
190
191
192
193   
194   
Note: See TracBrowser for help on using the repository browser.