[Python-checkins] python/dist/src/Lib/test pickletester.py,1.36,1.37

tim_one@users.sourceforge.net tim_one@users.sourceforge.net
Sun, 02 Feb 2003 12:29:41 -0800


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

Modified Files:
	pickletester.py 
Log Message:
cPickle support for TUPLE[123].  Incidentally plugged several undetected
overflow holes in Pdata_grow().


Index: pickletester.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/pickletester.py,v
retrieving revision 1.36
retrieving revision 1.37
diff -C2 -d -r1.36 -r1.37
*** pickletester.py	2 Feb 2003 17:59:11 -0000	1.36
--- pickletester.py	2 Feb 2003 20:29:38 -0000	1.37
***************
*** 485,488 ****
--- 485,509 ----
  
      def test_short_tuples(self):
+         # Map (proto, len(tuple)) to expected opcode.
+         expected_opcode = {(0, 0): pickle.TUPLE,
+                            (0, 1): pickle.TUPLE,
+                            (0, 2): pickle.TUPLE,
+                            (0, 3): pickle.TUPLE,
+                            (0, 4): pickle.TUPLE,
+ 
+                            (1, 0): pickle.EMPTY_TUPLE,
+                            (1, 1): pickle.TUPLE,
+                            (1, 2): pickle.TUPLE,
+                            (1, 3): pickle.TUPLE,
+                            (1, 4): pickle.TUPLE,
+ 
+                            (2, 0): pickle.EMPTY_TUPLE,
+                            (2, 1): pickle.TUPLE1,
+                            (2, 2): pickle.TUPLE2,
+                            (2, 3): pickle.TUPLE3,
+                            (2, 4): pickle.TUPLE,
+                           }
+         all_tuple_opcodes = (pickle.TUPLE, pickle.EMPTY_TUPLE,
+                              pickle.TUPLE1, pickle.TUPLE2, pickle.TUPLE3)
          a = ()
          b = (1,)
***************
*** 495,498 ****
--- 516,529 ----
                  y = self.loads(s)
                  self.assertEqual(x, y, (proto, x, s, y))
+ 
+                 # Verify that the protocol-correct tuple-building opcode
+                 # was generated.
+                 expected = expected_opcode[proto, len(x)]
+                 for opcode in s:
+                     if opcode in all_tuple_opcodes:
+                         self.assertEqual(expected, opcode)
+                         break
+                 else:
+                     self.fail("didn't find a tuple-building opcode in pickle")
  
      def test_singletons(self):