[Python-checkins] python/dist/src/Lib/test pickletester.py,1.39,1.40

tim_one@users.sourceforge.net tim_one@users.sourceforge.net
Mon, 03 Feb 2003 14:27:40 -0800


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

Modified Files:
	pickletester.py 
Log Message:
Added a bit to the EXT[124] tests, and refactored them to squash code
duplication.  Note that these still don't get run under cPickle.


Index: pickletester.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/pickletester.py,v
retrieving revision 1.39
retrieving revision 1.40
diff -C2 -d -r1.39 -r1.40
*** pickletester.py	3 Feb 2003 21:31:22 -0000	1.39
--- pickletester.py	3 Feb 2003 22:27:38 -0000	1.40
***************
*** 10,13 ****
--- 10,21 ----
  protocols = range(3)
  
+ 
+ # Return True if opcode code appears in the pickle, else False.
+ def opcode_in_pickle(code, pickle):
+     for op, dummy, dummy in pickletools.genops(pickle):
+         if op.code == code:
+             return True
+     return False
+ 
  class C:
      def __cmp__(self, other):
***************
*** 255,265 ****
          pass
  
-     # Return True if opcode code appears in the pickle, else False.
-     def opcode_in_pickle(self, code, pickle):
-         for op, dummy, dummy in pickletools.genops(pickle):
-             if op.code == code:
-                 return True
-         return False
- 
      def test_misc(self):
          # test various datatypes not tested by testdata
--- 263,266 ----
***************
*** 486,491 ****
              y = self.loads(s)
              self.assertEqual(x, y)
!             self.assertEqual(self.opcode_in_pickle(pickle.LONG1, s),
!                              proto >= 2)
  
      def test_long4(self):
--- 487,491 ----
              y = self.loads(s)
              self.assertEqual(x, y)
!             self.assertEqual(opcode_in_pickle(pickle.LONG1, s), proto >= 2)
  
      def test_long4(self):
***************
*** 495,500 ****
              y = self.loads(s)
              self.assertEqual(x, y)
!             self.assertEqual(self.opcode_in_pickle(pickle.LONG4, s),
!                              proto >= 2)
  
      def test_short_tuples(self):
--- 495,499 ----
              y = self.loads(s)
              self.assertEqual(x, y)
!             self.assertEqual(opcode_in_pickle(pickle.LONG4, s), proto >= 2)
  
      def test_short_tuples(self):
***************
*** 529,533 ****
                  self.assertEqual(x, y, (proto, x, s, y))
                  expected = expected_opcode[proto, len(x)]
!                 self.assertEqual(self.opcode_in_pickle(expected, s), True)
  
      def test_singletons(self):
--- 528,532 ----
                  self.assertEqual(x, y, (proto, x, s, y))
                  expected = expected_opcode[proto, len(x)]
!                 self.assertEqual(opcode_in_pickle(expected, s), True)
  
      def test_singletons(self):
***************
*** 551,555 ****
                  self.assert_(x is y, (proto, x, s, y))
                  expected = expected_opcode[proto, x]
!                 self.assertEqual(self.opcode_in_pickle(expected, s), True)
  
      def test_newobj_tuple(self):
--- 550,554 ----
                  self.assert_(x is y, (proto, x, s, y))
                  expected = expected_opcode[proto, x]
!                 self.assertEqual(opcode_in_pickle(expected, s), True)
  
      def test_newobj_tuple(self):
***************
*** 599,609 ****
          self.assertEqual(x.foo, y.foo)
          self.assertEqual(x.bar, y.bar)
- ##         import pickletools
- ##         print
- ##         pickletools.dis(s)
  
!     def test_global_ext1(self):
          import copy_reg
!         copy_reg.add_extension(__name__, "MyList", 0xf0)
          try:
              x = MyList([1, 2, 3])
--- 598,608 ----
          self.assertEqual(x.foo, y.foo)
          self.assertEqual(x.bar, y.bar)
  
!     # Register a type with copy_reg, with extension code extcode.  Pickle
!     # an object of that type.  Check that the resulting pickle uses opcode
!     # (EXT[124]) under proto 2, and not in proto 1.
!     def produce_global_ext(self, extcode, opcode):
          import copy_reg
!         copy_reg.add_extension(__name__, "MyList", extcode)
          try:
              x = MyList([1, 2, 3])
***************
*** 611,615 ****
              x.bar = "hello"
  
!             # Dump using protocol 1 for comparison
              s1 = self.dumps(x, 1)
              y = self.loads(s1)
--- 610,614 ----
              x.bar = "hello"
  
!             # Dump using protocol 1 for comparison.
              s1 = self.dumps(x, 1)
              y = self.loads(s1)
***************
*** 618,626 ****
              self.assert_(s1.find(__name__) >= 0)
              self.assert_(s1.find("MyList") >= 0)
- ##            import pickletools
- ##            print
- ##            pickletools.dis(s1)
  
!             # Dump using protocol 2 for test
              s2 = self.dumps(x, 2)
              self.assertEqual(s2.find(__name__), -1)
--- 617,622 ----
              self.assert_(s1.find(__name__) >= 0)
              self.assert_(s1.find("MyList") >= 0)
  
!             # Dump using protocol 2 for test.
              s2 = self.dumps(x, 2)
              self.assertEqual(s2.find(__name__), -1)
***************
*** 629,666 ****
              self.assertEqual(list(x), list(y))
              self.assertEqual(x.__dict__, y.__dict__)
! ##            import pickletools
! ##            print
! ##            pickletools.dis(s2)
  
          finally:
!             copy_reg.remove_extension(__name__, "MyList", 0xf0)
  
      def test_global_ext2(self):
!         import copy_reg
!         copy_reg.add_extension(__name__, "MyList", 0xfff0)
!         try:
!             x = MyList()
!             s2 = self.dumps(x, 2)
!             self.assertEqual(s2.find(__name__), -1)
!             self.assertEqual(s2.find("MyList"), -1)
!             y = self.loads(s2)
!             self.assertEqual(list(x), list(y))
!             self.assertEqual(x.__dict__, y.__dict__)
!         finally:
!             copy_reg.remove_extension(__name__, "MyList", 0xfff0)
  
      def test_global_ext4(self):
!         import copy_reg
!         copy_reg.add_extension(__name__, "MyList", 0xfffff0)
!         try:
!             x = MyList()
!             s2 = self.dumps(x, 2)
!             self.assertEqual(s2.find(__name__), -1)
!             self.assertEqual(s2.find("MyList"), -1)
!             y = self.loads(s2)
!             self.assertEqual(list(x), list(y))
!             self.assertEqual(x.__dict__, y.__dict__)
!         finally:
!             copy_reg.remove_extension(__name__, "MyList", 0xfffff0)
  
  class MyInt(int):
--- 625,642 ----
              self.assertEqual(list(x), list(y))
              self.assertEqual(x.__dict__, y.__dict__)
!             self.assertEqual(opcode_in_pickle(opcode, s2), True)
  
          finally:
!             copy_reg.remove_extension(__name__, "MyList", extcode)
! 
!     def test_global_ext1(self):
!         self.produce_global_ext(0xf0, pickle.EXT1)
  
      def test_global_ext2(self):
!         self.produce_global_ext(0xfff0, pickle.EXT2)
  
      def test_global_ext4(self):
!         self.produce_global_ext(0xffffff0, pickle.EXT4)
! 
  
  class MyInt(int):