source: trunk/source/tests/ansi-tests/bit-eqv.lsp @ 8991

Last change on this file since 8991 was 8991, checked in by gz, 11 years ago

Check in the gcl ansi test suite (original, in preparation for making local changes)

File size: 6.7 KB
Line 
1;-*- Mode:     Lisp -*-
2;;;; Author:   Paul Dietz
3;;;; Created:  Sun Jan 26 19:07:23 2003
4;;;; Contains: Tests of BIT-EQV
5
6
7(in-package :cl-test)
8
9(compile-and-load "bit-aux.lsp")
10
11(deftest bit-eqv.1
12  (let* ((s1 (make-array nil :initial-element 0 :element-type 'bit))
13         (s2 (make-array nil :initial-element 0 :element-type 'bit)))
14    (values (bit-eqv s1 s2) s1 s2))
15  #0a1
16  #0a0
17  #0a0)
18
19(deftest bit-eqv.2
20  (let* ((s1 (make-array nil :initial-element 1 :element-type 'bit))
21         (s2 (make-array nil :initial-element 0 :element-type 'bit)))
22    (values (bit-eqv s1 s2) s1 s2))
23  #0a0
24  #0a1
25  #0a0)
26
27(deftest bit-eqv.3
28  (let* ((s1 (make-array nil :initial-element 0 :element-type 'bit))
29         (s2 (make-array nil :initial-element 1 :element-type 'bit)))
30    (values (bit-eqv s1 s2) s1 s2))
31  #0a0
32  #0a0
33  #0a1)
34
35(deftest bit-eqv.4
36  (let* ((s1 (make-array nil :initial-element 1 :element-type 'bit))
37         (s2 (make-array nil :initial-element 1 :element-type 'bit)))
38    (values (bit-eqv s1 s2) s1 s2))
39  #0a1
40  #0a1
41  #0a1)
42
43(deftest bit-eqv.5
44  (let* ((s1 (make-array nil :initial-element 0 :element-type 'bit))
45         (s2 (make-array nil :initial-element 0 :element-type 'bit))
46         (s3 (make-array nil :initial-element 0 :element-type 'bit))
47         (result (bit-eqv s1 s2 s3)))
48    (values s1 s2 s3 result (eqt s3 result)))
49  #0a0
50  #0a0
51  #0a1
52  #0a1
53  t)
54
55(deftest bit-eqv.6
56  (let* ((s1 (make-array nil :initial-element 1 :element-type 'bit))
57         (s2 (make-array nil :initial-element 1 :element-type 'bit))
58         (s3 (make-array nil :initial-element 0 :element-type 'bit))
59         (result (bit-eqv s1 s2 s3)))
60    (values s1 s2 s3 result (eqt s3 result)))
61  #0a1
62  #0a1
63  #0a1
64  #0a1
65  t)
66
67(deftest bit-eqv.7
68  (let* ((s1 (make-array nil :initial-element 1 :element-type 'bit))
69         (s2 (make-array nil :initial-element 0 :element-type 'bit))
70         (result (bit-eqv s1 s2 t)))
71    (values s1 s2 result (eqt s1 result)))
72  #0a0
73  #0a0
74  #0a0
75  t)
76
77
78;;; Tests on bit vectors
79
80(deftest bit-eqv.8
81  (let ((a1 (copy-seq #*0011))
82        (a2 (copy-seq #*0101)))
83    (values (check-values (bit-eqv a1 a2)) a1 a2))
84  #*1001 #*0011 #*0101)
85
86(deftest bit-eqv.9
87  (let* ((a1 (copy-seq #*0011))
88         (a2 (copy-seq #*0101))
89         (result (check-values (bit-eqv a1 a2 t))))
90    (values result a1 a2 (eqt result a1)))
91  #*1001 #*1001 #*0101 t)
92
93(deftest bit-eqv.10
94  (let* ((a1 (copy-seq #*0011))
95         (a2 (copy-seq #*0101))
96         (a3 (copy-seq #*0000))
97         (result (check-values (bit-eqv a1 a2 a3))))
98    (values result a1 a2 a3 (eqt result a3)))
99  #*1001 #*0011 #*0101 #*1001 t)
100
101(deftest bit-eqv.11
102  (let ((a1 (copy-seq #*0011))
103        (a2 (copy-seq #*0101)))
104    (values (check-values (bit-eqv a1 a2 nil)) a1 a2))
105  #*1001 #*0011 #*0101)
106
107;;; Tests on bit arrays
108
109(deftest bit-eqv.12
110  (let* ((a1 (make-array '(2 2) :element-type 'bit
111                         :initial-contents '((0 1)(0 1))))
112         (a2 (make-array '(2 2) :element-type 'bit
113                         :initial-contents '((0 0)(1 1))))
114         (result (bit-eqv a1 a2)))
115    (values a1 a2 result))
116  #2a((0 1)(0 1))
117  #2a((0 0)(1 1))
118  #2a((1 0)(0 1)))
119
120(deftest bit-eqv.13
121  (let* ((a1 (make-array '(2 2) :element-type 'bit
122                         :initial-contents '((0 1)(0 1))))
123         (a2 (make-array '(2 2) :element-type 'bit
124                         :initial-contents '((0 0)(1 1))))
125         (result (bit-eqv a1 a2 t)))
126    (values a1 a2 result))
127  #2a((1 0)(0 1))
128  #2a((0 0)(1 1))
129  #2a((1 0)(0 1)))
130
131(deftest bit-eqv.14
132  (let* ((a1 (make-array '(2 2) :element-type 'bit
133                         :initial-contents '((0 1)(0 1))))
134         (a2 (make-array '(2 2) :element-type 'bit
135                         :initial-contents '((0 0)(1 1))))
136         (result (bit-eqv a1 a2 nil)))
137    (values a1 a2 result))
138  #2a((0 1)(0 1))
139  #2a((0 0)(1 1))
140  #2a((1 0)(0 1)))
141
142(deftest bit-eqv.15
143  (let* ((a1 (make-array '(2 2) :element-type 'bit
144                         :initial-contents '((0 1)(0 1))))
145         (a2 (make-array '(2 2) :element-type 'bit
146                         :initial-contents '((0 0)(1 1))))
147         (a3 (make-array '(2 2) :element-type 'bit
148                         :initial-contents '((0 0)(0 0))))
149         (result (bit-eqv a1 a2 a3)))
150    (values a1 a2 a3 result))
151  #2a((0 1)(0 1))
152  #2a((0 0)(1 1))
153  #2a((1 0)(0 1))
154  #2a((1 0)(0 1)))
155
156;;; Adjustable arrays
157
158(deftest bit-eqv.16
159  (let* ((a1 (make-array '(2 2) :element-type 'bit
160                         :initial-contents '((0 1)(0 1))
161                         :adjustable t))
162         (a2 (make-array '(2 2) :element-type 'bit
163                         :initial-contents '((0 0)(1 1))
164                         :adjustable t))
165         (result (bit-eqv a1 a2)))
166    (values a1 a2 result))
167  #2a((0 1)(0 1))
168  #2a((0 0)(1 1))
169  #2a((1 0)(0 1)))
170
171;;; Displaced arrays
172
173(deftest bit-eqv.17
174  (let* ((a0 (make-array '(8) :element-type 'bit
175                         :initial-contents '(0 1 0 1 0 0 1 1)))
176         (a1 (make-array '(2 2) :element-type 'bit
177                         :displaced-to a0
178                         :displaced-index-offset 0))
179         (a2 (make-array '(2 2) :element-type 'bit
180                         :displaced-to a0
181                         :displaced-index-offset 4))
182         (result (bit-eqv a1 a2)))
183    (values a0 a1 a2 result))
184  #*01010011
185  #2a((0 1)(0 1))
186  #2a((0 0)(1 1))
187  #2a((1 0)(0 1)))
188
189(deftest bit-eqv.18
190  (let* ((a0 (make-array '(8) :element-type 'bit
191                         :initial-contents '(0 1 0 1 0 0 1 1)))
192         (a1 (make-array '(2 2) :element-type 'bit
193                         :displaced-to a0
194                         :displaced-index-offset 0))
195         (a2 (make-array '(2 2) :element-type 'bit
196                         :displaced-to a0
197                         :displaced-index-offset 4))
198         (result (bit-eqv a1 a2 t)))
199    (values a0 a1 a2 result))
200  #*10010011
201  #2a((1 0)(0 1))
202  #2a((0 0)(1 1))
203  #2a((1 0)(0 1)))
204
205(deftest bit-eqv.19
206  (let* ((a0 (make-array '(12) :element-type 'bit
207                         :initial-contents '(0 1 0 1 0 0 1 1 1 1 1 0)))
208         (a1 (make-array '(2 2) :element-type 'bit
209                         :displaced-to a0
210                         :displaced-index-offset 0))
211         (a2 (make-array '(2 2) :element-type 'bit
212                         :displaced-to a0
213                         :displaced-index-offset 4))
214         (a3 (make-array '(2 2) :element-type 'bit
215                         :displaced-to a0
216                         :displaced-index-offset 8))
217         (result (bit-eqv a1 a2 a3)))
218    (values a0 a1 a2 result))
219  #*010100111001
220  #2a((0 1)(0 1))
221  #2a((0 0)(1 1))
222  #2a((1 0)(0 1)))
223
224(deftest bit-eqv.20
225  (macrolet ((%m (z) z)) (bit-eqv (expand-in-current-env (%m #*0011)) #*0101))
226  #*1001)
227
228(deftest bit-eqv.21
229  (macrolet ((%m (z) z)) (bit-eqv #*1010 (expand-in-current-env (%m #*1100))))
230  #*1001)
231
232(deftest bit-eqv.22
233  (macrolet ((%m (z) z)) (bit-eqv #*10100011 #*01101010
234                                  (expand-in-current-env (%m nil))))
235  #*00110110)
236
237(deftest bit-eqv.order.1
238  (let* ((s1 (make-array 1 :initial-element 0 :element-type 'bit))
239         (s2 (make-array 1 :initial-element 0 :element-type 'bit))
240         (x 0) y z)
241    (values
242     (bit-eqv (progn (setf y (incf x)) s1)
243              (progn (setf z (incf x)) s2))
244     x y z))
245  #*1 2 1 2)
246
247(def-fold-test bit-eqv.fold.1 (bit-eqv #*01101 #*10100))
248
249;;; Random tests
250
251(deftest bit-eqv.random.1
252  (bit-random-test-fn #'bit-eqv #'logeqv)
253  nil)
254
255;;; Error tests
256
257(deftest bit-eqv.error.1
258  (signals-error (bit-eqv) program-error)
259  t)
260
261(deftest bit-eqv.error.2
262  (signals-error (bit-eqv #*000) program-error)
263  t)
264
265(deftest bit-eqv.error.3
266  (signals-error (bit-eqv #*000 #*0100 nil nil)
267                 program-error)
268  t)
Note: See TracBrowser for help on using the repository browser.