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