11
cdef void add_name(obj):
12
name = type(obj).__name__.rsplit('.', 1)[-1]
13
test_results.append(name)
16
def find_name(exttype):
17
name = exttype.__name__.rsplit('.', 1)[-1]
18
return test_results.count(name)
21
cdef class ExtTypeSimple:
23
>>> obj = ExtTypeSimple()
24
>>> find_name(ExtTypeSimple)
28
>>> find_name(ExtTypeSimple)
32
def __dealloc__(self):
37
class PySubTypeSimple(ExtTypeSimple):
39
>>> obj = PySubTypeSimple()
40
>>> find_name(PySubTypeSimple)
44
>>> find_name(PySubTypeSimple)
49
class PySubTypeDel(ExtTypeSimple):
51
>>> obj = PySubTypeDel()
52
>>> find_name(PySubTypeDel)
56
>>> find_name(PySubTypeDel)
63
cdef class ExtSubTypeObjAttr(ExtTypeSimple):
65
>>> obj = ExtSubTypeObjAttr()
66
>>> find_name(ExtSubTypeObjAttr)
71
# both this type and the base class add the same name
72
>>> find_name(ExtSubTypeObjAttr)
76
def __dealloc__(self):
81
cdef class ExtTypeRaise:
83
>>> obj = ExtTypeRaise()
84
>>> find_name(ExtTypeRaise)
88
>>> find_name(ExtTypeRaise)
91
def __dealloc__(self):
93
raise RuntimeError("HUHU !")
96
class PySubTypeRaise(ExtTypeRaise):
98
>>> obj = PySubTypeRaise()
100
>>> find_name(PySubTypeRaise)
104
>>> find_name(PySubTypeRaise)
109
cdef class ExtTypeRefCycle:
111
>>> obj = ExtTypeRefCycle()
113
>>> find_name(ExtTypeRefCycle)
117
>>> find_name(ExtTypeRefCycle)
120
cdef public object ref
122
def __dealloc__(self):
127
class PySubTypeRefCycleDel(ExtTypeRefCycle):
129
>>> obj = PySubTypeRefCycleDel()
131
>>> find_name(PySubTypeRefCycleDel)
136
>>> find_name(PySubTypeRefCycleDel)
143
cdef class ExtTypeRefCycleRaise:
145
>>> obj = ExtTypeRefCycleRaise()
147
>>> find_name(ExtTypeRefCycleRaise)
151
>>> find_name(ExtTypeRefCycleRaise)
154
cdef public object ref
155
def __dealloc__(self):
157
raise RuntimeError("Cleaning up !")
160
class PySubTypeRefCycleRaise(ExtTypeRefCycleRaise):
162
>>> obj = PySubTypeRefCycleRaise()
164
>>> find_name(PySubTypeRefCycleRaise)
168
>>> find_name(PySubTypeRefCycleRaise)