[Python-checkins] python/dist/src/Lib/test pickletester.py,1.24,1.25

gvanrossum@users.sourceforge.net gvanrossum@users.sourceforge.net
Tue, 28 Jan 2003 09:55:09 -0800


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

Modified Files:
	pickletester.py 
Log Message:
Some experimental support for generating NEWOBJ with proto=2, and
fixed a bug in load_newobj().


Index: pickletester.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/pickletester.py,v
retrieving revision 1.24
retrieving revision 1.25
diff -C2 -d -r1.24 -r1.25
*** pickletester.py	28 Jan 2003 04:25:27 -0000	1.24
--- pickletester.py	28 Jan 2003 17:55:05 -0000	1.25
***************
*** 301,304 ****
--- 301,343 ----
                  self.assert_(x is y, (proto, x, s, y))
  
+     def test_newobj_tuple(self):
+         x = MyTuple([1, 2, 3], foo=42, bar="hello")
+         s = self.dumps(x, 2)
+         y = self.loads(s)
+         self.assertEqual(tuple(x), tuple(y))
+         self.assertEqual(x.__dict__, y.__dict__)
+ 
+     def test_newobj_list(self):
+         x = MyList([1, 2, 3], foo=42, bar="hello")
+         s = self.dumps(x, 2)
+         y = self.loads(s)
+         self.assertEqual(list(x), list(y))
+         self.assertEqual(x.__dict__, y.__dict__)
+ 
+ class MyTuple(tuple):
+     def __new__(cls, *args, **kwds):
+         # Ignore **kwds
+         return tuple.__new__(cls, *args)
+     def __getnewargs__(self):
+         return (tuple(self),)
+     def __init__(self, *args, **kwds):
+         for k, v in kwds.items():
+             setattr(self, k, v)
+ 
+ class MyList(list):
+     def __new__(cls, *args, **kwds):
+         # Ignore **kwds
+         return list.__new__(cls, *args)
+     def __init__(self, *args, **kwds):
+         for k, v in kwds.items():
+             setattr(self, k, v)
+     def __getstate__(self):
+         return list(self), self.__dict__
+     def __setstate__(self, arg):
+         lst, dct = arg
+         for x in lst:
+             self.append(x)
+         self.__init__(**dct)
+ 
  class AbstractPickleModuleTests(unittest.TestCase):