1 ;;;; bytevectors.test --- R6RS bytevectors. -*- mode: scheme; coding: utf-8; -*-
3 ;;;; Copyright (C) 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
6 ;;;; This library is free software; you can redistribute it and/or
7 ;;;; modify it under the terms of the GNU Lesser General Public
8 ;;;; License as published by the Free Software Foundation; either
9 ;;;; version 3 of the License, or (at your option) any later version.
11 ;;;; This library 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 GNU
14 ;;;; Lesser General Public License for more details.
16 ;;;; You should have received a copy of the GNU Lesser General Public
17 ;;;; License along with this library; if not, write to the Free Software
18 ;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 (define-module (test-bytevector)
21 :use-module (test-suite lib)
22 :use-module (system base compile)
23 :use-module (rnrs bytevectors))
25 ;;; Some of the tests in here are examples taken from the R6RS Standard
26 ;;; Libraries document.
29 (with-test-prefix/c&e "2.2 General Operations"
31 (pass-if "native-endianness"
32 (not (not (memq (native-endianness) '(big little)))))
34 (pass-if "make-bytevector"
35 (and (bytevector? (make-bytevector 20))
36 (bytevector? (make-bytevector 20 3))))
38 (pass-if "bytevector-length"
39 (= (bytevector-length (make-bytevector 20)) 20))
41 (pass-if "bytevector=?"
42 (and (bytevector=? (make-bytevector 20 7)
43 (make-bytevector 20 7))
44 (not (bytevector=? (make-bytevector 20 7)
45 (make-bytevector 20 0)))))
47 (pass-if "bytevector-copy! overlapping"
48 ;; See <http://debbugs.gnu.org/10070>.
49 (let ((b (u8-list->bytevector '(1 2 3 4 5 6 7 8))))
50 (bytevector-copy! b 0 b 3 4)
51 (bytevector->u8-list b)
52 (bytevector=? b #vu8(1 2 3 1 2 3 4 8)))))
55 (with-test-prefix/c&e "2.3 Operations on Bytes and Octets"
57 (pass-if "bytevector-{u8,s8}-ref"
58 (equal? '(-127 129 -1 255)
59 (let ((b1 (make-bytevector 16 -127))
60 (b2 (make-bytevector 16 255)))
61 (list (bytevector-s8-ref b1 0)
62 (bytevector-u8-ref b1 0)
63 (bytevector-s8-ref b2 0)
64 (bytevector-u8-ref b2 0)))))
66 (pass-if "bytevector-{u8,s8}-set!"
67 (equal? '(-126 130 -10 246)
68 (let ((b (make-bytevector 16 -127)))
70 (bytevector-s8-set! b 0 -126)
71 (bytevector-u8-set! b 1 246)
73 (list (bytevector-s8-ref b 0)
74 (bytevector-u8-ref b 0)
75 (bytevector-s8-ref b 1)
76 (bytevector-u8-ref b 1)))))
78 (pass-if "bytevector->u8-list"
79 (let ((lst '(1 2 3 128 150 255)))
82 (let ((b (make-bytevector 6)))
83 (for-each (lambda (i v)
84 (bytevector-u8-set! b i v))
89 (pass-if "u8-list->bytevector"
90 (let ((lst '(1 2 3 128 150 255)))
92 (bytevector->u8-list (u8-list->bytevector lst)))))
94 (pass-if "bytevector-uint-{ref,set!} [small]"
95 (let ((b (make-bytevector 15)))
96 (bytevector-uint-set! b 0 #x1234
97 (endianness little) 2)
98 (equal? (bytevector-uint-ref b 0 (endianness big) 2)
101 (pass-if "bytevector-uint-set! [large]"
102 (let ((b (make-bytevector 16)))
103 (bytevector-uint-set! b 0 (- (expt 2 128) 3)
104 (endianness little) 16)
105 (equal? (bytevector->u8-list b)
106 '(253 255 255 255 255 255 255 255
107 255 255 255 255 255 255 255 255))))
109 (pass-if "bytevector-uint-{ref,set!} [large]"
110 (let ((b (make-bytevector 120)))
111 (bytevector-uint-set! b 0 (- (expt 2 128) 3)
112 (endianness little) 16)
113 (equal? (bytevector-uint-ref b 0 (endianness little) 16)
114 #xfffffffffffffffffffffffffffffffd)))
116 (pass-if "bytevector-sint-ref [small]"
117 (let ((b (u8-list->bytevector '(#xff #xf0 #xff))))
118 (equal? (bytevector-sint-ref b 0 (endianness big) 2)
119 (bytevector-sint-ref b 1 (endianness little) 2)
122 (pass-if "bytevector-sint-ref [large]"
123 (let ((b (make-bytevector 50)))
124 (bytevector-uint-set! b 0 (- (expt 2 128) 3)
125 (endianness little) 16)
126 (equal? (bytevector-sint-ref b 0 (endianness little) 16)
129 (pass-if "bytevector-sint-set! [small]"
130 (let ((b (make-bytevector 3)))
131 (bytevector-sint-set! b 0 -16 (endianness big) 2)
132 (bytevector-sint-set! b 1 -16 (endianness little) 2)
133 (equal? (bytevector->u8-list b)
137 (let ((bv1 (u8-list->bytevector (iota 123)))
138 (bv2 (u8-list->bytevector (iota 123))))
142 (with-test-prefix/c&e "2.4 Operations on Integers of Arbitrary Size"
144 (pass-if "bytevector->sint-list"
145 (let ((b (u8-list->bytevector '(1 2 3 255 1 2 1 2))))
146 (equal? (bytevector->sint-list b (endianness little) 2)
147 '(513 -253 513 513))))
149 (pass-if "bytevector->uint-list"
150 (let ((b (u8-list->bytevector '(2 1 255 3 2 1 2 1))))
151 (equal? (bytevector->uint-list b (endianness big) 2)
152 '(513 65283 513 513))))
154 (pass-if "bytevector->uint-list [empty]"
155 (let ((b (make-bytevector 0)))
156 (null? (bytevector->uint-list b (endianness big) 2))))
158 (pass-if-exception "bytevector->sint-list [out-of-range]"
159 exception:out-of-range
160 (bytevector->sint-list (make-bytevector 6) (endianness little) -1))
162 (pass-if-exception "bytevector->uint-list [out-of-range]"
163 exception:out-of-range
164 (bytevector->uint-list (make-bytevector 6) (endianness little) 0))
166 (pass-if-exception "bytevector->uint-list [word size doesn't divide length]"
167 exception:wrong-type-arg
168 (bytevector->uint-list (make-bytevector 6) (endianness little) 4))
170 (pass-if "{sint,uint}-list->bytevector"
171 (let ((b1 (sint-list->bytevector '(513 -253 513 513)
172 (endianness little) 2))
173 (b2 (uint-list->bytevector '(513 65283 513 513)
174 (endianness little) 2))
175 (b3 (u8-list->bytevector '(1 2 3 255 1 2 1 2))))
176 (and (bytevector=? b1 b2)
177 (bytevector=? b2 b3))))
179 (pass-if "sint-list->bytevector [limits]"
180 (bytevector=? (sint-list->bytevector '(-32768 32767)
182 (let ((bv (make-bytevector 4)))
183 (bytevector-u8-set! bv 0 #x80)
184 (bytevector-u8-set! bv 1 #x00)
185 (bytevector-u8-set! bv 2 #x7f)
186 (bytevector-u8-set! bv 3 #xff)
189 (pass-if-exception "sint-list->bytevector [out-of-range]"
190 exception:out-of-range
191 (sint-list->bytevector (list 0 0 (expt 2 16)) (endianness big)
194 (pass-if-exception "uint-list->bytevector [out-of-range]"
195 exception:out-of-range
196 (uint-list->bytevector '(0 -1) (endianness big) 2)))
199 (with-test-prefix/c&e "2.5 Operations on 16-Bit Integers"
201 (pass-if "bytevector-u16-ref"
202 (let ((b (u8-list->bytevector
203 '(255 255 255 255 255 255 255 255
204 255 255 255 255 255 255 255 253))))
205 (and (equal? (bytevector-u16-ref b 14 (endianness little))
207 (equal? (bytevector-u16-ref b 14 (endianness big))
210 (pass-if "bytevector-s16-ref"
211 (let ((b (u8-list->bytevector
212 '(255 255 255 255 255 255 255 255
213 255 255 255 255 255 255 255 253))))
214 (and (equal? (bytevector-s16-ref b 14 (endianness little))
216 (equal? (bytevector-s16-ref b 14 (endianness big))
219 (pass-if "bytevector-s16-ref [unaligned]"
220 (let ((b (u8-list->bytevector '(#xff #xf0 #xff))))
221 (equal? (bytevector-s16-ref b 1 (endianness little))
224 (pass-if "bytevector-{u16,s16}-ref"
225 (let ((b (make-bytevector 2)))
226 (bytevector-u16-set! b 0 44444 (endianness little))
227 (and (equal? (bytevector-u16-ref b 0 (endianness little))
229 (equal? (bytevector-s16-ref b 0 (endianness little))
232 (pass-if "bytevector-native-{u16,s16}-{ref,set!}"
233 (let ((b (make-bytevector 2)))
234 (bytevector-u16-native-set! b 0 44444)
235 (and (equal? (bytevector-u16-native-ref b 0)
237 (equal? (bytevector-s16-native-ref b 0)
240 (pass-if "bytevector-s16-{ref,set!} [unaligned]"
241 (let ((b (make-bytevector 3)))
242 (bytevector-s16-set! b 1 -77 (endianness little))
243 (equal? (bytevector-s16-ref b 1 (endianness little))
247 (with-test-prefix/c&e "2.6 Operations on 32-bit Integers"
249 (pass-if "bytevector-u32-ref"
250 (let ((b (u8-list->bytevector
251 '(255 255 255 255 255 255 255 255
252 255 255 255 255 255 255 255 253))))
253 (and (equal? (bytevector-u32-ref b 12 (endianness little))
255 (equal? (bytevector-u32-ref b 12 (endianness big))
258 (pass-if "bytevector-s32-ref"
259 (let ((b (u8-list->bytevector
260 '(255 255 255 255 255 255 255 255
261 255 255 255 255 255 255 255 253))))
262 (and (equal? (bytevector-s32-ref b 12 (endianness little))
264 (equal? (bytevector-s32-ref b 12 (endianness big))
267 (pass-if "bytevector-{u32,s32}-ref"
268 (let ((b (make-bytevector 4)))
269 (bytevector-u32-set! b 0 2222222222 (endianness little))
270 (and (equal? (bytevector-u32-ref b 0 (endianness little))
272 (equal? (bytevector-s32-ref b 0 (endianness little))
273 (- 2222222222 (expt 2 32))))))
275 (pass-if "bytevector-{u32,s32}-native-{ref,set!}"
276 (let ((b (make-bytevector 4)))
277 (bytevector-u32-native-set! b 0 2222222222)
278 (and (equal? (bytevector-u32-native-ref b 0)
280 (equal? (bytevector-s32-native-ref b 0)
281 (- 2222222222 (expt 2 32)))))))
284 (with-test-prefix/c&e "2.7 Operations on 64-bit Integers"
286 (pass-if "bytevector-u64-ref"
287 (let ((b (u8-list->bytevector
288 '(255 255 255 255 255 255 255 255
289 255 255 255 255 255 255 255 253))))
290 (and (equal? (bytevector-u64-ref b 8 (endianness little))
292 (equal? (bytevector-u64-ref b 8 (endianness big))
293 #xfffffffffffffffd))))
295 (pass-if "bytevector-s64-ref"
296 (let ((b (u8-list->bytevector
297 '(255 255 255 255 255 255 255 255
298 255 255 255 255 255 255 255 253))))
299 (and (equal? (bytevector-s64-ref b 8 (endianness little))
301 (equal? (bytevector-s64-ref b 8 (endianness big))
304 (pass-if "bytevector-{u64,s64}-ref"
305 (let ((b (make-bytevector 8))
306 (big 9333333333333333333))
307 (bytevector-u64-set! b 0 big (endianness little))
308 (and (equal? (bytevector-u64-ref b 0 (endianness little))
310 (equal? (bytevector-s64-ref b 0 (endianness little))
311 (- big (expt 2 64))))))
313 (pass-if "bytevector-{u64,s64}-native-{ref,set!}"
314 (let ((b (make-bytevector 8))
315 (big 9333333333333333333))
316 (bytevector-u64-native-set! b 0 big)
317 (and (equal? (bytevector-u64-native-ref b 0)
319 (equal? (bytevector-s64-native-ref b 0)
320 (- big (expt 2 64))))))
322 (pass-if "ref/set! with zero"
323 (let ((b (make-bytevector 8)))
324 (bytevector-s64-set! b 0 -1 (endianness big))
325 (bytevector-u64-set! b 0 0 (endianness big))
326 (= 0 (bytevector-u64-ref b 0 (endianness big))))))
329 (with-test-prefix/c&e "2.8 Operations on IEEE-754 Representations"
331 (pass-if "single, little endian"
332 ;; http://bugs.gnu.org/11310
333 (let ((b (make-bytevector 4)))
334 (bytevector-ieee-single-set! b 0 1.0 (endianness little))
335 (equal? #vu8(0 0 128 63) b)))
337 (pass-if "single, big endian"
338 ;; http://bugs.gnu.org/11310
339 (let ((b (make-bytevector 4)))
340 (bytevector-ieee-single-set! b 0 1.0 (endianness big))
341 (equal? #vu8(63 128 0 0) b)))
343 (pass-if "bytevector-ieee-single-native-{ref,set!}"
344 (let ((b (make-bytevector 4))
346 (bytevector-ieee-single-native-set! b 0 number)
347 (equal? (bytevector-ieee-single-native-ref b 0)
350 (pass-if "bytevector-ieee-single-{ref,set!}"
351 (let ((b (make-bytevector 8))
353 (bytevector-ieee-single-set! b 0 number (endianness little))
354 (bytevector-ieee-single-set! b 4 number (endianness big))
355 (equal? (bytevector-ieee-single-ref b 0 (endianness little))
356 (bytevector-ieee-single-ref b 4 (endianness big)))))
358 (pass-if "bytevector-ieee-single-{ref,set!} [unaligned]"
359 (let ((b (make-bytevector 9))
361 (bytevector-ieee-single-set! b 1 number (endianness little))
362 (bytevector-ieee-single-set! b 5 number (endianness big))
363 (equal? (bytevector-ieee-single-ref b 1 (endianness little))
364 (bytevector-ieee-single-ref b 5 (endianness big)))))
366 (pass-if "double, little endian"
367 ;; http://bugs.gnu.org/11310
368 (let ((b (make-bytevector 8)))
369 (bytevector-ieee-double-set! b 0 1.0 (endianness little))
370 (equal? #vu8(0 0 0 0 0 0 240 63) b)))
372 (pass-if "double, big endian"
373 ;; http://bugs.gnu.org/11310
374 (let ((b (make-bytevector 8)))
375 (bytevector-ieee-double-set! b 0 1.0 (endianness big))
376 (equal? #vu8(63 240 0 0 0 0 0 0) b)))
378 (pass-if "bytevector-ieee-double-native-{ref,set!}"
379 (let ((b (make-bytevector 8))
381 (bytevector-ieee-double-native-set! b 0 number)
382 (equal? (bytevector-ieee-double-native-ref b 0)
385 (pass-if "bytevector-ieee-double-{ref,set!}"
386 (let ((b (make-bytevector 16))
388 (bytevector-ieee-double-set! b 0 number (endianness little))
389 (bytevector-ieee-double-set! b 8 number (endianness big))
390 (equal? (bytevector-ieee-double-ref b 0 (endianness little))
391 (bytevector-ieee-double-ref b 8 (endianness big))))))
395 ;; Default to the C locale for the following tests.
396 (setlocale LC_ALL "C")
399 (with-test-prefix "2.9 Operations on Strings"
401 (pass-if "string->utf8"
402 (let* ((str "hello, world")
403 (utf8 (string->utf8 str)))
404 (and (bytevector? utf8)
405 (= (bytevector-length utf8)
407 (equal? (string->list str)
408 (map integer->char (bytevector->u8-list utf8))))))
410 (pass-if "string->utf8 [latin-1]"
411 (let* ((str "hé, ça va bien ?")
412 (utf8 (string->utf8 str)))
413 (and (bytevector? utf8)
414 (= (bytevector-length utf8)
415 (+ 2 (string-length str))))))
417 (pass-if "string->utf16"
418 (let* ((str "hello, world")
419 (utf16 (string->utf16 str)))
420 (and (bytevector? utf16)
421 (= (bytevector-length utf16)
422 (* 2 (string-length str)))
423 (equal? (string->list str)
425 (bytevector->uint-list utf16
426 (endianness big) 2))))))
428 (pass-if "string->utf16 [little]"
429 (let* ((str "hello, world")
430 (utf16 (string->utf16 str (endianness little))))
431 (and (bytevector? utf16)
432 (= (bytevector-length utf16)
433 (* 2 (string-length str)))
434 (equal? (string->list str)
436 (bytevector->uint-list utf16
437 (endianness little) 2))))))
440 (pass-if "string->utf32"
441 (let* ((str "hello, world")
442 (utf32 (string->utf32 str)))
443 (and (bytevector? utf32)
444 (= (bytevector-length utf32)
445 (* 4 (string-length str)))
446 (equal? (string->list str)
448 (bytevector->uint-list utf32
449 (endianness big) 4))))))
451 (pass-if "string->utf32 [Greek]"
452 (let* ((str "Ἄνεμοι")
453 (utf32 (string->utf32 str)))
454 (and (bytevector? utf32)
455 (equal? (bytevector->uint-list utf32 (endianness big) 4)
456 '(#x1f0c #x3bd #x3b5 #x3bc #x3bf #x3b9)))))
458 (pass-if "string->utf32 [little]"
459 (let* ((str "hello, world")
460 (utf32 (string->utf32 str (endianness little))))
461 (and (bytevector? utf32)
462 (= (bytevector-length utf32)
463 (* 4 (string-length str)))
464 (equal? (string->list str)
466 (bytevector->uint-list utf32
467 (endianness little) 4))))))
469 (pass-if "utf8->string"
470 (let* ((utf8 (u8-list->bytevector (map char->integer
471 (string->list "hello, world"))))
472 (str (utf8->string utf8)))
474 (= (string-length str)
475 (bytevector-length utf8))
476 (equal? (string->list str)
477 (map integer->char (bytevector->u8-list utf8))))))
479 (pass-if "utf8->string [latin-1]"
480 (let* ((utf8 (string->utf8 "hé, ça va bien ?"))
481 (str (utf8->string utf8)))
483 (= (string-length str)
484 (- (bytevector-length utf8) 2)))))
486 (pass-if "utf16->string"
487 (let* ((utf16 (uint-list->bytevector (map char->integer
488 (string->list "hello, world"))
490 (str (utf16->string utf16)))
492 (= (* 2 (string-length str))
493 (bytevector-length utf16))
494 (equal? (string->list str)
496 (bytevector->uint-list utf16 (endianness big)
499 (pass-if "utf16->string [little]"
500 (let* ((utf16 (uint-list->bytevector (map char->integer
501 (string->list "hello, world"))
502 (endianness little) 2))
503 (str (utf16->string utf16 (endianness little))))
505 (= (* 2 (string-length str))
506 (bytevector-length utf16))
507 (equal? (string->list str)
509 (bytevector->uint-list utf16 (endianness little)
511 (pass-if "utf32->string"
512 (let* ((utf32 (uint-list->bytevector (map char->integer
513 (string->list "hello, world"))
515 (str (utf32->string utf32)))
517 (= (* 4 (string-length str))
518 (bytevector-length utf32))
519 (equal? (string->list str)
521 (bytevector->uint-list utf32 (endianness big)
524 (pass-if "utf32->string [little]"
525 (let* ((utf32 (uint-list->bytevector (map char->integer
526 (string->list "hello, world"))
527 (endianness little) 4))
528 (str (utf32->string utf32 (endianness little))))
530 (= (* 4 (string-length str))
531 (bytevector-length utf32))
532 (equal? (string->list str)
534 (bytevector->uint-list utf32 (endianness little)
539 (with-test-prefix "Datum Syntax"
542 (equal? (with-input-from-string "#vu8()" read)
543 (make-bytevector 0)))
546 (equal? (with-input-from-string "#vu8(1 2 3 4 5)" read)
547 (u8-list->bytevector '(1 2 3 4 5))))
550 (equal? (with-input-from-string "#vu8(0 255 127 128)" read)
551 (u8-list->bytevector '(0 255 127 128))))
553 (pass-if "self-evaluating?"
554 (self-evaluating? (make-bytevector 1)))
556 (pass-if "self-evaluating"
557 (equal? (eval (with-input-from-string "#vu8(1 2 3 4 5)" read)
559 (u8-list->bytevector '(1 2 3 4 5))))
562 (equal? (eval (with-input-from-string "'#vu8(1 2 3 4 5)" read)
564 (u8-list->bytevector '(1 2 3 4 5))))
566 (pass-if "literal simple"
567 (equal? #vu8(1 2 3 4 5)
568 (u8-list->bytevector '(1 2 3 4 5))))
570 (pass-if "literal >127"
571 (equal? #vu8(0 255 127 128)
572 (u8-list->bytevector '(0 255 127 128))))
574 (pass-if "literal quoted"
575 (equal? '#vu8(1 2 3 4 5)
576 (u8-list->bytevector '(1 2 3 4 5))))
578 (pass-if-exception "incorrect prefix"
580 (with-input-from-string "#vi8(1 2 3)" read))
582 (pass-if-exception "extraneous space"
584 (with-input-from-string "#vu8 (1 2 3)" read))
586 (pass-if-exception "negative integers"
587 exception:wrong-type-arg
588 (with-input-from-string "#vu8(-1 -2 -3)" read))
590 (pass-if-exception "out-of-range integers"
591 exception:wrong-type-arg
592 (with-input-from-string "#vu8(0 256)" read)))
595 (with-test-prefix "Arrays"
598 (array? #vu8(1 2 3)))
600 (pass-if "array-length"
603 (map make-bytevector (iota 16)))))
606 (let ((bv #vu8(255 127)))
607 (and (= 255 (array-ref bv 0))
608 (= 127 (array-ref bv 1)))))
610 (pass-if-exception "array-ref [index out-of-range]"
611 exception:out-of-range
612 (let ((bv #vu8(1 2)))
615 (pass-if "array-set!"
616 (let ((bv (make-bytevector 2)))
617 (array-set! bv 255 0)
620 (bytevector->u8-list bv))))
622 (pass-if-exception "array-set! [index out-of-range]"
623 exception:out-of-range
624 (let ((bv (make-bytevector 2)))
625 (array-set! bv 0 2)))
627 (pass-if-exception "array-set! [value out-of-range]"
628 exception:out-of-range
629 (let ((bv (make-bytevector 2)))
630 (array-set! bv 256 0)))
632 (pass-if "array-type"
633 (eq? 'vu8 (array-type #vu8())))
635 (pass-if "array-contents"
636 (let ((bv (u8-list->bytevector (iota 10))))
637 (eq? bv (array-contents bv))))
640 (let ((bv (u8-list->bytevector (iota 10))))
642 (map (lambda (i) (array-ref bv i))
645 (pass-if "array-set!"
646 (let ((bv (make-bytevector 10)))
647 (for-each (lambda (i)
651 (bytevector->u8-list bv))))
653 (pass-if "make-typed-array"
654 (let ((bv (make-typed-array 'vu8 77 33)))
655 (equal? bv (u8-list->bytevector (make-list 33 77)))))
657 (pass-if-exception "make-typed-array [out-of-range]"
658 exception:out-of-range
659 (make-typed-array 'vu8 256 77)))
662 (with-test-prefix "uniform-array->bytevector"
664 (pass-if "bytevector"
665 (let ((bv #vu8(0 1 128 255)))
666 (equal? bv (uniform-array->bytevector bv))))
668 (pass-if "empty bitvector"
669 (let ((bv (uniform-array->bytevector (make-bitvector 0))))
672 (pass-if "bitvector < 8"
673 (let ((bv (uniform-array->bytevector (make-bitvector 4 #t))))
674 (= (bytevector-length bv) 4)))
676 (pass-if "bitvector == 8"
677 (let ((bv (uniform-array->bytevector (make-bitvector 8 #t))))
678 (= (bytevector-length bv) 4)))
680 (pass-if "bitvector > 8"
681 (let ((bv (uniform-array->bytevector (make-bitvector 9 #t))))
682 (= (bytevector-length bv) 4)))
684 (pass-if "bitvector == 32"
685 (let ((bv (uniform-array->bytevector (make-bitvector 32 #t))))
686 (= (bytevector-length bv) 4)))
688 (pass-if "bitvector > 32"
689 (let ((bv (uniform-array->bytevector (make-bitvector 33 #t))))
690 (= (bytevector-length bv) 8))))
693 ;;; eval: (put 'with-test-prefix/c&e 'scheme-indent-function 1)