| LEFT | RIGHT |
| 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) |
| LEFT | RIGHT |