Commit 25d72dc4 authored by Guido van Rossum's avatar Guido van Rossum

Add test for weak references.

parent dda0e551
...@@ -833,7 +833,7 @@ def altmro(): ...@@ -833,7 +833,7 @@ def altmro():
verify(X().f() == "A") verify(X().f() == "A")
def overloading(): def overloading():
if verbose: print "testing operator overloading..." if verbose: print "Testing operator overloading..."
class B(object): class B(object):
"Intermediate class because object doesn't have a __setattr__" "Intermediate class because object doesn't have a __setattr__"
...@@ -890,7 +890,7 @@ def overloading(): ...@@ -890,7 +890,7 @@ def overloading():
verify(a.delslice == (0, 10)) verify(a.delslice == (0, 10))
def methods(): def methods():
if verbose: print "testing methods..." if verbose: print "Testing methods..."
class C(object): class C(object):
def __init__(self, x): def __init__(self, x):
self.x = x self.x = x
...@@ -912,7 +912,7 @@ def methods(): ...@@ -912,7 +912,7 @@ def methods():
def specials(): def specials():
# Test operators like __hash__ for which a built-in default exists # 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 # Test the default behavior for static classes
class C(object): class C(object):
def __getitem__(self, i): def __getitem__(self, i):
...@@ -1040,6 +1040,35 @@ def specials(): ...@@ -1040,6 +1040,35 @@ def specials():
verify(i in p10) verify(i in p10)
verify(10 not 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(): def all():
lists() lists()
dicts() dicts()
...@@ -1068,6 +1097,7 @@ def all(): ...@@ -1068,6 +1097,7 @@ def all():
overloading() overloading()
methods() methods()
specials() specials()
weakrefs()
all() all()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment