Mercurial > cpython-lru_cache-weakref
annotate Lib/test/test_bisect.py @ 87690:66c1c9f32567 default tip
Add use_weakref option to functools.lru_cache
The use_weakref option makes lru_cache create weak references to the function
arguments when creating the cache key, which prevents them from staying in the
memory forever even after all other references to them are gone.
This is a proof of concept for http://bugs.python.org/issue19859
| author | Radomir Dopieralski <devel@sheep.art.pl> |
|---|---|
| date | Tue, 03 Dec 2013 16:02:48 +0100 |
| parents | 33bdd0a985b9 |
| children |
| rev | line source |
|---|---|
|
45495
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
1 import sys |
|
27266
a9ddadf789ea
Convert to unittest format so that more tests can be added cleanly.
Raymond Hettinger <python@rcn.com>
parents:
24442
diff
changeset
|
2 import unittest |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
45495
diff
changeset
|
3 from test import support |
|
45302
b1cb6b44b798
Move UserList to collections.
Raymond Hettinger <python@rcn.com>
parents:
42142
diff
changeset
|
4 from collections import UserList |
|
27266
a9ddadf789ea
Convert to unittest format so that more tests can be added cleanly.
Raymond Hettinger <python@rcn.com>
parents:
24442
diff
changeset
|
5 |
|
81346
f32cb5389a4b
#16897: test_bisect now works with unittest test discovery. Initial patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
80133
diff
changeset
|
6 py_bisect = support.import_fresh_module('bisect', blocked=['_bisect']) |
|
f32cb5389a4b
#16897: test_bisect now works with unittest test discovery. Initial patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
80133
diff
changeset
|
7 c_bisect = support.import_fresh_module('bisect', fresh=['_bisect']) |
|
45495
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
8 |
|
76995
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
9 class Range(object): |
|
81788
a375c3d88c7e
Tweak a comment to be in line with Python 3
Brett Cannon <brett@python.org>
parents:
81346
diff
changeset
|
10 """A trivial range()-like object that has an insert() method.""" |
|
76995
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
11 def __init__(self, start, stop): |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
12 self.start = start |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
13 self.stop = stop |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
14 self.last_insert = None |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
15 |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
16 def __len__(self): |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
17 return self.stop - self.start |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
18 |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
19 def __getitem__(self, idx): |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
20 n = self.stop - self.start |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
21 if idx < 0: |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
22 idx += n |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
23 if idx >= n: |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
24 raise IndexError(idx) |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
25 return self.start + idx |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
26 |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
27 def insert(self, idx, item): |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
28 self.last_insert = idx, item |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
29 |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
30 |
|
81346
f32cb5389a4b
#16897: test_bisect now works with unittest test discovery. Initial patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
80133
diff
changeset
|
31 class TestBisect: |
|
45495
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
32 def setUp(self): |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
33 self.precomputedCases = [ |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
34 (self.module.bisect_right, [], 1, 0), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
35 (self.module.bisect_right, [1], 0, 0), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
36 (self.module.bisect_right, [1], 1, 1), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
37 (self.module.bisect_right, [1], 2, 1), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
38 (self.module.bisect_right, [1, 1], 0, 0), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
39 (self.module.bisect_right, [1, 1], 1, 2), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
40 (self.module.bisect_right, [1, 1], 2, 2), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
41 (self.module.bisect_right, [1, 1, 1], 0, 0), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
42 (self.module.bisect_right, [1, 1, 1], 1, 3), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
43 (self.module.bisect_right, [1, 1, 1], 2, 3), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
44 (self.module.bisect_right, [1, 1, 1, 1], 0, 0), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
45 (self.module.bisect_right, [1, 1, 1, 1], 1, 4), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
46 (self.module.bisect_right, [1, 1, 1, 1], 2, 4), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
47 (self.module.bisect_right, [1, 2], 0, 0), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
48 (self.module.bisect_right, [1, 2], 1, 1), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
49 (self.module.bisect_right, [1, 2], 1.5, 1), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
50 (self.module.bisect_right, [1, 2], 2, 2), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
51 (self.module.bisect_right, [1, 2], 3, 2), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
52 (self.module.bisect_right, [1, 1, 2, 2], 0, 0), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
53 (self.module.bisect_right, [1, 1, 2, 2], 1, 2), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
54 (self.module.bisect_right, [1, 1, 2, 2], 1.5, 2), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
55 (self.module.bisect_right, [1, 1, 2, 2], 2, 4), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
56 (self.module.bisect_right, [1, 1, 2, 2], 3, 4), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
57 (self.module.bisect_right, [1, 2, 3], 0, 0), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
58 (self.module.bisect_right, [1, 2, 3], 1, 1), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
59 (self.module.bisect_right, [1, 2, 3], 1.5, 1), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
60 (self.module.bisect_right, [1, 2, 3], 2, 2), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
61 (self.module.bisect_right, [1, 2, 3], 2.5, 2), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
62 (self.module.bisect_right, [1, 2, 3], 3, 3), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
63 (self.module.bisect_right, [1, 2, 3], 4, 3), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
64 (self.module.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 0, 0), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
65 (self.module.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 1, 1), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
66 (self.module.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 1.5, 1), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
67 (self.module.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 2, 3), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
68 (self.module.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 2.5, 3), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
69 (self.module.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 3, 6), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
70 (self.module.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 3.5, 6), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
71 (self.module.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 4, 10), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
72 (self.module.bisect_right, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 5, 10), |
|
15673
67b3ac439f64
Fred, THIS NEEDS DOCS! The function docstrings tell the tale.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
73 |
|
45495
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
74 (self.module.bisect_left, [], 1, 0), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
75 (self.module.bisect_left, [1], 0, 0), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
76 (self.module.bisect_left, [1], 1, 0), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
77 (self.module.bisect_left, [1], 2, 1), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
78 (self.module.bisect_left, [1, 1], 0, 0), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
79 (self.module.bisect_left, [1, 1], 1, 0), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
80 (self.module.bisect_left, [1, 1], 2, 2), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
81 (self.module.bisect_left, [1, 1, 1], 0, 0), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
82 (self.module.bisect_left, [1, 1, 1], 1, 0), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
83 (self.module.bisect_left, [1, 1, 1], 2, 3), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
84 (self.module.bisect_left, [1, 1, 1, 1], 0, 0), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
85 (self.module.bisect_left, [1, 1, 1, 1], 1, 0), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
86 (self.module.bisect_left, [1, 1, 1, 1], 2, 4), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
87 (self.module.bisect_left, [1, 2], 0, 0), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
88 (self.module.bisect_left, [1, 2], 1, 0), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
89 (self.module.bisect_left, [1, 2], 1.5, 1), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
90 (self.module.bisect_left, [1, 2], 2, 1), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
91 (self.module.bisect_left, [1, 2], 3, 2), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
92 (self.module.bisect_left, [1, 1, 2, 2], 0, 0), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
93 (self.module.bisect_left, [1, 1, 2, 2], 1, 0), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
94 (self.module.bisect_left, [1, 1, 2, 2], 1.5, 2), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
95 (self.module.bisect_left, [1, 1, 2, 2], 2, 2), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
96 (self.module.bisect_left, [1, 1, 2, 2], 3, 4), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
97 (self.module.bisect_left, [1, 2, 3], 0, 0), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
98 (self.module.bisect_left, [1, 2, 3], 1, 0), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
99 (self.module.bisect_left, [1, 2, 3], 1.5, 1), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
100 (self.module.bisect_left, [1, 2, 3], 2, 1), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
101 (self.module.bisect_left, [1, 2, 3], 2.5, 2), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
102 (self.module.bisect_left, [1, 2, 3], 3, 2), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
103 (self.module.bisect_left, [1, 2, 3], 4, 3), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
104 (self.module.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 0, 0), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
105 (self.module.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 1, 0), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
106 (self.module.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 1.5, 1), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
107 (self.module.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 2, 1), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
108 (self.module.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 2.5, 3), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
109 (self.module.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 3, 3), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
110 (self.module.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 3.5, 6), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
111 (self.module.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 4, 6), |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
112 (self.module.bisect_left, [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 5, 10) |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
113 ] |
|
15673
67b3ac439f64
Fred, THIS NEEDS DOCS! The function docstrings tell the tale.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
114 |
|
27266
a9ddadf789ea
Convert to unittest format so that more tests can be added cleanly.
Raymond Hettinger <python@rcn.com>
parents:
24442
diff
changeset
|
115 def test_precomputed(self): |
|
27269
dbe4f57e8bb2
Let test_random cover the endpoints.
Raymond Hettinger <python@rcn.com>
parents:
27268
diff
changeset
|
116 for func, data, elem, expected in self.precomputedCases: |
|
dbe4f57e8bb2
Let test_random cover the endpoints.
Raymond Hettinger <python@rcn.com>
parents:
27268
diff
changeset
|
117 self.assertEqual(func(data, elem), expected) |
|
31353
ed20259a1ea5
SF Patch #864863: Bisect C implementation
Raymond Hettinger <python@rcn.com>
parents:
28917
diff
changeset
|
118 self.assertEqual(func(UserList(data), elem), expected) |
|
27266
a9ddadf789ea
Convert to unittest format so that more tests can be added cleanly.
Raymond Hettinger <python@rcn.com>
parents:
24442
diff
changeset
|
119 |
|
48499
de0bf60f1245
Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
120 def test_negative_lo(self): |
|
de0bf60f1245
Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
121 # Issue 3301 |
|
de0bf60f1245
Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
122 mod = self.module |
|
82958
33bdd0a985b9
Issue #17516: do not create useless tuple: remove dummy commas in tests
Victor Stinner <victor.stinner@gmail.com>
parents:
81788
diff
changeset
|
123 self.assertRaises(ValueError, mod.bisect_left, [1, 2, 3], 5, -1, 3) |
|
33bdd0a985b9
Issue #17516: do not create useless tuple: remove dummy commas in tests
Victor Stinner <victor.stinner@gmail.com>
parents:
81788
diff
changeset
|
124 self.assertRaises(ValueError, mod.bisect_right, [1, 2, 3], 5, -1, 3) |
|
33bdd0a985b9
Issue #17516: do not create useless tuple: remove dummy commas in tests
Victor Stinner <victor.stinner@gmail.com>
parents:
81788
diff
changeset
|
125 self.assertRaises(ValueError, mod.insort_left, [1, 2, 3], 5, -1, 3) |
|
33bdd0a985b9
Issue #17516: do not create useless tuple: remove dummy commas in tests
Victor Stinner <victor.stinner@gmail.com>
parents:
81788
diff
changeset
|
126 self.assertRaises(ValueError, mod.insort_right, [1, 2, 3], 5, -1, 3) |
|
48499
de0bf60f1245
Merged revisions 64722,64729,64753,64845-64846,64849,64871,64880-64882,64885,64888,64897,64900-64901,64915,64926-64929,64938-64941,64944,64961,64966,64973 via svnmerge from
Georg Brandl <georg@python.org>
parents:
47201
diff
changeset
|
127 |
|
76323
35a3a7e0d66d
Issue 13496: Fix bisect.bisect overflow bug for large collections.
Mark Dickinson <mdickinson@enthought.com>
parents:
55593
diff
changeset
|
128 def test_large_range(self): |
|
35a3a7e0d66d
Issue 13496: Fix bisect.bisect overflow bug for large collections.
Mark Dickinson <mdickinson@enthought.com>
parents:
55593
diff
changeset
|
129 # Issue 13496 |
|
35a3a7e0d66d
Issue 13496: Fix bisect.bisect overflow bug for large collections.
Mark Dickinson <mdickinson@enthought.com>
parents:
55593
diff
changeset
|
130 mod = self.module |
|
76995
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
131 n = sys.maxsize |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
132 data = range(n-1) |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
133 self.assertEqual(mod.bisect_left(data, n-3), n-3) |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
134 self.assertEqual(mod.bisect_right(data, n-3), n-2) |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
135 self.assertEqual(mod.bisect_left(data, n-3, n-10, n), n-3) |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
136 self.assertEqual(mod.bisect_right(data, n-3, n-10, n), n-2) |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
137 |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
138 def test_large_pyrange(self): |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
139 # Same as above, but without C-imposed limits on range() parameters |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
140 mod = self.module |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
141 n = sys.maxsize |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
142 data = Range(0, n-1) |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
143 self.assertEqual(mod.bisect_left(data, n-3), n-3) |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
144 self.assertEqual(mod.bisect_right(data, n-3), n-2) |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
145 self.assertEqual(mod.bisect_left(data, n-3, n-10, n), n-3) |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
146 self.assertEqual(mod.bisect_right(data, n-3, n-10, n), n-2) |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
147 x = n - 100 |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
148 mod.insort_left(data, x, x - 50, x + 50) |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
149 self.assertEqual(data.last_insert, (x, x)) |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
150 x = n - 200 |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
151 mod.insort_right(data, x, x - 50, x + 50) |
|
13900edf13be
Forward port additional tests from 2.7 (issue #14829).
Antoine Pitrou <solipsis@pitrou.net>
parents:
76323
diff
changeset
|
152 self.assertEqual(data.last_insert, (x + 1, x)) |
|
76323
35a3a7e0d66d
Issue 13496: Fix bisect.bisect overflow bug for large collections.
Mark Dickinson <mdickinson@enthought.com>
parents:
55593
diff
changeset
|
153 |
|
27269
dbe4f57e8bb2
Let test_random cover the endpoints.
Raymond Hettinger <python@rcn.com>
parents:
27268
diff
changeset
|
154 def test_random(self, n=25): |
|
27267
b744508d5b12
Added doctest for examples in the library reference.
Raymond Hettinger <python@rcn.com>
parents:
27266
diff
changeset
|
155 from random import randrange |
|
41642
a6eb6acfe04a
Merged revisions 55007-55179 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40775
diff
changeset
|
156 for i in range(n): |
|
a6eb6acfe04a
Merged revisions 55007-55179 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40775
diff
changeset
|
157 data = [randrange(0, n, 2) for j in range(i)] |
|
27267
b744508d5b12
Added doctest for examples in the library reference.
Raymond Hettinger <python@rcn.com>
parents:
27266
diff
changeset
|
158 data.sort() |
|
27269
dbe4f57e8bb2
Let test_random cover the endpoints.
Raymond Hettinger <python@rcn.com>
parents:
27268
diff
changeset
|
159 elem = randrange(-1, n+1) |
|
45495
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
160 ip = self.module.bisect_left(data, elem) |
|
27267
b744508d5b12
Added doctest for examples in the library reference.
Raymond Hettinger <python@rcn.com>
parents:
27266
diff
changeset
|
161 if ip < len(data): |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49493
diff
changeset
|
162 self.assertTrue(elem <= data[ip]) |
|
27267
b744508d5b12
Added doctest for examples in the library reference.
Raymond Hettinger <python@rcn.com>
parents:
27266
diff
changeset
|
163 if ip > 0: |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49493
diff
changeset
|
164 self.assertTrue(data[ip-1] < elem) |
|
45495
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
165 ip = self.module.bisect_right(data, elem) |
|
27267
b744508d5b12
Added doctest for examples in the library reference.
Raymond Hettinger <python@rcn.com>
parents:
27266
diff
changeset
|
166 if ip < len(data): |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49493
diff
changeset
|
167 self.assertTrue(elem < data[ip]) |
|
27267
b744508d5b12
Added doctest for examples in the library reference.
Raymond Hettinger <python@rcn.com>
parents:
27266
diff
changeset
|
168 if ip > 0: |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49493
diff
changeset
|
169 self.assertTrue(data[ip-1] <= elem) |
|
27267
b744508d5b12
Added doctest for examples in the library reference.
Raymond Hettinger <python@rcn.com>
parents:
27266
diff
changeset
|
170 |
|
27268
be3d1b7e62dc
Test optional slice arguments.
Raymond Hettinger <python@rcn.com>
parents:
27267
diff
changeset
|
171 def test_optionalSlicing(self): |
|
27269
dbe4f57e8bb2
Let test_random cover the endpoints.
Raymond Hettinger <python@rcn.com>
parents:
27268
diff
changeset
|
172 for func, data, elem, expected in self.precomputedCases: |
|
41642
a6eb6acfe04a
Merged revisions 55007-55179 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40775
diff
changeset
|
173 for lo in range(4): |
|
27269
dbe4f57e8bb2
Let test_random cover the endpoints.
Raymond Hettinger <python@rcn.com>
parents:
27268
diff
changeset
|
174 lo = min(len(data), lo) |
|
41642
a6eb6acfe04a
Merged revisions 55007-55179 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40775
diff
changeset
|
175 for hi in range(3,8): |
|
27269
dbe4f57e8bb2
Let test_random cover the endpoints.
Raymond Hettinger <python@rcn.com>
parents:
27268
diff
changeset
|
176 hi = min(len(data), hi) |
|
dbe4f57e8bb2
Let test_random cover the endpoints.
Raymond Hettinger <python@rcn.com>
parents:
27268
diff
changeset
|
177 ip = func(data, elem, lo, hi) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49493
diff
changeset
|
178 self.assertTrue(lo <= ip <= hi) |
|
45495
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
179 if func is self.module.bisect_left and ip < hi: |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49493
diff
changeset
|
180 self.assertTrue(elem <= data[ip]) |
|
45495
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
181 if func is self.module.bisect_left and ip > lo: |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49493
diff
changeset
|
182 self.assertTrue(data[ip-1] < elem) |
|
45495
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
183 if func is self.module.bisect_right and ip < hi: |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49493
diff
changeset
|
184 self.assertTrue(elem < data[ip]) |
|
45495
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
185 if func is self.module.bisect_right and ip > lo: |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49493
diff
changeset
|
186 self.assertTrue(data[ip-1] <= elem) |
|
27269
dbe4f57e8bb2
Let test_random cover the endpoints.
Raymond Hettinger <python@rcn.com>
parents:
27268
diff
changeset
|
187 self.assertEqual(ip, max(lo, min(hi, expected))) |
|
27268
be3d1b7e62dc
Test optional slice arguments.
Raymond Hettinger <python@rcn.com>
parents:
27267
diff
changeset
|
188 |
|
be3d1b7e62dc
Test optional slice arguments.
Raymond Hettinger <python@rcn.com>
parents:
27267
diff
changeset
|
189 def test_backcompatibility(self): |
|
45495
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
190 self.assertEqual(self.module.bisect, self.module.bisect_right) |
|
27268
be3d1b7e62dc
Test optional slice arguments.
Raymond Hettinger <python@rcn.com>
parents:
27267
diff
changeset
|
191 |
|
35699
3572249c1e77
SF #1313496: bisect C replacement doesn't accept named args
Raymond Hettinger <python@rcn.com>
parents:
33602
diff
changeset
|
192 def test_keyword_args(self): |
|
3572249c1e77
SF #1313496: bisect C replacement doesn't accept named args
Raymond Hettinger <python@rcn.com>
parents:
33602
diff
changeset
|
193 data = [10, 20, 30, 40, 50] |
|
45495
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
194 self.assertEqual(self.module.bisect_left(a=data, x=25, lo=1, hi=3), 2) |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
195 self.assertEqual(self.module.bisect_right(a=data, x=25, lo=1, hi=3), 2) |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
196 self.assertEqual(self.module.bisect(a=data, x=25, lo=1, hi=3), 2) |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
197 self.module.insort_left(a=data, x=25, lo=1, hi=3) |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
198 self.module.insort_right(a=data, x=25, lo=1, hi=3) |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
199 self.module.insort(a=data, x=25, lo=1, hi=3) |
|
35699
3572249c1e77
SF #1313496: bisect C replacement doesn't accept named args
Raymond Hettinger <python@rcn.com>
parents:
33602
diff
changeset
|
200 self.assertEqual(data, [10, 20, 25, 25, 25, 30, 40, 50]) |
|
3572249c1e77
SF #1313496: bisect C replacement doesn't accept named args
Raymond Hettinger <python@rcn.com>
parents:
33602
diff
changeset
|
201 |
|
81346
f32cb5389a4b
#16897: test_bisect now works with unittest test discovery. Initial patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
80133
diff
changeset
|
202 class TestBisectPython(TestBisect, unittest.TestCase): |
|
45495
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
203 module = py_bisect |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
204 |
|
81346
f32cb5389a4b
#16897: test_bisect now works with unittest test discovery. Initial patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
80133
diff
changeset
|
205 class TestBisectC(TestBisect, unittest.TestCase): |
|
45495
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
206 module = c_bisect |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
207 |
|
27266
a9ddadf789ea
Convert to unittest format so that more tests can be added cleanly.
Raymond Hettinger <python@rcn.com>
parents:
24442
diff
changeset
|
208 #============================================================================== |
|
a9ddadf789ea
Convert to unittest format so that more tests can be added cleanly.
Raymond Hettinger <python@rcn.com>
parents:
24442
diff
changeset
|
209 |
|
81346
f32cb5389a4b
#16897: test_bisect now works with unittest test discovery. Initial patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
80133
diff
changeset
|
210 class TestInsort: |
|
31353
ed20259a1ea5
SF Patch #864863: Bisect C implementation
Raymond Hettinger <python@rcn.com>
parents:
28917
diff
changeset
|
211 def test_vsBuiltinSort(self, n=500): |
|
27266
a9ddadf789ea
Convert to unittest format so that more tests can be added cleanly.
Raymond Hettinger <python@rcn.com>
parents:
24442
diff
changeset
|
212 from random import choice |
|
31353
ed20259a1ea5
SF Patch #864863: Bisect C implementation
Raymond Hettinger <python@rcn.com>
parents:
28917
diff
changeset
|
213 for insorted in (list(), UserList()): |
|
41642
a6eb6acfe04a
Merged revisions 55007-55179 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40775
diff
changeset
|
214 for i in range(n): |
|
31353
ed20259a1ea5
SF Patch #864863: Bisect C implementation
Raymond Hettinger <python@rcn.com>
parents:
28917
diff
changeset
|
215 digit = choice("0123456789") |
|
ed20259a1ea5
SF Patch #864863: Bisect C implementation
Raymond Hettinger <python@rcn.com>
parents:
28917
diff
changeset
|
216 if digit in "02468": |
|
45495
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
217 f = self.module.insort_left |
|
31353
ed20259a1ea5
SF Patch #864863: Bisect C implementation
Raymond Hettinger <python@rcn.com>
parents:
28917
diff
changeset
|
218 else: |
|
45495
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
219 f = self.module.insort_right |
|
31353
ed20259a1ea5
SF Patch #864863: Bisect C implementation
Raymond Hettinger <python@rcn.com>
parents:
28917
diff
changeset
|
220 f(insorted, digit) |
|
80133
838e2b19489e
Issue #16377: Fix bisect unittest.
Andrew Svetlov <andrew.svetlov@gmail.com>
parents:
76995
diff
changeset
|
221 self.assertEqual(sorted(insorted), insorted) |
|
27266
a9ddadf789ea
Convert to unittest format so that more tests can be added cleanly.
Raymond Hettinger <python@rcn.com>
parents:
24442
diff
changeset
|
222 |
|
27268
be3d1b7e62dc
Test optional slice arguments.
Raymond Hettinger <python@rcn.com>
parents:
27267
diff
changeset
|
223 def test_backcompatibility(self): |
|
45495
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
224 self.assertEqual(self.module.insort, self.module.insort_right) |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
225 |
| 49493 | 226 def test_listDerived(self): |
| 227 class List(list): | |
| 228 data = [] | |
| 229 def insert(self, index, item): | |
| 230 self.data.insert(index, item) | |
| 231 | |
| 232 lst = List() | |
| 233 self.module.insort_left(lst, 10) | |
| 234 self.module.insort_right(lst, 5) | |
| 235 self.assertEqual([5, 10], lst.data) | |
| 236 | |
|
81346
f32cb5389a4b
#16897: test_bisect now works with unittest test discovery. Initial patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
80133
diff
changeset
|
237 class TestInsortPython(TestInsort, unittest.TestCase): |
|
45495
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
238 module = py_bisect |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
239 |
|
81346
f32cb5389a4b
#16897: test_bisect now works with unittest test discovery. Initial patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
80133
diff
changeset
|
240 class TestInsortC(TestInsort, unittest.TestCase): |
|
45495
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
241 module = c_bisect |
|
27268
be3d1b7e62dc
Test optional slice arguments.
Raymond Hettinger <python@rcn.com>
parents:
27267
diff
changeset
|
242 |
|
27266
a9ddadf789ea
Convert to unittest format so that more tests can be added cleanly.
Raymond Hettinger <python@rcn.com>
parents:
24442
diff
changeset
|
243 #============================================================================== |
|
15673
67b3ac439f64
Fred, THIS NEEDS DOCS! The function docstrings tell the tale.
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
244 |
|
33601
7511585f2e6a
Beef-up tests for greater coverage and refcount checking.
Raymond Hettinger <python@rcn.com>
parents:
31436
diff
changeset
|
245 class LenOnly: |
|
7511585f2e6a
Beef-up tests for greater coverage and refcount checking.
Raymond Hettinger <python@rcn.com>
parents:
31436
diff
changeset
|
246 "Dummy sequence class defining __len__ but not __getitem__." |
|
7511585f2e6a
Beef-up tests for greater coverage and refcount checking.
Raymond Hettinger <python@rcn.com>
parents:
31436
diff
changeset
|
247 def __len__(self): |
|
7511585f2e6a
Beef-up tests for greater coverage and refcount checking.
Raymond Hettinger <python@rcn.com>
parents:
31436
diff
changeset
|
248 return 10 |
|
7511585f2e6a
Beef-up tests for greater coverage and refcount checking.
Raymond Hettinger <python@rcn.com>
parents:
31436
diff
changeset
|
249 |
|
7511585f2e6a
Beef-up tests for greater coverage and refcount checking.
Raymond Hettinger <python@rcn.com>
parents:
31436
diff
changeset
|
250 class GetOnly: |
|
7511585f2e6a
Beef-up tests for greater coverage and refcount checking.
Raymond Hettinger <python@rcn.com>
parents:
31436
diff
changeset
|
251 "Dummy sequence class defining __getitem__ but not __len__." |
|
7511585f2e6a
Beef-up tests for greater coverage and refcount checking.
Raymond Hettinger <python@rcn.com>
parents:
31436
diff
changeset
|
252 def __getitem__(self, ndx): |
|
7511585f2e6a
Beef-up tests for greater coverage and refcount checking.
Raymond Hettinger <python@rcn.com>
parents:
31436
diff
changeset
|
253 return 10 |
|
7511585f2e6a
Beef-up tests for greater coverage and refcount checking.
Raymond Hettinger <python@rcn.com>
parents:
31436
diff
changeset
|
254 |
|
7511585f2e6a
Beef-up tests for greater coverage and refcount checking.
Raymond Hettinger <python@rcn.com>
parents:
31436
diff
changeset
|
255 class CmpErr: |
|
7511585f2e6a
Beef-up tests for greater coverage and refcount checking.
Raymond Hettinger <python@rcn.com>
parents:
31436
diff
changeset
|
256 "Dummy element that always raises an error during comparison" |
|
39644
13d5e5f0e993
Restructure comparison dramatically. There is no longer a default
Guido van Rossum <guido@python.org>
parents:
37739
diff
changeset
|
257 def __lt__(self, other): |
|
33601
7511585f2e6a
Beef-up tests for greater coverage and refcount checking.
Raymond Hettinger <python@rcn.com>
parents:
31436
diff
changeset
|
258 raise ZeroDivisionError |
|
39644
13d5e5f0e993
Restructure comparison dramatically. There is no longer a default
Guido van Rossum <guido@python.org>
parents:
37739
diff
changeset
|
259 __gt__ = __lt__ |
|
13d5e5f0e993
Restructure comparison dramatically. There is no longer a default
Guido van Rossum <guido@python.org>
parents:
37739
diff
changeset
|
260 __le__ = __lt__ |
|
13d5e5f0e993
Restructure comparison dramatically. There is no longer a default
Guido van Rossum <guido@python.org>
parents:
37739
diff
changeset
|
261 __ge__ = __lt__ |
|
13d5e5f0e993
Restructure comparison dramatically. There is no longer a default
Guido van Rossum <guido@python.org>
parents:
37739
diff
changeset
|
262 __eq__ = __lt__ |
|
13d5e5f0e993
Restructure comparison dramatically. There is no longer a default
Guido van Rossum <guido@python.org>
parents:
37739
diff
changeset
|
263 __ne__ = __lt__ |
|
33601
7511585f2e6a
Beef-up tests for greater coverage and refcount checking.
Raymond Hettinger <python@rcn.com>
parents:
31436
diff
changeset
|
264 |
|
81346
f32cb5389a4b
#16897: test_bisect now works with unittest test discovery. Initial patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
80133
diff
changeset
|
265 class TestErrorHandling: |
|
33601
7511585f2e6a
Beef-up tests for greater coverage and refcount checking.
Raymond Hettinger <python@rcn.com>
parents:
31436
diff
changeset
|
266 def test_non_sequence(self): |
|
45495
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
267 for f in (self.module.bisect_left, self.module.bisect_right, |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
268 self.module.insort_left, self.module.insort_right): |
|
33601
7511585f2e6a
Beef-up tests for greater coverage and refcount checking.
Raymond Hettinger <python@rcn.com>
parents:
31436
diff
changeset
|
269 self.assertRaises(TypeError, f, 10, 10) |
|
7511585f2e6a
Beef-up tests for greater coverage and refcount checking.
Raymond Hettinger <python@rcn.com>
parents:
31436
diff
changeset
|
270 |
|
7511585f2e6a
Beef-up tests for greater coverage and refcount checking.
Raymond Hettinger <python@rcn.com>
parents:
31436
diff
changeset
|
271 def test_len_only(self): |
|
45495
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
272 for f in (self.module.bisect_left, self.module.bisect_right, |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
273 self.module.insort_left, self.module.insort_right): |
|
37739
fb2aff1862e4
Fix test_bisect in the same way as test_itertools: iter() blows up a lot
Thomas Wouters <thomas@python.org>
parents:
35699
diff
changeset
|
274 self.assertRaises(TypeError, f, LenOnly(), 10) |
|
33601
7511585f2e6a
Beef-up tests for greater coverage and refcount checking.
Raymond Hettinger <python@rcn.com>
parents:
31436
diff
changeset
|
275 |
|
7511585f2e6a
Beef-up tests for greater coverage and refcount checking.
Raymond Hettinger <python@rcn.com>
parents:
31436
diff
changeset
|
276 def test_get_only(self): |
|
45495
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
277 for f in (self.module.bisect_left, self.module.bisect_right, |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
278 self.module.insort_left, self.module.insort_right): |
|
37739
fb2aff1862e4
Fix test_bisect in the same way as test_itertools: iter() blows up a lot
Thomas Wouters <thomas@python.org>
parents:
35699
diff
changeset
|
279 self.assertRaises(TypeError, f, GetOnly(), 10) |
|
33601
7511585f2e6a
Beef-up tests for greater coverage and refcount checking.
Raymond Hettinger <python@rcn.com>
parents:
31436
diff
changeset
|
280 |
|
33602
7d6679ee39f9
Rename test for comparision errors.
Raymond Hettinger <python@rcn.com>
parents:
33601
diff
changeset
|
281 def test_cmp_err(self): |
|
33601
7511585f2e6a
Beef-up tests for greater coverage and refcount checking.
Raymond Hettinger <python@rcn.com>
parents:
31436
diff
changeset
|
282 seq = [CmpErr(), CmpErr(), CmpErr()] |
|
45495
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
283 for f in (self.module.bisect_left, self.module.bisect_right, |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
284 self.module.insort_left, self.module.insort_right): |
|
33601
7511585f2e6a
Beef-up tests for greater coverage and refcount checking.
Raymond Hettinger <python@rcn.com>
parents:
31436
diff
changeset
|
285 self.assertRaises(ZeroDivisionError, f, seq, 10) |
|
7511585f2e6a
Beef-up tests for greater coverage and refcount checking.
Raymond Hettinger <python@rcn.com>
parents:
31436
diff
changeset
|
286 |
|
7511585f2e6a
Beef-up tests for greater coverage and refcount checking.
Raymond Hettinger <python@rcn.com>
parents:
31436
diff
changeset
|
287 def test_arg_parsing(self): |
|
45495
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
288 for f in (self.module.bisect_left, self.module.bisect_right, |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
289 self.module.insort_left, self.module.insort_right): |
|
33601
7511585f2e6a
Beef-up tests for greater coverage and refcount checking.
Raymond Hettinger <python@rcn.com>
parents:
31436
diff
changeset
|
290 self.assertRaises(TypeError, f, 10) |
|
7511585f2e6a
Beef-up tests for greater coverage and refcount checking.
Raymond Hettinger <python@rcn.com>
parents:
31436
diff
changeset
|
291 |
|
81346
f32cb5389a4b
#16897: test_bisect now works with unittest test discovery. Initial patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
80133
diff
changeset
|
292 class TestErrorHandlingPython(TestErrorHandling, unittest.TestCase): |
|
45495
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
293 module = py_bisect |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
294 |
|
81346
f32cb5389a4b
#16897: test_bisect now works with unittest test discovery. Initial patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
80133
diff
changeset
|
295 class TestErrorHandlingC(TestErrorHandling, unittest.TestCase): |
|
45495
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
296 module = c_bisect |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45302
diff
changeset
|
297 |
|
33601
7511585f2e6a
Beef-up tests for greater coverage and refcount checking.
Raymond Hettinger <python@rcn.com>
parents:
31436
diff
changeset
|
298 #============================================================================== |
|
7511585f2e6a
Beef-up tests for greater coverage and refcount checking.
Raymond Hettinger <python@rcn.com>
parents:
31436
diff
changeset
|
299 |
|
81346
f32cb5389a4b
#16897: test_bisect now works with unittest test discovery. Initial patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
80133
diff
changeset
|
300 class TestDocExample: |
|
f32cb5389a4b
#16897: test_bisect now works with unittest test discovery. Initial patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
80133
diff
changeset
|
301 def test_grades(self): |
|
f32cb5389a4b
#16897: test_bisect now works with unittest test discovery. Initial patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
80133
diff
changeset
|
302 def grade(score, breakpoints=[60, 70, 80, 90], grades='FDCBA'): |
|
f32cb5389a4b
#16897: test_bisect now works with unittest test discovery. Initial patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
80133
diff
changeset
|
303 i = self.module.bisect(breakpoints, score) |
|
f32cb5389a4b
#16897: test_bisect now works with unittest test discovery. Initial patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
80133
diff
changeset
|
304 return grades[i] |
|
27267
b744508d5b12
Added doctest for examples in the library reference.
Raymond Hettinger <python@rcn.com>
parents:
27266
diff
changeset
|
305 |
|
81346
f32cb5389a4b
#16897: test_bisect now works with unittest test discovery. Initial patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
80133
diff
changeset
|
306 result = [grade(score) for score in [33, 99, 77, 70, 89, 90, 100]] |
|
f32cb5389a4b
#16897: test_bisect now works with unittest test discovery. Initial patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
80133
diff
changeset
|
307 self.assertEqual(result, ['F', 'A', 'C', 'C', 'B', 'A', 'A']) |
|
27267
b744508d5b12
Added doctest for examples in the library reference.
Raymond Hettinger <python@rcn.com>
parents:
27266
diff
changeset
|
308 |
|
81346
f32cb5389a4b
#16897: test_bisect now works with unittest test discovery. Initial patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
80133
diff
changeset
|
309 def test_colors(self): |
|
f32cb5389a4b
#16897: test_bisect now works with unittest test discovery. Initial patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
80133
diff
changeset
|
310 data = [('red', 5), ('blue', 1), ('yellow', 8), ('black', 0)] |
|
f32cb5389a4b
#16897: test_bisect now works with unittest test discovery. Initial patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
80133
diff
changeset
|
311 data.sort(key=lambda r: r[1]) |
|
f32cb5389a4b
#16897: test_bisect now works with unittest test discovery. Initial patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
80133
diff
changeset
|
312 keys = [r[1] for r in data] |
|
f32cb5389a4b
#16897: test_bisect now works with unittest test discovery. Initial patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
80133
diff
changeset
|
313 bisect_left = self.module.bisect_left |
|
f32cb5389a4b
#16897: test_bisect now works with unittest test discovery. Initial patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
80133
diff
changeset
|
314 self.assertEqual(data[bisect_left(keys, 0)], ('black', 0)) |
|
f32cb5389a4b
#16897: test_bisect now works with unittest test discovery. Initial patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
80133
diff
changeset
|
315 self.assertEqual(data[bisect_left(keys, 1)], ('blue', 1)) |
|
f32cb5389a4b
#16897: test_bisect now works with unittest test discovery. Initial patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
80133
diff
changeset
|
316 self.assertEqual(data[bisect_left(keys, 5)], ('red', 5)) |
|
f32cb5389a4b
#16897: test_bisect now works with unittest test discovery. Initial patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
80133
diff
changeset
|
317 self.assertEqual(data[bisect_left(keys, 8)], ('yellow', 8)) |
|
27267
b744508d5b12
Added doctest for examples in the library reference.
Raymond Hettinger <python@rcn.com>
parents:
27266
diff
changeset
|
318 |
|
81346
f32cb5389a4b
#16897: test_bisect now works with unittest test discovery. Initial patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
80133
diff
changeset
|
319 class TestDocExamplePython(TestDocExample, unittest.TestCase): |
|
f32cb5389a4b
#16897: test_bisect now works with unittest test discovery. Initial patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
80133
diff
changeset
|
320 module = py_bisect |
|
f32cb5389a4b
#16897: test_bisect now works with unittest test discovery. Initial patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
80133
diff
changeset
|
321 |
|
f32cb5389a4b
#16897: test_bisect now works with unittest test discovery. Initial patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
80133
diff
changeset
|
322 class TestDocExampleC(TestDocExample, unittest.TestCase): |
|
f32cb5389a4b
#16897: test_bisect now works with unittest test discovery. Initial patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
80133
diff
changeset
|
323 module = c_bisect |
|
27267
b744508d5b12
Added doctest for examples in the library reference.
Raymond Hettinger <python@rcn.com>
parents:
27266
diff
changeset
|
324 |
|
27266
a9ddadf789ea
Convert to unittest format so that more tests can be added cleanly.
Raymond Hettinger <python@rcn.com>
parents:
24442
diff
changeset
|
325 #------------------------------------------------------------------------------ |
|
a9ddadf789ea
Convert to unittest format so that more tests can be added cleanly.
Raymond Hettinger <python@rcn.com>
parents:
24442
diff
changeset
|
326 |
|
a9ddadf789ea
Convert to unittest format so that more tests can be added cleanly.
Raymond Hettinger <python@rcn.com>
parents:
24442
diff
changeset
|
327 if __name__ == "__main__": |
|
81346
f32cb5389a4b
#16897: test_bisect now works with unittest test discovery. Initial patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
80133
diff
changeset
|
328 unittest.main() |
