2
;;;; Author: Paul Dietz
3
;;;; Created: Sat Sep 14 09:58:47 2002
4
;;;; Contains: Tests for MAKE-SEQUENCE
8
(deftest make-sequence.1
9
(let ((x (make-sequence 'list 4)))
10
(and (eql (length x) 4)
12
#+:ansi-tests-strict-initial-element
13
(loop for e in x always (eql (car x) e))
17
(deftest make-sequence.2
18
(make-sequence 'list 4 :initial-element 'a)
21
(deftest make-sequence.3
22
(let ((x (make-sequence 'cons 4)))
23
(and (eql (length x) 4)
25
#+:ansi-tests-strict-initial-element
26
(loop for e in x always (eql (car x) e))
30
(deftest make-sequence.4
31
(make-sequence 'cons 4 :initial-element 'a)
34
(deftest make-sequence.5
35
(make-sequence 'string 10 :initial-element #\a)
38
(deftest make-sequence.6
39
(let ((s (make-sequence 'string 10)))
40
(and (eql (length s) 10)
41
#+:ansi-tests-strict-initial-element
42
(loop for e across s always (eql e (aref s 0)))
46
(deftest make-sequence.7
47
(make-sequence 'simple-string 10 :initial-element #\a)
51
(deftest make-sequence.8
52
(let ((s (make-sequence 'simple-string 10)))
53
(and (eql (length s) 10)
54
#+:ansi-tests-strict-initial-element
55
(loop for e across s always (eql e (aref s 0)))
59
(deftest make-sequence.9
60
(make-sequence 'null 0)
63
(deftest make-sequence.10
64
(let ((x (make-sequence 'vector 10)))
65
(and (eql (length x) 10)
66
#+:ansi-tests-strict-initial-element
67
(loop for e across x always (eql e (aref x 0)))
71
(deftest make-sequence.11
73
(x (make-sequence 'vector 10 :initial-element u)))
74
(and (eql (length x) 10)
75
(loop for e across x always (eql e u))
79
(deftest make-sequence.12
80
(let ((x (make-sequence 'simple-vector 10)))
81
(and (eql (length x) 10)
82
#+:ansi-tests-strict-initial-element
83
(loop for e across x always (eql e (aref x 0)))
87
(deftest make-sequence.13
89
(x (make-sequence 'simple-vector 10 :initial-element u)))
90
(and (eql (length x) 10)
91
(loop for e across x always (eql e u))
95
(deftest make-sequence.14
96
(let ((x (make-sequence '(vector *) 10)))
97
(and (eql (length x) 10)
98
#+:ansi-tests-strict-initial-element
99
(loop for e across x always (eql e (aref x 0)))
103
(deftest make-sequence.15
105
(x (make-sequence '(vector *) 10 :initial-element u)))
106
(and (eql (length x) 10)
107
(loop for e across x always (eql e u))
111
(deftest make-sequence.16
112
(let ((x (make-sequence '(simple-vector *) 10)))
113
(and (eql (length x) 10)
114
#+:ansi-tests-strict-initial-element
115
(loop for e across x always (eql e (aref x 0)))
119
(deftest make-sequence.17
121
(x (make-sequence '(simple-vector *) 10 :initial-element u)))
122
(and (eql (length x) 10)
123
(loop for e across x always (eql e u))
127
(deftest make-sequence.18
128
(let ((x (make-sequence '(string *) 10)))
129
(and (eql (length x) 10)
130
#+:ansi-tests-strict-initial-element
131
(loop for e across x always (eql e (aref x 0)))
135
(deftest make-sequence.19
137
(x (make-sequence '(string *) 10 :initial-element u)))
138
(and (eql (length x) 10)
139
(loop for e across x always (eql e u))
143
(deftest make-sequence.20
144
(let ((x (make-sequence '(simple-string *) 10)))
145
(and (eql (length x) 10)
146
#+:ansi-tests-strict-initial-element
147
(loop for e across x always (eql e (aref x 0)))
151
(deftest make-sequence.21
153
(x (make-sequence '(simple-string *) 10 :initial-element u)))
154
(and (eql (length x) 10)
155
(loop for e across x always (eql e u))
159
(deftest make-sequence.22
160
(make-sequence '(vector * 5) 5 :initial-element 'a)
163
(deftest make-sequence.23
164
(make-sequence '(vector fixnum 5) 5 :initial-element 1)
167
(deftest make-sequence.24
168
(make-sequence '(vector (integer 0 255) 5) 5 :initial-element 17)
171
(deftest make-sequence.25
172
(make-sequence '(simple-vector 5) 5 :initial-element 'a)
175
#+:ansi-tests-strict-initial-element
176
(deftest make-sequence.26
177
(equalp (make-sequence 'string 5) (make-string 5))
182
(deftest make-sequence.allow-other-keys.1
183
(make-sequence 'list 5 :allow-other-keys t :initial-element 'a :bad t)
186
(deftest make-sequence.allow-other-keys.2
187
(make-sequence 'list 5 :initial-element 'a :bad t :allow-other-keys t)
190
(deftest make-sequence.allow-other-keys.3
191
(make-sequence 'list 5 :initial-element 'a :allow-other-keys t)
194
(deftest make-sequence.allow-other-keys.4
195
(make-sequence 'list 5 :initial-element 'a :allow-other-keys nil)
198
(deftest make-sequence.allow-other-keys.5
199
(make-sequence 'list 5 :initial-element 'a :allow-other-keys t
200
:allow-other-keys nil :bad t)
203
(deftest make-sequence.keywords.6
204
(make-sequence 'list 5 :initial-element 'a :initial-element 'b)
209
(deftest make-sequence.error.1
210
(signals-error (make-sequence 'symbol 10) type-error)
213
(deftest make-sequence.error.2
214
(signals-error (make-sequence 'null 1) type-error)
217
(deftest make-sequence.error.3
218
(signals-error (make-sequence '(vector * 4) 3) type-error)
221
(deftest make-sequence.error.4
222
(signals-error (make-sequence '(vector * 2) 3) type-error)
225
(deftest make-sequence.error.5
226
(signals-error (make-sequence '(string 4) 3) type-error)
229
(deftest make-sequence.error.6
230
(signals-error (make-sequence '(simple-string 2) 3) type-error)
233
(deftest make-sequence.error.7
234
(signals-error (make-sequence 'cons 0) type-error)
237
(deftest make-sequence.error.8
238
(signals-error (make-sequence) program-error)
241
(deftest make-sequence.error.9
242
(signals-error (make-sequence 'list) program-error)
245
(deftest make-sequence.error.10
246
(signals-error (make-sequence 'list 10 :bad t) program-error)
249
(deftest make-sequence.error.11
250
(signals-error (make-sequence 'list 10 :bad t :allow-other-keys nil)
254
(deftest make-sequence.error.12
255
(signals-error (make-sequence 'list 10 :initial-element)
259
(deftest make-sequence.error.13
260
(signals-error (make-sequence 'list 10 0 0) program-error)
263
(deftest make-sequence.error.14
264
(signals-error (locally (make-sequence 'symbol 10) t)
268
;;; Order of execution tests
270
(deftest make-sequence.order.1
273
(make-sequence (progn (setf a (incf i)) 'list)
274
(progn (setf b (incf i)) 5)
275
:initial-element (progn (setf c (incf i)) 'a))
279
(deftest make-sequence.order.2
280
(let ((i 0) a b c d e)
282
(make-sequence (progn (setf a (incf i)) 'list)
283
(progn (setf b (incf i)) 5)
284
:allow-other-keys (setf c (incf i))
285
:initial-element (progn (setf d (incf i)) 'a)
286
:foo (setf e (incf i)))
288
(a a a a a) 5 1 2 3 4 5)