~ubuntu-branches/ubuntu/quantal/gclcvs/quantal

« back to all changes in this revision

Viewing changes to ansi-tests/defclass-forward-reference.lsp

  • Committer: Bazaar Package Importer
  • Author(s): Camm Maguire
  • Date: 2004-06-24 15:13:46 UTC
  • Revision ID: james.westby@ubuntu.com-20040624151346-xh0xaaktyyp7aorc
Tags: 2.7.0-26
C_GC_OFFSET is 2 on m68k-linux

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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)