source: trunk/source/tests/ansi-tests/defclass-forward-reference.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: 3.6 KB
RevLine 
[8991]1;-*- Mode:     Lisp -*-
2;;;; Author:   Paul Dietz
3;;;; Created:  Wed Apr  2 22:53:27 2003
4;;;; Contains: Tests for definitions of classes with forward references
5
6(in-package :cl-test)
7
8(deftest defclass.forward-ref.1
9  (let ((c1 (gensym))
10        (c2 (gensym)))
11    (let ((class1 (eval `(defclass ,c1 (,c2) nil))))
12      (if (not (typep class1 'class))
13          1
14        (let ((class2 (eval `(defclass ,c2 nil nil))))
15          (if (not (typep class2 'class))
16              2
17            (let ((i1 (make-instance c1))
18                  (i2 (make-instance c2)))
19              (cond
20               ((not (typep i1 c1))     3)
21               ((not (typep i1 class1)) 4)
22               ((not (typep i1 c2))     5)
23               ((not (typep i1 class2)) 6)
24               ((typep i2 c1)           7)
25               ((typep i2 class1)       8)
26               ((not (typep i2 c2))     9)
27               ((not (typep i2 class2)) 10)
28               (t 'good))))))))
29  good)
30
31(deftest defclass.forward-ref.2
32  (let ((c1 (gensym))
33        (c2 (gensym))
34        (c3 (gensym)))
35    (let ((class1 (eval `(defclass ,c1 (,c2 ,c3) nil))))
36      (if (not (typep class1 'class))
37          1
38        (let ((class2 (eval `(defclass ,c2 nil nil))))
39          (if (not (typep class2 'class))
40              2
41            (let ((class3 (eval `(defclass ,c3 nil nil))))
42              (if (not (typep class3 'class))
43                  3
44                (let ((i1 (make-instance c1))
45                      (i2 (make-instance c2))
46                      (i3 (make-instance c3)))
47                  (cond
48                   ((not (typep i1 c1))     4)
49                   ((not (typep i1 class1)) 5)
50                   ((not (typep i1 c2))     6)
51                   ((not (typep i1 class2)) 7)
52                   ((not (typep i1 c3))     8)
53                   ((not (typep i1 class3)) 9)
54                   ((typep i2 c1)           10)
55                   ((typep i2 class1)       11)
56                   ((typep i3 c1)           12)
57                   ((typep i3 class1)       13)
58                   ((not (typep i2 c2))     14)
59                   ((not (typep i2 class2)) 15)
60                   ((not (typep i3 c3))     16)
61                   ((not (typep i3 class3)) 17)
62                   ((typep i2 c3)           18)
63                   ((typep i2 class3)       19)
64                   ((typep i3 c2)           20)
65                   ((typep i3 class2)       21)
66                   (t 'good))))))))))
67  good)
68
69(deftest defclass.forward-ref.3
70  (let ((c1 (gensym))
71        (c2 (gensym))
72        (c3 (gensym)))
73    (let ((class1 (eval `(defclass ,c1 (,c2) nil))))
74      (if (not (typep class1 'class))
75          1
76        (let ((class2 (eval `(defclass ,c2 (,c3) nil))))
77          (if (not (typep class2 'class))
78              2
79            (let ((class3 (eval `(defclass ,c3 nil nil))))
80              (if (not (typep class3 'class))
81                  3
82                (let ((i1 (make-instance c1))
83                      (i2 (make-instance c2))
84                      (i3 (make-instance c3)))
85                  (cond
86                   ((not (typep i1 c1))     4)
87                   ((not (typep i1 class1)) 5)
88                   ((not (typep i1 c2))     6)
89                   ((not (typep i1 class2)) 7)
90                   ((not (typep i1 c3))     8)
91                   ((not (typep i1 class3)) 9)
92                   ((typep i2 c1)           10)
93                   ((typep i2 class1)       11)
94                   ((typep i3 c1)           12)
95                   ((typep i3 class1)       13)
96                   ((not (typep i2 c2))     14)
97                   ((not (typep i2 class2)) 15)
98                   ((not (typep i3 c3))     16)
99                   ((not (typep i3 class3)) 17)
100                   ((not (typep i2 c3))     18)
101                   ((not (typep i2 class3)) 19)
102                   ((typep i3 c2)           20)
103                   ((typep i3 class2)       21)
104                   (t 'good))))))))))
105  good)
106
107(deftest defclass.forward-ref.4
108  (block nil
109    (let ((c1 (gensym))
110          (c2 (gensym))
111          (c3 (gensym))
112          (c4 (gensym))
113          (c5 (gensym)))
114      (unless (typep (eval `(defclass ,c4 nil nil)) 'class)
115        (return 1))
116      (unless (typep (eval `(defclass ,c5 nil nil)) 'class)
117        (return 2))
118      (unless (typep (eval `(defclass ,c1 (,c2 ,c3) nil)) 'class)
119        (return 3))
120      (unless (typep (eval `(defclass ,c2 (,c4 ,c5) nil)) 'class)
121        (return 4))
122      (handler-case
123       (eval `(progn
124                (defclass ,c3 (,c5 ,c4) nil)
125                (make-instance ',c1)))
126       (error () :good))))
127  :good)
Note: See TracBrowser for help on using the repository browser.