1
;;;; srfi-4.test --- Test suite for Guile's SRFI-4 functions. -*- scheme -*-
2
;;;; Martin Grabmueller, 2001-06-26
4
;;;; Copyright (C) 2001, 2006 Free Software Foundation, Inc.
6
;;;; This program is free software; you can redistribute it and/or modify
7
;;;; it under the terms of the GNU General Public License as published by
8
;;;; the Free Software Foundation; either version 2, or (at your option)
9
;;;; any later version.
11
;;;; This program is distributed in the hope that it will be useful,
12
;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
13
;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
;;;; GNU General Public License for more details.
16
;;;; You should have received a copy of the GNU General Public License
17
;;;; along with this software; see the file COPYING. If not, write to
18
;;;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19
;;;; Boston, MA 02110-1301 USA
21
(use-modules (srfi srfi-4)
24
(with-test-prefix "u8 vectors"
26
(pass-if "u8vector? success"
27
(u8vector? (u8vector)))
29
(pass-if "u8vector? failure"
30
(not (u8vector? (s8vector))))
32
(pass-if "u8vector-length success 1"
33
(= (u8vector-length (u8vector)) 0))
35
(pass-if "u8vector-length success 2"
36
(= (u8vector-length (u8vector 3)) 1))
38
(pass-if "u8vector-length failure"
39
(not (= (u8vector-length (u8vector 3)) 3)))
41
(pass-if "u8vector-ref"
42
(= (u8vector-ref (u8vector 1 2 3) 1) 2))
44
(pass-if "u8vector-set!/ref"
45
(= (let ((s (make-u8vector 10 0)))
46
(u8vector-set! s 4 33)
47
(u8vector-ref s 4)) 33))
49
(pass-if "u8vector->list/list->u8vector"
50
(equal? (u8vector->list (u8vector 1 2 3 4))
51
(u8vector->list (list->u8vector '(1 2 3 4))))))
53
(with-test-prefix "s8 vectors"
55
(pass-if "s8vector? success"
56
(s8vector? (s8vector)))
58
(pass-if "s8vector? failure"
59
(not (s8vector? (u8vector))))
61
(pass-if "s8vector-length success 1"
62
(= (s8vector-length (s8vector)) 0))
64
(pass-if "s8vector-length success 2"
65
(= (s8vector-length (s8vector -3)) 1))
67
(pass-if "s8vector-length failure"
68
(not (= (s8vector-length (s8vector 3)) 3)))
70
(pass-if "s8vector-ref"
71
(= (s8vector-ref (s8vector 1 2 3) 1) 2))
73
(pass-if "s8vector-set!/ref"
74
(= (let ((s (make-s8vector 10 0)))
75
(s8vector-set! s 4 33)
76
(s8vector-ref s 4)) 33))
78
(pass-if "s8vector->list/list->s8vector"
79
(equal? (s8vector->list (s8vector 1 2 3 4))
80
(s8vector->list (list->s8vector '(1 2 3 4))))))
83
(with-test-prefix "u16 vectors"
85
(pass-if "u16vector? success"
86
(u16vector? (u16vector)))
88
(pass-if "u16vector? failure"
89
(not (u16vector? (s16vector))))
91
(pass-if "u16vector-length success 1"
92
(= (u16vector-length (u16vector)) 0))
94
(pass-if "u16vector-length success 2"
95
(= (u16vector-length (u16vector 3)) 1))
97
(pass-if "u16vector-length failure"
98
(not (= (u16vector-length (u16vector 3)) 3)))
100
(pass-if "u16vector-ref"
101
(= (u16vector-ref (u16vector 1 2 3) 1) 2))
103
(pass-if "u16vector-set!/ref"
104
(= (let ((s (make-u16vector 10 0)))
105
(u16vector-set! s 4 33)
106
(u16vector-ref s 4)) 33))
108
(pass-if "u16vector->list/list->u16vector"
109
(equal? (u16vector->list (u16vector 1 2 3 4))
110
(u16vector->list (list->u16vector '(1 2 3 4))))))
112
(with-test-prefix "s16 vectors"
114
(pass-if "s16vector? success"
115
(s16vector? (s16vector)))
117
(pass-if "s16vector? failure"
118
(not (s16vector? (u16vector))))
120
(pass-if "s16vector-length success 1"
121
(= (s16vector-length (s16vector)) 0))
123
(pass-if "s16vector-length success 2"
124
(= (s16vector-length (s16vector -3)) 1))
126
(pass-if "s16vector-length failure"
127
(not (= (s16vector-length (s16vector 3)) 3)))
129
(pass-if "s16vector-ref"
130
(= (s16vector-ref (s16vector 1 2 3) 1) 2))
132
(pass-if "s16vector-set!/ref"
133
(= (let ((s (make-s16vector 10 0)))
134
(s16vector-set! s 4 33)
135
(s16vector-ref s 4)) 33))
137
(pass-if "s16vector->list/list->s16vector"
138
(equal? (s16vector->list (s16vector 1 2 3 4))
139
(s16vector->list (list->s16vector '(1 2 3 4))))))
141
(with-test-prefix "u32 vectors"
143
(pass-if "u32vector? success"
144
(u32vector? (u32vector)))
146
(pass-if "u32vector? failure"
147
(not (u32vector? (s32vector))))
149
(pass-if "u32vector-length success 1"
150
(= (u32vector-length (u32vector)) 0))
152
(pass-if "u32vector-length success 2"
153
(= (u32vector-length (u32vector 3)) 1))
155
(pass-if "u32vector-length failure"
156
(not (= (u32vector-length (u32vector 3)) 3)))
158
(pass-if "u32vector-ref"
159
(= (u32vector-ref (u32vector 1 2 3) 1) 2))
161
(pass-if "u32vector-set!/ref"
162
(= (let ((s (make-u32vector 10 0)))
163
(u32vector-set! s 4 33)
164
(u32vector-ref s 4)) 33))
166
(pass-if "u32vector->list/list->u32vector"
167
(equal? (u32vector->list (u32vector 1 2 3 4))
168
(u32vector->list (list->u32vector '(1 2 3 4))))))
170
(with-test-prefix "s32 vectors"
172
(pass-if "s32vector? success"
173
(s32vector? (s32vector)))
175
(pass-if "s32vector? failure"
176
(not (s32vector? (u32vector))))
178
(pass-if "s32vector-length success 1"
179
(= (s32vector-length (s32vector)) 0))
181
(pass-if "s32vector-length success 2"
182
(= (s32vector-length (s32vector -3)) 1))
184
(pass-if "s32vector-length failure"
185
(not (= (s32vector-length (s32vector 3)) 3)))
187
(pass-if "s32vector-ref"
188
(= (s32vector-ref (s32vector 1 2 3) 1) 2))
190
(pass-if "s32vector-set!/ref"
191
(= (let ((s (make-s32vector 10 0)))
192
(s32vector-set! s 4 33)
193
(s32vector-ref s 4)) 33))
195
(pass-if "s32vector->list/list->s32vector"
196
(equal? (s32vector->list (s32vector 1 2 3 4))
197
(s32vector->list (list->s32vector '(1 2 3 4))))))
199
(with-test-prefix "u64 vectors"
201
(pass-if "u64vector? success"
202
(u64vector? (u64vector)))
204
(pass-if "u64vector? failure"
205
(not (u64vector? (s64vector))))
207
(pass-if "u64vector-length success 1"
208
(= (u64vector-length (u64vector)) 0))
210
(pass-if "u64vector-length success 2"
211
(= (u64vector-length (u64vector 3)) 1))
213
(pass-if "u64vector-length failure"
214
(not (= (u64vector-length (u64vector 3)) 3)))
216
(pass-if "u64vector-ref"
217
(= (u64vector-ref (u64vector 1 2 3) 1) 2))
219
(pass-if "u64vector-set!/ref"
220
(= (let ((s (make-u64vector 10 0)))
221
(u64vector-set! s 4 33)
222
(u64vector-ref s 4)) 33))
224
(pass-if "u64vector->list/list->u64vector"
225
(equal? (u64vector->list (u64vector 1 2 3 4))
226
(u64vector->list (list->u64vector '(1 2 3 4))))))
228
(with-test-prefix "s64 vectors"
230
(pass-if "s64vector? success"
231
(s64vector? (s64vector)))
233
(pass-if "s64vector? failure"
234
(not (s64vector? (u64vector))))
236
(pass-if "s64vector-length success 1"
237
(= (s64vector-length (s64vector)) 0))
239
(pass-if "s64vector-length success 2"
240
(= (s64vector-length (s64vector -3)) 1))
242
(pass-if "s64vector-length failure"
243
(not (= (s64vector-length (s64vector 3)) 3)))
245
(pass-if "s64vector-ref"
246
(= (s64vector-ref (s64vector 1 2 3) 1) 2))
248
(pass-if "s64vector-set!/ref"
249
(= (let ((s (make-s64vector 10 0)))
250
(s64vector-set! s 4 33)
251
(s64vector-ref s 4)) 33))
253
(pass-if "s64vector->list/list->s64vector"
254
(equal? (s64vector->list (s64vector 1 2 3 4))
255
(s64vector->list (list->s64vector '(1 2 3 4))))))
257
(with-test-prefix "f32 vectors"
259
(pass-if "f32vector? success"
260
(f32vector? (f32vector)))
262
(pass-if "f32vector? failure"
263
(not (f32vector? (s8vector))))
265
(pass-if "f32vector-length success 1"
266
(= (f32vector-length (f32vector)) 0))
268
(pass-if "f32vector-length success 2"
269
(= (f32vector-length (f32vector -3)) 1))
271
(pass-if "f32vector-length failure"
272
(not (= (f32vector-length (f32vector 3)) 3)))
274
(pass-if "f32vector-ref"
275
(= (f32vector-ref (f32vector 1 2 3) 1) 2))
277
(pass-if "f32vector-set!/ref"
278
(= (let ((s (make-f32vector 10 0)))
279
(f32vector-set! s 4 33)
280
(f32vector-ref s 4)) 33))
282
(pass-if "f32vector->list/list->f32vector"
283
(equal? (f32vector->list (f32vector 1 2 3 4))
284
(f32vector->list (list->f32vector '(1 2 3 4))))))
286
(with-test-prefix "f64 vectors"
288
(pass-if "f64vector? success"
289
(f64vector? (f64vector)))
291
(pass-if "f64vector? failure"
292
(not (f64vector? (f32vector))))
294
(pass-if "f64vector-length success 1"
295
(= (f64vector-length (f64vector)) 0))
297
(pass-if "f64vector-length success 2"
298
(= (f64vector-length (f64vector -3)) 1))
300
(pass-if "f64vector-length failure"
301
(not (= (f64vector-length (f64vector 3)) 3)))
303
(pass-if "f64vector-ref"
304
(= (f64vector-ref (f64vector 1 2 3) 1) 2))
306
(pass-if "f64vector-set!/ref"
307
(= (let ((s (make-f64vector 10 0)))
308
(f64vector-set! s 4 33)
309
(f64vector-ref s 4)) 33))
311
(pass-if "f64vector->list/list->f64vector"
312
(equal? (f64vector->list (f64vector 1 2 3 4))
313
(f64vector->list (list->f64vector '(1 2 3 4))))))