@@ -622,20 +622,22 @@ def test_roundtrip_iter_init(self):
622622 self .assertEqual (list (d ), list (e ))
623623
624624 def test_pickle (self ):
625- d = deque (range (200 ))
626- for i in range (pickle .HIGHEST_PROTOCOL + 1 ):
627- s = pickle .dumps (d , i )
628- e = pickle .loads (s )
629- self .assertNotEqual (id (d ), id (e ))
630- self .assertEqual (list (d ), list (e ))
631-
632- ## def test_pickle_recursive(self):
633- ## d = deque('abc')
634- ## d.append(d)
635- ## for i in range(pickle.HIGHEST_PROTOCOL + 1):
636- ## e = pickle.loads(pickle.dumps(d, i))
637- ## self.assertNotEqual(id(d), id(e))
638- ## self.assertEqual(id(e), id(e[-1]))
625+ for d in deque (range (200 )), deque (range (200 ), 100 ):
626+ for i in range (pickle .HIGHEST_PROTOCOL + 1 ):
627+ s = pickle .dumps (d , i )
628+ e = pickle .loads (s )
629+ self .assertNotEqual (id (e ), id (d ))
630+ self .assertEqual (list (e ), list (d ))
631+ self .assertEqual (e .maxlen , d .maxlen )
632+
633+ def test_pickle_recursive (self ):
634+ for d in deque ('abc' ), deque ('abc' , 3 ):
635+ d .append (d )
636+ for i in range (pickle .HIGHEST_PROTOCOL + 1 ):
637+ e = pickle .loads (pickle .dumps (d , i ))
638+ self .assertNotEqual (id (e ), id (d ))
639+ self .assertEqual (id (e [- 1 ]), id (e ))
640+ self .assertEqual (e .maxlen , d .maxlen )
639641
640642 def test_iterator_pickle (self ):
641643 data = deque (range (200 ))
@@ -827,24 +829,26 @@ def test_copy_pickle(self):
827829 self .assertEqual (type (d ), type (e ))
828830 self .assertEqual (list (d ), list (e ))
829831
830- ## def test_pickle(self):
831- ## d = Deque('abc')
832- ## d.append(d)
833- ##
834- ## e = pickle.loads(pickle.dumps(d))
835- ## self.assertNotEqual(id(d), id(e))
836- ## self.assertEqual(type(d), type(e))
837- ## dd = d.pop()
838- ## ee = e.pop()
839- ## self.assertEqual(id(e), id(ee))
840- ## self.assertEqual(d, e)
841- ##
842- ## d.x = d
843- ## e = pickle.loads(pickle.dumps(d))
844- ## self.assertEqual(id(e), id(e.x))
845- ##
846- ## d = DequeWithBadIter('abc')
847- ## self.assertRaises(TypeError, pickle.dumps, d)
832+ def test_pickle_recursive (self ):
833+ for proto in range (pickle .HIGHEST_PROTOCOL + 1 ):
834+ for d in Deque ('abc' ), Deque ('abc' , 3 ):
835+ d .append (d )
836+
837+ e = pickle .loads (pickle .dumps (d , proto ))
838+ self .assertNotEqual (id (e ), id (d ))
839+ self .assertEqual (type (e ), type (d ))
840+ self .assertEqual (e .maxlen , d .maxlen )
841+ dd = d .pop ()
842+ ee = e .pop ()
843+ self .assertEqual (id (ee ), id (e ))
844+ self .assertEqual (e , d )
845+
846+ d .x = d
847+ e = pickle .loads (pickle .dumps (d , proto ))
848+ self .assertEqual (id (e .x ), id (e ))
849+
850+ for d in DequeWithBadIter ('abc' ), DequeWithBadIter ('abc' , 2 ):
851+ self .assertRaises (TypeError , pickle .dumps , d , proto )
848852
849853 def test_weakref (self ):
850854 d = deque ('gallahad' )
0 commit comments