[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):