diff options
author | Guido van Rossum <guido@python.org> | 2001-08-17 21:27:53 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2001-08-17 21:27:53 (GMT) |
commit | 65d5d7fac6b83b3ab4516cb8a4ae9698b3e5f186 (patch) | |
tree | c6e97877f6fc4fa67594012a098f9d26bdc4d93d /Lib/test/test_descr.py | |
parent | f86ddd2971bfba34483ecce2b6e434a58b56ff93 (diff) | |
download | cpython-65d5d7fac6b83b3ab4516cb8a4ae9698b3e5f186.zip cpython-65d5d7fac6b83b3ab4516cb8a4ae9698b3e5f186.tar.gz cpython-65d5d7fac6b83b3ab4516cb8a4ae9698b3e5f186.tar.bz2 |
Add test for weak references.
Diffstat (limited to 'Lib/test/test_descr.py')
-rw-r--r-- | Lib/test/test_descr.py | 36 |
1 files changed, 33 insertions, 3 deletions
diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py index 361af58..b26f165 100644 --- a/Lib/test/test_descr.py +++ b/Lib/test/test_descr.py @@ -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() |