Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(73)

Delta Between Two Patch Sets: Lib/test/test_deque.py

Issue 602: range: lean and mean (Closed) SVN Base: http://svn.python.org/view/*checkout*/python/branches/py3k/
Left Patch Set: address more concerns Created 3 months, 3 weeks ago , Downloaded from: http://bugs.python.org/file10183/range_lean_and_mean5.patch
Right Patch Set: __len__ is back! Created 3 months, 3 weeks ago
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
Left: Side by side diff | Download
Right: Side by side diff | Download
LEFTRIGHT
1 from collections import deque 1 from collections import deque
2 import unittest 2 import unittest
3 from test import test_support, seq_tests 3 from test import test_support, seq_tests
4 from weakref import proxy 4 from weakref import proxy
5 import copy 5 import copy
6 import pickle 6 import pickle
7 from io import StringIO 7 from io import StringIO
8 import random 8 import random
9 import os 9 import os
10 10
11 BIG = 100000 11 BIG = 100000
12 12
13 def fail(): 13 def fail():
14 raise SyntaxError 14 raise SyntaxError
15 yield 1 15 yield 1
16 16
17 class BadCmp: 17 class BadCmp:
18 def __eq__(self, other): 18 def __eq__(self, other):
19 raise RuntimeError 19 raise RuntimeError
20 20
21 class MutateCmp: 21 class MutateCmp:
22 def __init__(self, deque, result): 22 def __init__(self, deque, result):
23 self.deque = deque 23 self.deque = deque
24 self.result = result 24 self.result = result
25 def __eq__(self, other): 25 def __eq__(self, other):
26 self.deque.clear() 26 self.deque.clear()
27 return self.result 27 return self.result
28 28
29 class TestBasic(unittest.TestCase): 29 class TestBasic(unittest.TestCase):
30 30
31 def test_basics(self): 31 def test_basics(self):
32 d = deque(range(-5125, -5000)) 32 d = deque(range(-5125, -5000))
33 d.__init__(range(200)) 33 d.__init__(range(200))
34 for i in range(200, 400): 34 for i in range(200, 400):
35 d.append(i) 35 d.append(i)
36 for i in reversed(range(-200, 0)): 36 for i in reversed(range(-200, 0)):
37 d.appendleft(i) 37 d.appendleft(i)
38 self.assertEqual(list(d), list(range(-200, 400))) 38 self.assertEqual(list(d), list(range(-200, 400)))
39 self.assertEqual(len(d), 600) 39 self.assertEqual(len(d), 600)
40 40
41 left = [d.popleft() for i in range(250)] 41 left = [d.popleft() for i in range(250)]
42 self.assertEqual(left, list(range(-200, 50))) 42 self.assertEqual(left, list(range(-200, 50)))
43 self.assertEqual(list(d), list(range(50, 400))) 43 self.assertEqual(list(d), list(range(50, 400)))
44 44
45 right = [d.pop() for i in range(250)] 45 right = [d.pop() for i in range(250)]
46 right.reverse() 46 right.reverse()
47 self.assertEqual(right, list(range(150, 400))) 47 self.assertEqual(right, list(range(150, 400)))
48 self.assertEqual(list(d), list(range(50, 150))) 48 self.assertEqual(list(d), list(range(50, 150)))
49 49
50 def test_maxlen(self): 50 def test_maxlen(self):
(...skipping 590 matching lines...) Show 10 above Show 10 below
641 f 641 f
642 c 642 c
643 g 643 g
644 h 644 h
645 645
646 646
647 >>> def maketree(iterable): 647 >>> def maketree(iterable):
648 ... d = deque(iterable) 648 ... d = deque(iterable)
649 ... while len(d) > 1: 649 ... while len(d) > 1:
650 ... pair = [d.popleft(), d.popleft()] 650 ... pair = [d.popleft(), d.popleft()]
651 ... d.append(pair) 651 ... d.append(pair)
652 ... return list(d) 652 ... return list(d)
653 ... 653 ...
654 >>> print(maketree('abcdefgh')) 654 >>> print(maketree('abcdefgh'))
655 [[[['a', 'b'], ['c', 'd']], [['e', 'f'], ['g', 'h']]]] 655 [[[['a', 'b'], ['c', 'd']], [['e', 'f'], ['g', 'h']]]]
656 656
657 """ 657 """
658 658
659 659
660 #============================================================================== 660 #==============================================================================
661 661
662 __test__ = {'libreftest' : libreftest} 662 __test__ = {'libreftest' : libreftest}
663 663
664 def test_main(verbose=None): 664 def test_main(verbose=None):
665 import sys 665 import sys
666 test_classes = ( 666 test_classes = (
667 TestBasic, 667 TestBasic,
668 TestVariousIteratorArgs, 668 TestVariousIteratorArgs,
669 TestSubclass, 669 TestSubclass,
670 TestSubclassWithKwargs, 670 TestSubclassWithKwargs,
671 ) 671 )
672 672
673 test_support.run_unittest(*test_classes) 673 test_support.run_unittest(*test_classes)
674 674
675 # verify reference counting 675 # verify reference counting
676 if verbose and hasattr(sys, "gettotalrefcount"): 676 if verbose and hasattr(sys, "gettotalrefcount"):
677 import gc 677 import gc
678 counts = [None] * 5 678 counts = [None] * 5
679 for i in range(len(counts)): 679 for i in range(len(counts)):
680 test_support.run_unittest(*test_classes) 680 test_support.run_unittest(*test_classes)
681 gc.collect() 681 gc.collect()
682 counts[i] = sys.gettotalrefcount() 682 counts[i] = sys.gettotalrefcount()
683 print(counts) 683 print(counts)
684 684
685 # doctests 685 # doctests
686 from test import test_deque 686 from test import test_deque
687 test_support.run_doctest(test_deque, verbose) 687 test_support.run_doctest(test_deque, verbose)
688 688
689 if __name__ == "__main__": 689 if __name__ == "__main__":
690 test_main(verbose=True) 690 test_main(verbose=True)
LEFTRIGHT

Powered by Google App Engine
This is Rietveld r292