[Python-checkins] python/dist/src/Lib/test test_datetime.py,1.30,1.31

gvanrossum@users.sourceforge.net gvanrossum@users.sourceforge.net
Thu, 30 Jan 2003 14:06:28 -0800


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

Modified Files:
	test_datetime.py 
Log Message:
Change the approach to pickling to use __reduce__ everywhere.  Most
classes have a __reduce__ that returns (self.__class__,
self.__getstate__()).  tzinfo.__reduce__() is a bit smarter, calling
__getinitargs__ and __getstate__ if they exist, and falling back to
__dict__ if it exists and isn't empty.


Index: test_datetime.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_datetime.py,v
retrieving revision 1.30
retrieving revision 1.31
diff -C2 -d -r1.30 -r1.31
*** test_datetime.py	24 Jan 2003 22:36:30 -0000	1.30
--- test_datetime.py	30 Jan 2003 22:06:23 -0000	1.31
***************
*** 5,8 ****
--- 5,10 ----
  
  import sys
+ import pickle
+ import cPickle
  import unittest
  
***************
*** 16,19 ****
--- 18,37 ----
  
  
+ pickle_choices = [
+     (pickle, pickle, 0),
+     (pickle, pickle, 1),
+     (pickle, pickle, 2),
+     (cPickle, cPickle, 0),
+     (cPickle, cPickle, 1),
+ ##    (cPickle, cPickle, 2),
+     (pickle, cPickle, 0),
+     (pickle, cPickle, 1),
+ ##    (pickle, cPickle, 2),
+     (cPickle, pickle, 0),
+     (cPickle, pickle, 1),
+ ##    (cPickle, pickle, 2),
+     ]
+ 
+ 
  # XXX The test suite uncovered a bug in Python 2.2.2:  if x and y are
  # XXX instances of new-style classes (like date and time) that both
***************
*** 101,106 ****
  
      def test_pickling_base(self):
-         import pickle, cPickle
- 
          # There's no point to pickling tzinfo objects on their own (they
          # carry no data), but they need to be picklable anyway else
--- 119,122 ----
***************
*** 108,120 ****
          orig = tzinfo.__new__(tzinfo)
          self.failUnless(type(orig) is tzinfo)
!         for pickler in pickle, cPickle:
!             for binary in 0, 1:
!                 green = pickler.dumps(orig, binary)
!                 derived = pickler.loads(green)
                  self.failUnless(type(derived) is tzinfo)
  
      def test_pickling_subclass(self):
-         import pickle, cPickle
- 
          # Make sure we can pickle/unpickle an instance of a subclass.
          offset = timedelta(minutes=-300)
--- 124,133 ----
          orig = tzinfo.__new__(tzinfo)
          self.failUnless(type(orig) is tzinfo)
!         for pickler, unpickler, proto in pickle_choices:
!                 green = pickler.dumps(orig, proto)
!                 derived = unpickler.loads(green)
                  self.failUnless(type(derived) is tzinfo)
  
      def test_pickling_subclass(self):
          # Make sure we can pickle/unpickle an instance of a subclass.
          offset = timedelta(minutes=-300)
***************
*** 124,131 ****
          self.assertEqual(orig.utcoffset(None), offset)
          self.assertEqual(orig.tzname(None), 'cookie')
!         for pickler in pickle, cPickle:
!             for binary in 0, 1:
!                 green = pickler.dumps(orig, binary)
!                 derived = pickler.loads(green)
                  self.failUnless(isinstance(derived, tzinfo))
                  self.failUnless(type(derived) is PicklableFixedOffset)
--- 137,143 ----
          self.assertEqual(orig.utcoffset(None), offset)
          self.assertEqual(orig.tzname(None), 'cookie')
!         for pickler, unpickler, proto in pickle_choices:
!                 green = pickler.dumps(orig, proto)
!                 derived = unpickler.loads(green)
                  self.failUnless(isinstance(derived, tzinfo))
                  self.failUnless(type(derived) is PicklableFixedOffset)
***************
*** 265,269 ****
  
      def test_pickling(self):
-         import pickle, cPickle
          args = 12, 34, 56
          orig = timedelta(*args)
--- 277,280 ----
***************
*** 273,280 ****
          derived.__setstate__(state)
          self.assertEqual(orig, derived)
!         for pickler in pickle, cPickle:
!             for binary in 0, 1:
!                 green = pickler.dumps(orig, binary)
!                 derived = pickler.loads(green)
                  self.assertEqual(orig, derived)
  
--- 284,290 ----
          derived.__setstate__(state)
          self.assertEqual(orig, derived)
!         for pickler, unpickler, proto in pickle_choices:
!                 green = pickler.dumps(orig, proto)
!                 derived = unpickler.loads(green)
                  self.assertEqual(orig, derived)
  
***************
*** 824,839 ****
  
      def test_pickling(self):
-         import pickle, cPickle
          args = 6, 7, 23
          orig = self.theclass(*args)
          state = orig.__getstate__()
!         self.assertEqual(state, '\x00\x06\x07\x17')
          derived = self.theclass(1, 1, 1)
          derived.__setstate__(state)
          self.assertEqual(orig, derived)
!         for pickler in pickle, cPickle:
!             for binary in 0, 1:
!                 green = pickler.dumps(orig, binary)
!                 derived = pickler.loads(green)
                  self.assertEqual(orig, derived)
  
