[Python-checkins] python/dist/src/Lib/test test_descr.py,1.113.4.23,1.113.4.24

gvanrossum@users.sourceforge.net gvanrossum@users.sourceforge.net
Thu, 01 Aug 2002 12:04:14 -0700


Update of /cvsroot/python/python/dist/src/Lib/test
In directory usw-pr-cvs1:/tmp/cvs-serv9014/Lib/test

Modified Files:
      Tag: release22-maint
	test_descr.py 
Log Message:
Backport:

SF patch 588728 (Nathan Srebro).

The __delete__ method wrapper for descriptors was not supported

(I added a test, too.)


Index: test_descr.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_descr.py,v
retrieving revision 1.113.4.23
retrieving revision 1.113.4.24
diff -C2 -d -r1.113.4.23 -r1.113.4.24
*** test_descr.py	11 Jul 2002 18:40:12 -0000	1.113.4.23
--- test_descr.py	1 Aug 2002 19:03:41 -0000	1.113.4.24
***************
*** 1314,1324 ****
      class C(object):
          class computed_attribute(object):
!             def __init__(self, get, set=None):
                  self.__get = get
                  self.__set = set
              def __get__(self, obj, type=None):
                  return self.__get(obj)
              def __set__(self, obj, value):
                  return self.__set(obj, value)
          def __init__(self):
              self.__x = 0
--- 1314,1327 ----
      class C(object):
          class computed_attribute(object):
!             def __init__(self, get, set=None, delete=None):
                  self.__get = get
                  self.__set = set
+                 self.__delete = delete
              def __get__(self, obj, type=None):
                  return self.__get(obj)
              def __set__(self, obj, value):
                  return self.__set(obj, value)
+             def __delete__(self, obj):
+                 return self.__delete(obj)
          def __init__(self):
              self.__x = 0
***************
*** 1329,1333 ****
          def __set_x(self, x):
              self.__x = x
!         x = computed_attribute(__get_x, __set_x)
      a = C()
      vereq(a.x, 0)
--- 1332,1338 ----
          def __set_x(self, x):
              self.__x = x
!         def __delete_x(self):
!             del self.__x
!         x = computed_attribute(__get_x, __set_x, __delete_x)
      a = C()
      vereq(a.x, 0)
***************
*** 1336,1339 ****
--- 1341,1346 ----
      vereq(a.x, 10)
      vereq(a.x, 11)
+     del a.x
+     vereq(hasattr(a, 'x'), 0)
  
  def newslot():
***************
*** 1648,1653 ****
      C.x.__set__(a, 100)
      vereq(C.x.__get__(a), 100)
! ##    C.x.__set__(a)
! ##    verify(not hasattr(a, "x"))
  
      raw = C.__dict__['x']
--- 1655,1660 ----
      C.x.__set__(a, 100)
      vereq(C.x.__get__(a), 100)
!     C.x.__delete__(a)
!     verify(not hasattr(a, "x"))
  
      raw = C.__dict__['x']