source: trunk/abcl/t/byte-vectors.lisp

Last change on this file was 15382, checked in by Mark Evenson, 4 years ago

Test usage of :NIO-BUFFER keyword in CL:MAKE-ARRAY

File size: 3.9 KB
Line 
1(in-package :cl-user)
2
3(let ((element-bits '(8 16 32))
4      (length 16))
5  (prove:plan (* (length element-bits) 3))
6  (dolist (bits element-bits)
7    (let* ((type
8             `(unsigned-byte ,bits))
9           (exclusive-max
10             (expt 2 bits))
11           (max
12             (1- exclusive-max)))
13      (prove:ok
14       (let ((array (make-array length :element-type type :initial-element max)))
15         (typep (aref array 0) type))
16       (format nil "Able to make (SIMPLE-ARRAY ~a (~a)) filled with maximum value ~a"
17               type length max))
18      (prove:is-condition 
19       (let ((array (make-array length :element-type type :initial-element -1)))
20         (typep (aref array 0) type))
21       'type-error
22       (format nil "Making a (SIMPLE-ARRAY ~a (~a)) filled with -1 signals a type-error" 
23               type length))
24      (prove:is-condition 
25       (let ((array (make-array 16 :element-type type :initial-element exclusive-max)))
26         (typep (aref array 0) type))
27       'type-error
28       (format nil "Making a (SIMPLE-ARRAY ~a (~a)) filled with ~a signals a type-error" 
29               type length exclusive-max)))))
30
31;; pfdietz
32(prove:plan 1)
33(prove:ok
34 (handler-case
35     (stable-sort (make-array '(0)) '<)
36   (t (e) nil))
37 "Able to STABLE-SORT an empty vector.")
38
39;; nibbles failures
40
41
42(let* ((unspecialized
43         #(2025373960 3099658457 3238582529 148439321
44           3099658456 3238582528 3000000000 1000000000
45           2000000000 2900000000 2400000000 2800000000
46           0 1))
47       (array 
48         (make-array (length unspecialized)
49                     :element-type '(unsigned-byte 32) 
50                     :initial-contents unspecialized)))
51  (prove:plan (length array))
52  (loop :for i :below (length array)
53        :doing
54           (let ((x0
55                   (elt unspecialized i))
56                 (x1
57                   (elt array i)))
58           (prove:ok
59            (equal x0 x1)
60            (format nil "~a: ~a equals ~a" i x0 x1)))))
61
62;;;; test :nio-buffer argument
63(prove:plan 1)
64(let*
65    ((original
66       (make-array 4 :element-type '(unsigned-byte 8)
67                   :initial-contents '(0 255 128 127)))
68     (java-array
69       (jnew-array-from-array "byte" original))
70     (nio-buffer
71       (#"allocate" 'java.nio.ByteBuffer
72                    (jarray-length java-array))))
73  (#"put" nio-buffer java-array)
74  (let ((result
75          (make-array 4 :element-type '(unsigned-byte 8)
76                        :nio-buffer nio-buffer)))
77    (prove:ok
78     (equalp original result)
79     (format nil "Creating an (unsigned-byte 8) array from nio-buffer where~%~2t~a EQUALP ~a" result result))))
80
81(prove:plan 1)
82(let*
83    ((original
84       (make-array 4 :element-type '(unsigned-byte 16)
85                   :initial-contents `(0 ,(1- (expt 2 16)) 128 127)))
86     (java-array
87       (jnew-array-from-array "char" original))
88     (nio-buffer
89       (#"allocate" 'java.nio.CharBuffer
90                    (jarray-length java-array))))
91  (#"put" nio-buffer java-array)
92  (let ((result
93          (make-array 4 :element-type '(unsigned-byte 16)
94                        :nio-buffer nio-buffer)))
95    (prove:ok
96     (equalp original result)
97     (format nil "Creating an (unsigned-byte 16) array from nio-buffer where~%~2t~a EQUALP ~a" result result))))
98
99(prove:plan 1)
100(let*
101    ((original
102       (make-array 4 :element-type '(unsigned-byte 32)
103                   :initial-contents `(0 ,(1- (expt 2 32)) 128 127)))
104     (java-array
105       (jnew-array-from-array "int" original))
106     (nio-buffer
107       (#"allocate" 'java.nio.IntBuffer
108                    (jarray-length java-array))))
109  (#"put" nio-buffer java-array)
110  (let ((result
111          (make-array 4 :element-type '(unsigned-byte 32)
112                        :nio-buffer nio-buffer)))
113    (prove:ok
114     (equalp original result)
115     (format nil "Creating an (unsigned-byte 8) array from nio-buffer where~%~2t~a EQUALP ~a" result result))))
116
117(prove:finalize)
118
Note: See TracBrowser for help on using the repository browser.