Add test for weak references.

This commit is contained in:
Guido van Rossum 2001-08-17 21:27:53 +00:00
parent f86ddd2971
commit 65d5d7fac6
1 changed files with 33 additions and 3 deletions

View File

@ -833,7 +833,7 @@ def altmro():
verify(X().f() == "A")
def overloading():
if verbose: print "testing operator overloading..."
if verbose: print "Testing operator overloading..."
class B(object):
"Intermediate class because object doesn't have a __setattr__"
@ -890,7 +890,7 @@ def overloading():
verify(a.delslice == (0, 10))
def methods():
if verbose: print "testing methods..."
if verbose: print "Testing methods..."
class C(object):
def __init__(self, x):
self.x = x
@ -912,7 +912,7 @@ def methods():
def specials():
# Test operators like __hash__ for which a built-in default exists
if verbose: print "testing special operators..."
if verbose: print "Testing special operators..."
# Test the default behavior for static classes
class C(object):
def __getitem__(self, i):
@ -1040,6 +1040,35 @@ def specials():
verify(i in p10)
verify(10 not in p10)
def weakrefs():
if verbose: print "Testing weak references..."
import weakref
class C(object):
pass
c = C()
r = weakref.ref(c)
verify(r() is c)
del c
verify(r() is None)
del r
class NoWeak(object):
__slots__ = ['foo']
no = NoWeak()
try:
weakref.ref(no)
except TypeError, msg:
verify(str(msg).find("weakly") >= 0)
else:
verify(0, "weakref.ref(no) should be illegal")
class Weak(object):
__slots__ = ['foo', '__weakref__']
yes = Weak()
r = weakref.ref(yes)
verify(r() is yes)
del yes
verify(r() is None)
del r
def all():
lists()
dicts()
@ -1068,6 +1097,7 @@ def all():
overloading()
methods()
specials()
weakrefs()
all()