source: trunk/source/tests/ansi-tests/subtypep-integer.lsp @ 8991

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

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

File size: 10.1 KB
Line 
1;-*- Mode:     Lisp -*-
2;;;; Author:   Paul Dietz
3;;;; Created:  Sat Feb 15 11:54:05 2003
4;;;; Contains: Tests for subtype relationships on integer types
5
6(in-package :cl-test)
7
8(compile-and-load "types-aux.lsp")
9
10(deftest subtypep.fixnum-or-bignum
11  (check-equivalence '(or fixnum bignum) 'integer)
12  nil)
13
14(deftest subtypep.fixnum.integer
15  (check-equivalence `(integer ,most-negative-fixnum ,most-positive-fixnum)
16                     'fixnum)
17  nil)
18
19(deftest subtypep.bignum.integer
20  (check-equivalence
21   `(or (integer * (,most-negative-fixnum))
22        (integer (,most-positive-fixnum) *))
23   'bignum)
24  nil)
25
26;;;;;;;
27
28(deftest subtypep.integer.1
29  (subtypep* '(integer 0 10) '(integer 0 20))
30  t t)
31
32(deftest subtypep.integer.2
33  (subtypep* '(integer 0 10) '(integer 0 (10)))
34  nil t)
35
36(deftest subtypep.integer.3
37  (subtypep* '(integer 10 100) 'integer)
38  t t)
39
40(deftest subtypep.integer.3a
41  (subtypep* '(integer 10 100) '(integer))
42  t t)
43
44(deftest subtypep.integer.3b
45  (subtypep* '(integer 10 100) '(integer *))
46  t t)
47
48(deftest subtypep.integer.3c
49  (subtypep* '(integer 10 100) '(integer * *))
50  t t)
51
52(deftest subtypep.integer.4
53  (subtypep* 'integer '(integer 10 100))
54  nil t)
55
56(deftest subtypep.integer.4a
57  (subtypep* '(integer) '(integer 10 100))
58  nil t)
59
60(deftest subtypep.integer.4b
61  (subtypep* '(integer *) '(integer 10 100))
62  nil t)
63
64(deftest subtypep.integer.4c
65  (subtypep* '(integer * *) '(integer 10 100))
66  nil t)
67
68(deftest subtypep.integer.5
69  (subtypep* '(integer 10 *) 'integer)
70  t t)
71
72(deftest subtypep.integer.5a
73  (subtypep* '(integer 10 *) '(integer))
74  t t)
75
76(deftest subtypep.integer.5b
77  (subtypep* '(integer 10 *) '(integer *))
78  t t)
79
80(deftest subtypep.integer.5c
81  (subtypep* '(integer 10 *) '(integer * *))
82  t t)
83
84(deftest subtypep.integer.6
85  (subtypep* 'integer '(integer 10 *))
86  nil t)
87
88(deftest subtypep.integer.6a
89  (subtypep* '(integer) '(integer 10 *))
90  nil t)
91
92(deftest subtypep.integer.6b
93  (subtypep* '(integer *) '(integer 10 *))
94  nil t)
95
96(deftest subtypep.integer.6c
97  (subtypep* '(integer * *) '(integer 10 *))
98  nil t)
99
100(deftest subtypep.integer.7
101  (subtypep* '(integer 10) 'integer)
102  t t)
103
104(deftest subtypep.integer.7a
105  (subtypep* '(integer 10) '(integer))
106  t t)
107
108(deftest subtypep.integer.7b
109  (subtypep* '(integer 10) '(integer *))
110  t t)
111
112(deftest subtypep.integer.7c
113  (subtypep* '(integer 10) '(integer * *))
114  t t)
115
116(deftest subtypep.integer.8
117  (subtypep* 'integer '(integer 10))
118  nil t)
119
120(deftest subtypep.integer.8a
121  (subtypep* '(integer) '(integer 10))
122  nil t)
123
124(deftest subtypep.integer.8b
125  (subtypep* '(integer *) '(integer 10))
126  nil t)
127
128(deftest subtypep.integer.8c
129  (subtypep* '(integer * *) '(integer 10))
130  nil t)
131
132(deftest subtypep.integer.9
133  (subtypep* '(integer * 10) 'integer)
134  t t)
135
136(deftest subtypep.integer.9a
137  (subtypep* '(integer * 10) '(integer))
138  t t)
139
140(deftest subtypep.integer.9b
141  (subtypep* '(integer * 10) '(integer *))
142  t t)
143
144(deftest subtypep.integer.9c
145  (subtypep* '(integer * 10) '(integer * *))
146  t t)
147
148(deftest subtypep.integer.10
149  (subtypep* 'integer '(integer * 10))
150  nil t)
151
152(deftest subtypep.integer.10a
153  (subtypep* '(integer) '(integer * 10))
154  nil t)
155
156(deftest subtypep.integer.10b
157  (subtypep* '(integer *) '(integer * 10))
158  nil t)
159
160(deftest subtypep.integer.10c
161  (subtypep* '(integer * *) '(integer * 10))
162  nil t)
163
164(deftest subtypep.integer.11
165  (subtypep* '(integer 10) '(integer 5))
166  t t)
167
168(deftest subtypep.integer.12
169  (subtypep* '(integer 5) '(integer 10))
170  nil t)
171
172(deftest subtypep.integer.13
173  (subtypep* '(integer 10 *) '(integer 5))
174  t t)
175
176(deftest subtypep.integer.14
177  (subtypep* '(integer 5) '(integer 10 *))
178  nil t)
179
180(deftest subtypep.integer.15
181  (subtypep* '(integer 10) '(integer 5 *))
182  t t)
183
184(deftest subtypep.integer.16
185  (subtypep* '(integer 5 *) '(integer 10))
186  nil t)
187
188(deftest subtypep.integer.17
189  (subtypep* '(integer 10 *) '(integer 5 *))
190  t t)
191
192(deftest subtypep.integer.18
193  (subtypep* '(integer 5 *) '(integer 10 *))
194  nil t)
195
196(deftest subtypep.integer.19
197  (subtypep* '(integer * 5) '(integer * 10))
198  t t)
199
200(deftest subtypep.integer.20
201  (subtypep* '(integer * 10) '(integer * 5))
202  nil t)
203
204(deftest subtypep.integer.21
205  (subtypep* '(integer 10 *) '(integer * 10))
206  nil t)
207
208(deftest subtypep.integer.22
209  (subtypep* '(integer * 10) '(integer 10 *))
210  nil t)
211
212(deftest subtypep.integer.23
213  (check-equivalence '(integer (9)) '(integer 10))
214  nil)
215
216(deftest subtypep.integer.24
217  (check-equivalence '(integer * (11)) '(integer * 10))
218  nil)
219
220(deftest subtypep.integer.25
221  (check-equivalence
222   '(and (or (integer 0 10) (integer 20 30))
223         (or (integer 5 15) (integer 25 35)))
224   '(or (integer 5 10) (integer 25 30)))
225  nil)
226
227(deftest subtypep.integer.26
228  (check-equivalence
229   '(and (integer 0 10) (integer 5 15))
230   '(integer 5 10))
231  nil)
232
233(deftest subtypep.integer.27
234  (check-equivalence
235   '(or (integer 0 10) (integer 5 15))
236   '(integer 0 15))
237  nil)
238
239(deftest subtypep.integer.28
240  (check-equivalence
241   '(and integer (not (eql 10)))
242   '(or (integer * 9) (integer 11 *)))
243  nil)
244
245(deftest subtypep.integer.29
246  (check-equivalence
247   '(and integer (not (integer 1 10)))
248   '(or (integer * 0) (integer 11 *)))
249  nil)
250
251(deftest subtypep.integer.30
252  (check-equivalence
253   '(and (integer -100 100) (not (integer 1 10)))
254   '(or (integer -100 0) (integer 11 100)))
255  nil)
256
257;;;  Relations between integer and real types
258
259(deftest subtypep.integer.real.1
260  (check-equivalence
261   '(and integer (real 4 10))
262   '(integer 4 10))
263  nil)
264
265(deftest subtypep.integer.real.2
266  (check-equivalence
267   '(and (integer 4 *) (real * 10))
268   '(integer 4 10))
269  nil)
270
271(deftest subtypep.integer.real.3
272  (check-equivalence
273   '(and (integer * 10) (real 4))
274   '(integer 4 10))
275  nil)
276
277(deftest subtypep.integer.real.4
278  (loop for int-type in '(integer (integer) (integer *) (integer * *))
279        append (loop for real-type in '(real (real) (real *) (real * *))
280                     unless (equal (multiple-value-list
281                                    (subtypep* int-type real-type))
282                                   '(t t))
283                     collect (list int-type real-type)))
284  nil)
285
286(deftest subtypep.integer.real.5
287  (loop for int-type in '((integer 10) (integer 10 *))
288        append (loop for real-type in '(real (real) (real *) (real * *)
289                                             (real 10.0) (real 10.0 *)
290                                             (real 10) (real 10 *))
291                     unless (equal (multiple-value-list
292                                    (subtypep* int-type real-type))
293                                   '(t t))
294                     collect (list int-type real-type)))
295  nil)
296
297(deftest subtypep.integer.real.6
298  (loop for int-type in '((integer * 10) (integer * 5))
299        append (loop for real-type in '(real (real) (real *) (real * *)
300                                             (real * 10.0)
301                                            (real * 10) (real * 1000000000000))
302                     unless (equal (multiple-value-list
303                                    (subtypep* int-type real-type))
304                                   '(t t))
305                     collect (list int-type real-type)))
306  nil)
307
308(deftest subtypep.integer.real.7
309  (loop for int-type in '((integer 0 10) (integer 2 5))
310        append (loop for real-type in '(real (real) (real *) (real * *)
311                                            (real * 10) (real * 1000000000000)
312                                            (real -10) (real -10.0)
313                                            (real -10 *) (real -10.0 *)
314                                            (real 0) (real 0.0)
315                                            (real 0 10) (real * 10)
316                                            (real 0 *) (real 0 10))
317                     unless (equal (multiple-value-list
318                                    (subtypep* int-type real-type))
319                                   '(t t))
320                     collect (list int-type real-type)))
321  nil)
322
323(deftest subtypep.integer.real.8
324  (check-equivalence
325   '(and (integer 4) (real * 10))
326   '(integer 4 10))
327  nil)
328
329(deftest subtypep.integer.real.9
330  (check-equivalence
331   '(and (integer * 10) (real 4))
332   '(integer 4 10))
333  nil)
334
335(deftest subtypep.integer.real.10
336  (check-equivalence
337   '(and (integer 4) (real * (10)))
338   '(integer 4 9))
339  nil)
340
341(deftest subtypep.integer.real.11
342  (check-equivalence
343   '(and (integer * 10) (real (4)))
344   '(integer 5 10))
345  nil)
346
347
348;;; Between integer and rational types
349
350(deftest subtypep.integer.rational.1
351  (check-equivalence
352   '(and integer (rational 4 10))
353   '(integer 4 10))
354  nil)
355
356(deftest subtypep.integer.rational.2
357  (check-equivalence
358   '(and (integer 4 *) (rational * 10))
359   '(integer 4 10))
360  nil)
361
362(deftest subtypep.integer.rational.3
363  (check-equivalence
364   '(and (integer * 10) (rational 4))
365   '(integer 4 10))
366  nil)
367
368
369
370(deftest subtypep.integer.rational.4
371  (loop for int-type in '(integer (integer) (integer *) (integer * *))
372        append (loop for rational-type
373                     in '(rational (rational) (rational *) (rational * *))
374                     unless (equal (multiple-value-list
375                                    (subtypep* int-type rational-type))
376                                   '(t t))
377                     collect (list int-type rational-type)))
378  nil)
379
380(deftest subtypep.integer.rational.5
381  (loop for int-type in '((integer 10) (integer 10 *))
382        append (loop for rational-type
383                     in '(rational (rational) (rational *) (rational * *)
384                                   (rational 19/2) (rational 19/2 *)
385                                   (rational 10) (rational 10 *))
386                     unless (equal (multiple-value-list
387                                    (subtypep* int-type rational-type))
388                                   '(t t))
389                     collect (list int-type rational-type)))
390  nil)
391
392(deftest subtypep.integer.rational.6
393  (loop for int-type in '((integer * 10) (integer * 5))
394        append (loop for rational-type
395                     in '(rational (rational) (rational *) (rational * *)
396                                   (rational * 21/2)
397                                   (rational * 10) (rational * 1000000000000))
398                     unless (equal (multiple-value-list
399                                    (subtypep* int-type rational-type))
400                                   '(t t))
401                     collect (list int-type rational-type)))
402  nil)
403
404(deftest subtypep.integer.rational.7
405  (loop for int-type in '((integer 0 10) (integer 2 5))
406        append (loop for rational-type in
407                     '(rational (rational) (rational *) (rational * *)
408                                (rational * 10) (rational * 1000000000000)
409                                (rational -1) (rational -1/2)
410                                (rational -1 *) (rational -1/2 *)
411                                (rational 0)
412                                (rational 0 10) (rational * 10)
413                                (rational 0 *) (rational 0 10))
414                     unless (equal (multiple-value-list
415                                    (subtypep* int-type rational-type))
416                                   '(t t))
417                     collect (list int-type rational-type)))
418  nil)
419
420(deftest subtypep.integer.rational.8
421  (check-equivalence
422   '(and integer (rational (4) 10))
423   '(integer 5 10))
424  nil)
425
426(deftest subtypep.integer.rational.9
427  (check-equivalence
428   '(and (integer 4 *) (rational * (10)))
429   '(integer 4 9))
430  nil)
431
432(deftest subtypep.integer.rational.10
433  (check-equivalence
434   '(and (integer * 10) (rational (4)))
435   '(integer 5 10))
436  nil)
Note: See TracBrowser for help on using the repository browser.