2
;;;; Author: Paul Dietz
3
;;;; Created: Sun Jan 26 19:07:23 2003
4
;;;; Contains: Tests of BIT-EQV
10
(let* ((s1 (make-array nil :initial-element 0 :element-type 'bit))
11
(s2 (make-array nil :initial-element 0 :element-type 'bit)))
12
(values (bit-eqv s1 s2) s1 s2))
18
(let* ((s1 (make-array nil :initial-element 1 :element-type 'bit))
19
(s2 (make-array nil :initial-element 0 :element-type 'bit)))
20
(values (bit-eqv s1 s2) s1 s2))
26
(let* ((s1 (make-array nil :initial-element 0 :element-type 'bit))
27
(s2 (make-array nil :initial-element 1 :element-type 'bit)))
28
(values (bit-eqv s1 s2) s1 s2))
34
(let* ((s1 (make-array nil :initial-element 1 :element-type 'bit))
35
(s2 (make-array nil :initial-element 1 :element-type 'bit)))
36
(values (bit-eqv s1 s2) s1 s2))
42
(let* ((s1 (make-array nil :initial-element 0 :element-type 'bit))
43
(s2 (make-array nil :initial-element 0 :element-type 'bit))
44
(s3 (make-array nil :initial-element 0 :element-type 'bit))
45
(result (bit-eqv s1 s2 s3)))
46
(values s1 s2 s3 result (eqt s3 result)))
54
(let* ((s1 (make-array nil :initial-element 1 :element-type 'bit))
55
(s2 (make-array nil :initial-element 1 :element-type 'bit))
56
(s3 (make-array nil :initial-element 0 :element-type 'bit))
57
(result (bit-eqv s1 s2 s3)))
58
(values s1 s2 s3 result (eqt s3 result)))
66
(let* ((s1 (make-array nil :initial-element 1 :element-type 'bit))
67
(s2 (make-array nil :initial-element 0 :element-type 'bit))
68
(result (bit-eqv s1 s2 t)))
69
(values s1 s2 result (eqt s1 result)))
76
;;; Tests on bit vectors
79
(let ((a1 (copy-seq #*0011))
80
(a2 (copy-seq #*0101)))
81
(values (check-values (bit-eqv a1 a2)) a1 a2))
85
(let* ((a1 (copy-seq #*0011))
86
(a2 (copy-seq #*0101))
87
(result (check-values (bit-eqv a1 a2 t))))
88
(values result a1 a2 (eqt result a1)))
89
#*1001 #*1001 #*0101 t)
92
(let* ((a1 (copy-seq #*0011))
93
(a2 (copy-seq #*0101))
94
(a3 (copy-seq #*0000))
95
(result (check-values (bit-eqv a1 a2 a3))))
96
(values result a1 a2 a3 (eqt result a3)))
97
#*1001 #*0011 #*0101 #*1001 t)
100
(let ((a1 (copy-seq #*0011))
101
(a2 (copy-seq #*0101)))
102
(values (check-values (bit-eqv a1 a2 nil)) a1 a2))
103
#*1001 #*0011 #*0101)
105
;;; Tests on bit arrays
108
(let* ((a1 (make-array '(2 2) :element-type 'bit
109
:initial-contents '((0 1)(0 1))))
110
(a2 (make-array '(2 2) :element-type 'bit
111
:initial-contents '((0 0)(1 1))))
112
(result (bit-eqv a1 a2)))
113
(values a1 a2 result))
119
(let* ((a1 (make-array '(2 2) :element-type 'bit
120
:initial-contents '((0 1)(0 1))))
121
(a2 (make-array '(2 2) :element-type 'bit
122
:initial-contents '((0 0)(1 1))))
123
(result (bit-eqv a1 a2 t)))
124
(values a1 a2 result))
130
(let* ((a1 (make-array '(2 2) :element-type 'bit
131
:initial-contents '((0 1)(0 1))))
132
(a2 (make-array '(2 2) :element-type 'bit
133
:initial-contents '((0 0)(1 1))))
134
(result (bit-eqv a1 a2 nil)))
135
(values a1 a2 result))
141
(let* ((a1 (make-array '(2 2) :element-type 'bit
142
:initial-contents '((0 1)(0 1))))
143
(a2 (make-array '(2 2) :element-type 'bit
144
:initial-contents '((0 0)(1 1))))
145
(a3 (make-array '(2 2) :element-type 'bit
146
:initial-contents '((0 0)(0 0))))
147
(result (bit-eqv a1 a2 a3)))
148
(values a1 a2 a3 result))
154
;;; Adjustable arrays
157
(let* ((a1 (make-array '(2 2) :element-type 'bit
158
:initial-contents '((0 1)(0 1))
160
(a2 (make-array '(2 2) :element-type 'bit
161
:initial-contents '((0 0)(1 1))
163
(result (bit-eqv a1 a2)))
164
(values a1 a2 result))
172
(let* ((a0 (make-array '(8) :element-type 'bit
173
:initial-contents '(0 1 0 1 0 0 1 1)))
174
(a1 (make-array '(2 2) :element-type 'bit
176
:displaced-index-offset 0))
177
(a2 (make-array '(2 2) :element-type 'bit
179
:displaced-index-offset 4))
180
(result (bit-eqv a1 a2)))
181
(values a0 a1 a2 result))
188
(let* ((a0 (make-array '(8) :element-type 'bit
189
:initial-contents '(0 1 0 1 0 0 1 1)))
190
(a1 (make-array '(2 2) :element-type 'bit
192
:displaced-index-offset 0))
193
(a2 (make-array '(2 2) :element-type 'bit
195
:displaced-index-offset 4))
196
(result (bit-eqv a1 a2 t)))
197
(values a0 a1 a2 result))
204
(let* ((a0 (make-array '(12) :element-type 'bit
205
:initial-contents '(0 1 0 1 0 0 1 1 1 1 1 0)))
206
(a1 (make-array '(2 2) :element-type 'bit
208
:displaced-index-offset 0))
209
(a2 (make-array '(2 2) :element-type 'bit
211
:displaced-index-offset 4))
212
(a3 (make-array '(2 2) :element-type 'bit
214
:displaced-index-offset 8))
215
(result (bit-eqv a1 a2 a3)))
216
(values a0 a1 a2 result))
222
(deftest bit-eqv.order.1
223
(let* ((s1 (make-array 1 :initial-element 0 :element-type 'bit))
224
(s2 (make-array 1 :initial-element 0 :element-type 'bit))
227
(bit-eqv (progn (setf y (incf x)) s1)
228
(progn (setf z (incf x)) s2))
234
(deftest bit-eqv.error.1
235
(signals-error (bit-eqv) program-error)
238
(deftest bit-eqv.error.2
239
(signals-error (bit-eqv #*000) program-error)
242
(deftest bit-eqv.error.3
243
(signals-error (bit-eqv #*000 #*0100 nil nil)