[Python-checkins] CVS: python/dist/src/Lib/test test_descr.py,1.1.2.34,1.1.2.35
Guido van Rossum
gvanrossum@users.sourceforge.net
Thu, 19 Jul 2001 09:25:29 -0700
Update of /cvsroot/python/python/dist/src/Lib/test
In directory usw-pr-cvs1:/tmp/cvs-serv7362
Modified Files:
Tag: descr-branch
test_descr.py
Log Message:
Add a test that checks some fundamental operator overloadings:
getattr, getitem, getslice, and their set- and del- siblings.
Index: test_descr.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/Attic/test_descr.py,v
retrieving revision 1.1.2.34
retrieving revision 1.1.2.35
diff -C2 -r1.1.2.34 -r1.1.2.35
*** test_descr.py 2001/07/14 01:38:56 1.1.2.34
--- test_descr.py 2001/07/19 16:25:27 1.1.2.35
***************
*** 743,746 ****
--- 743,803 ----
verify(X().f() == "A")
+ def overloading():
+ if verbose: print "testing operator overloading..."
+
+ class B(object):
+ "Intermediate class because object doesn't have a __setattr__"
+
+ class C(B):
+
+ def __getattr__(self, name):
+ if name == "foo":
+ return ("getattr", name)
+ else:
+ return B.__getattr__(self, name)
+ def __setattr__(self, name, value):
+ if name == "foo":
+ self.setattr = (name, value)
+ else:
+ return B.__setattr__(self, name, value)
+ def __delattr__(self, name):
+ if name == "foo":
+ self.delattr = name
+ else:
+ return B.__delattr__(self, name)
+
+ def __getitem__(self, key):
+ return ("getitem", key)
+ def __setitem__(self, key, value):
+ self.setitem = (key, value)
+ def __delitem__(self, key):
+ self.delitem = key
+
+ def __getslice__(self, i, j):
+ return ("getslice", i, j)
+ def __setslice__(self, i, j, value):
+ self.setslice = (i, j, value)
+ def __delslice__(self, i, j):
+ self.delslice = (i, j)
+
+ a = C()
+ verify(a.foo == ("getattr", "foo"))
+ a.foo = 12
+ verify(a.setattr == ("foo", 12))
+ del a.foo
+ verify(a.delattr == "foo")
+
+ verify(a[12] == ("getitem", 12))
+ a[12] = 21
+ verify(a.setitem == (12, 21))
+ del a[12]
+ verify(a.delitem == 12)
+
+ verify(a[0:10] == ("getslice", 0, 10))
+ a[0:10] = "foo"
+ verify(a.setslice == (0, 10, "foo"))
+ del a[0:10]
+ verify(a.delslice == (0, 10))
+
def all():
lists()
***************
*** 768,771 ****
--- 825,829 ----
newslot()
altmro()
+ overloading()
all()