--- 834,847 ----
  
      def test_pickling(self):
          args = 6, 7, 23
          orig = self.theclass(*args)
          state = orig.__getstate__()
!         self.assertEqual(state, ('\x00\x06\x07\x17',), self.theclass)
          derived = self.theclass(1, 1, 1)
          derived.__setstate__(state)
          self.assertEqual(orig, derived)
!         for pickler, unpickler, proto in pickle_choices:
!                 green = pickler.dumps(orig, proto)
!                 derived = unpickler.loads(green)
                  self.assertEqual(orig, derived)
  
***************
*** 1183,1187 ****
  
      def test_pickling(self):
-         import pickle, cPickle
          args = 6, 7, 23, 20, 59, 1, 64**2
          orig = self.theclass(*args)
--- 1191,1194 ----
***************
*** 1191,1198 ****
          derived.__setstate__(state)
          self.assertEqual(orig, derived)
!         for pickler in pickle, cPickle:
!             for binary in 0, 1:
!                 green = pickler.dumps(orig, binary)
!                 derived = pickler.loads(green)
                  self.assertEqual(orig, derived)
  
--- 1198,1204 ----
          derived.__setstate__(state)
          self.assertEqual(orig, derived)
!         for pickler, unpickler, proto in pickle_choices:
!                 green = pickler.dumps(orig, proto)
!                 derived = unpickler.loads(green)
                  self.assertEqual(orig, derived)
  
***************
*** 1569,1573 ****
  
      def test_pickling(self):
-         import pickle, cPickle
          args = 20, 59, 16, 64**2
          orig = self.theclass(*args)
--- 1575,1578 ----
***************
*** 1577,1584 ****
          derived.__setstate__(state)
          self.assertEqual(orig, derived)
!         for pickler in pickle, cPickle:
!             for binary in 0, 1:
!                 green = pickler.dumps(orig, binary)
!                 derived = pickler.loads(green)
                  self.assertEqual(orig, derived)
  
--- 1582,1588 ----
          derived.__setstate__(state)
          self.assertEqual(orig, derived)
!         for pickler, unpickler, proto in pickle_choices:
!                 green = pickler.dumps(orig, proto)
!                 derived = unpickler.loads(green)
                  self.assertEqual(orig, derived)
  
***************
*** 1883,1888 ****
  
      def test_pickling(self):
-         import pickle, cPickle
- 
          # Try one without a tzinfo.
          args = 20, 59, 16, 64**2
--- 1887,1890 ----
***************
*** 1893,1900 ****
          derived.__setstate__(state)
          self.assertEqual(orig, derived)
!         for pickler in pickle, cPickle:
!             for binary in 0, 1:
!                 green = pickler.dumps(orig, binary)
!                 derived = pickler.loads(green)
                  self.assertEqual(orig, derived)
  
--- 1895,1901 ----
          derived.__setstate__(state)
          self.assertEqual(orig, derived)
!         for pickler, unpickler, proto in pickle_choices:
!                 green = pickler.dumps(orig, proto)
!                 derived = unpickler.loads(green)
                  self.assertEqual(orig, derived)
  
***************
*** 1910,1917 ****
          self.assertEqual(derived.tzname(), 'cookie')
  
!         for pickler in pickle, cPickle:
!             for binary in 0, 1:
!                 green = pickler.dumps(orig, binary)
!                 derived = pickler.loads(green)
                  self.assertEqual(orig, derived)
                  self.failUnless(isinstance(derived.tzinfo,
--- 1911,1917 ----
          self.assertEqual(derived.tzname(), 'cookie')
  
!         for pickler, unpickler, proto in pickle_choices:
!                 green = pickler.dumps(orig, proto)
!                 derived = unpickler.loads(green)
                  self.assertEqual(orig, derived)
                  self.failUnless(isinstance(derived.tzinfo,
***************
*** 2102,2107 ****
  
      def test_pickling(self):
-         import pickle, cPickle
- 
          # Try one without a tzinfo.
          args = 6, 7, 23, 20, 59, 1, 64**2
--- 2102,2105 ----
***************
*** 2112,2119 ****
          derived.__setstate__(state)
          self.assertEqual(orig, derived)
!         for pickler in pickle, cPickle:
!             for binary in 0, 1:
!                 green = pickler.dumps(orig, binary)
!                 derived = pickler.loads(green)
                  self.assertEqual(orig, derived)
  
--- 2110,2116 ----
          derived.__setstate__(state)
          self.assertEqual(orig, derived)
!         for pickler, unpickler, proto in pickle_choices:
!                 green = pickler.dumps(orig, proto)
!                 derived = unpickler.loads(green)
                  self.assertEqual(orig, derived)
  
***************
*** 2129,2136 ****
          self.assertEqual(derived.tzname(), 'cookie')
  
!         for pickler in pickle, cPickle:
!             for binary in 0, 1:
!                 green = pickler.dumps(orig, binary)
!                 derived = pickler.loads(green)
                  self.assertEqual(orig, derived)
                  self.failUnless(isinstance(derived.tzinfo,
--- 2126,2132 ----
          self.assertEqual(derived.tzname(), 'cookie')
  
!         for pickler, unpickler, proto in pickle_choices:
!                 green = pickler.dumps(orig, proto)
!                 derived = unpickler.loads(green)
                  self.assertEqual(orig, derived)
                  self.failUnless(isinstance(derived.tzinfo,