Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit fb5b954

Browse files
committed
Forward port additional tests from 2.7 (issue #14829).
1 parent a103b96 commit fb5b954

1 file changed

Lines changed: 44 additions & 3 deletions

File tree

Lib/test/test_bisect.py

Lines changed: 44 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,28 @@
2323
import bisect as c_bisect
2424

2525

26+
class Range(object):
27+
"""A trivial range()-like object without any integer width limitations."""
28+
def __init__(self, start, stop):
29+
self.start = start
30+
self.stop = stop
31+
self.last_insert = None
32+
33+
def __len__(self):
34+
return self.stop - self.start
35+
36+
def __getitem__(self, idx):
37+
n = self.stop - self.start
38+
if idx < 0:
39+
idx += n
40+
if idx >= n:
41+
raise IndexError(idx)
42+
return self.start + idx
43+
44+
def insert(self, idx, item):
45+
self.last_insert = idx, item
46+
47+
2648
class TestBisect(unittest.TestCase):
2749
module = None
2850

@@ -125,9 +147,28 @@ def test_negative_lo(self):
125147
def test_large_range(self):
126148
# Issue 13496
127149
mod = self.module
128-
data = range(sys.maxsize-1)
129-
self.assertEqual(mod.bisect_left(data, sys.maxsize-3), sys.maxsize-3)
130-
self.assertEqual(mod.bisect_right(data, sys.maxsize-3), sys.maxsize-2)
150+
n = sys.maxsize
151+
data = range(n-1)
152+
self.assertEqual(mod.bisect_left(data, n-3), n-3)
153+
self.assertEqual(mod.bisect_right(data, n-3), n-2)
154+
self.assertEqual(mod.bisect_left(data, n-3, n-10, n), n-3)
155+
self.assertEqual(mod.bisect_right(data, n-3, n-10, n), n-2)
156+
157+
def test_large_pyrange(self):
158+
# Same as above, but without C-imposed limits on range() parameters
159+
mod = self.module
160+
n = sys.maxsize
161+
data = Range(0, n-1)
162+
self.assertEqual(mod.bisect_left(data, n-3), n-3)
163+
self.assertEqual(mod.bisect_right(data, n-3), n-2)
164+
self.assertEqual(mod.bisect_left(data, n-3, n-10, n), n-3)
165+
self.assertEqual(mod.bisect_right(data, n-3, n-10, n), n-2)
166+
x = n - 100
167+
mod.insort_left(data, x, x - 50, x + 50)
168+
self.assertEqual(data.last_insert, (x, x))
169+
x = n - 200
170+
mod.insort_right(data, x, x - 50, x + 50)
171+
self.assertEqual(data.last_insert, (x + 1, x))
131172

132173
def test_random(self, n=25):
133174
from random import randrange

0 commit comments

Comments
 (0)