[Python-checkins] python/dist/src/Lib/test test_descr.py,1.113.4.16,1.113.4.17

gvanrossum@users.sourceforge.net gvanrossum@users.sourceforge.net
Thu, 06 Jun 2002 10:55:38 -0700


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

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

Fix from SF patch 565085: copy._reduction doesn't __setstate__.
Straightforward fix.


Index: test_descr.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_descr.py,v
retrieving revision 1.113.4.16
retrieving revision 1.113.4.17
diff -C2 -d -r1.113.4.16 -r1.113.4.17
*** test_descr.py	4 Jun 2002 21:19:55 -0000	1.113.4.16
--- test_descr.py	6 Jun 2002 17:55:35 -0000	1.113.4.17
***************
*** 2932,2935 ****
--- 2932,2963 ----
      vereq(y, (x, "foo"))
  
+ def copy_setstate():
+     if verbose:
+         print "Testing that copy.*copy() correctly uses __setstate__..."
+     import copy
+     class C(object):
+         def __init__(self, foo=None):
+             self.foo = foo
+             self.__foo = foo
+         def setfoo(self, foo=None):
+             self.foo = foo
+         def getfoo(self):
+             return self.__foo
+         def __getstate__(self):
+             return [self.foo]
+         def __setstate__(self, lst):
+             assert len(lst) == 1
+             self.__foo = self.foo = lst[0]
+     a = C(42)
+     a.setfoo(24)
+     vereq(a.foo, 24)
+     vereq(a.getfoo(), 42)
+     b = copy.copy(a)
+     vereq(b.foo, 24)
+     vereq(b.getfoo(), 24)
+     b = copy.deepcopy(a)
+     vereq(b.foo, 24)
+     vereq(b.getfoo(), 24)
+ 
  def test_main():
      class_docstrings()
***************
*** 2991,2994 ****
--- 3019,3023 ----
      docdescriptor()
      imulbug()
+     copy_setstate()
      if verbose: print "All OK"