Kaydet (Commit) 6aa1c3f4 authored tarafından Raymond Hettinger's avatar Raymond Hettinger

Let test_random cover the endpoints.

Strengthen slicing tests.
Improved variable names.
üst a9f18dc0
...@@ -87,15 +87,15 @@ class TestBisect(unittest.TestCase): ...@@ -87,15 +87,15 @@ class TestBisect(unittest.TestCase):
] ]
def test_precomputed(self): def test_precomputed(self):
for func, list, elt, expected in self.precomputedCases: for func, data, elem, expected in self.precomputedCases:
self.assertEqual(func(list, elt), expected) self.assertEqual(func(data, elem), expected)
def test_random(self, n=20): def test_random(self, n=25):
from random import randrange from random import randrange
for i in xrange(n): for i in xrange(n):
data = [randrange(0, n, 2) for j in xrange(i)] data = [randrange(0, n, 2) for j in xrange(i)]
data.sort() data.sort()
elem = randrange(n) elem = randrange(-1, n+1)
ip = bisect_left(data, elem) ip = bisect_left(data, elem)
if ip < len(data): if ip < len(data):
self.failUnless(elem <= data[ip]) self.failUnless(elem <= data[ip])
...@@ -108,11 +108,22 @@ class TestBisect(unittest.TestCase): ...@@ -108,11 +108,22 @@ class TestBisect(unittest.TestCase):
self.failUnless(data[ip-1] <= elem) self.failUnless(data[ip-1] <= elem)
def test_optionalSlicing(self): def test_optionalSlicing(self):
for func, list, elt, expected in self.precomputedCases: for func, data, elem, expected in self.precomputedCases:
lo = min(len(list), 1) for lo in xrange(4):
self.failUnless(func(list, elt, lo=lo) >= lo) lo = min(len(data), lo)
hi = min(len(list), 2) for hi in xrange(3,8):
self.failUnless(func(list, elt, hi=hi) <= hi) hi = min(len(data), hi)
ip = func(data, elem, lo, hi)
self.failUnless(lo <= ip <= hi)
if func is bisect_left and ip < hi:
self.failUnless(elem <= data[ip])
if func is bisect_left and ip > lo:
self.failUnless(data[ip-1] < elem)
if func is bisect_right and ip < hi:
self.failUnless(elem < data[ip])
if func is bisect_right and ip > lo:
self.failUnless(data[ip-1] <= elem)
self.assertEqual(ip, max(lo, min(hi, expected)))
def test_backcompatibility(self): def test_backcompatibility(self):
self.assertEqual(bisect, bisect_right) self.assertEqual(bisect, bisect_right)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment