Changeset 391 for python/trunk/Lib/test/test_bisect.py
- Timestamp:
- Mar 19, 2014, 11:31:01 PM (11 years ago)
- Location:
- python/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
python/trunk
-
Property svn:mergeinfo
set to
/python/vendor/Python-2.7.6 merged eligible /python/vendor/current merged eligible
-
Property svn:mergeinfo
set to
-
python/trunk/Lib/test/test_bisect.py
r2 r391 22 22 # This is now the module with the C implementation. 23 23 import bisect as c_bisect 24 25 26 class Range(object): 27 """A trivial xrange()-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 24 46 25 47 … … 123 145 self.assertRaises(ValueError, mod.insort_right, [1, 2, 3], 5, -1, 3), 124 146 147 def test_large_range(self): 148 # Issue 13496 149 mod = self.module 150 n = sys.maxsize 151 try: 152 data = xrange(n-1) 153 except OverflowError: 154 self.skipTest("can't create a xrange() object of size `sys.maxsize`") 155 self.assertEqual(mod.bisect_left(data, n-3), n-3) 156 self.assertEqual(mod.bisect_right(data, n-3), n-2) 157 self.assertEqual(mod.bisect_left(data, n-3, n-10, n), n-3) 158 self.assertEqual(mod.bisect_right(data, n-3, n-10, n), n-2) 159 160 def test_large_pyrange(self): 161 # Same as above, but without C-imposed limits on range() parameters 162 mod = self.module 163 n = sys.maxsize 164 data = Range(0, n-1) 165 self.assertEqual(mod.bisect_left(data, n-3), n-3) 166 self.assertEqual(mod.bisect_right(data, n-3), n-2) 167 self.assertEqual(mod.bisect_left(data, n-3, n-10, n), n-3) 168 self.assertEqual(mod.bisect_right(data, n-3, n-10, n), n-2) 169 x = n - 100 170 mod.insort_left(data, x, x - 50, x + 50) 171 self.assertEqual(data.last_insert, (x, x)) 172 x = n - 200 173 mod.insort_right(data, x, x - 50, x + 50) 174 self.assertEqual(data.last_insert, (x + 1, x)) 175 125 176 def test_random(self, n=25): 126 177 from random import randrange … … 131 182 ip = self.module.bisect_left(data, elem) 132 183 if ip < len(data): 133 self. failUnless(elem <= data[ip])184 self.assertTrue(elem <= data[ip]) 134 185 if ip > 0: 135 self. failUnless(data[ip-1] < elem)186 self.assertTrue(data[ip-1] < elem) 136 187 ip = self.module.bisect_right(data, elem) 137 188 if ip < len(data): 138 self. failUnless(elem < data[ip])189 self.assertTrue(elem < data[ip]) 139 190 if ip > 0: 140 self. failUnless(data[ip-1] <= elem)191 self.assertTrue(data[ip-1] <= elem) 141 192 142 193 def test_optionalSlicing(self): … … 147 198 hi = min(len(data), hi) 148 199 ip = func(data, elem, lo, hi) 149 self. failUnless(lo <= ip <= hi)200 self.assertTrue(lo <= ip <= hi) 150 201 if func is self.module.bisect_left and ip < hi: 151 self. failUnless(elem <= data[ip])202 self.assertTrue(elem <= data[ip]) 152 203 if func is self.module.bisect_left and ip > lo: 153 self. failUnless(data[ip-1] < elem)204 self.assertTrue(data[ip-1] < elem) 154 205 if func is self.module.bisect_right and ip < hi: 155 self. failUnless(elem < data[ip])206 self.assertTrue(elem < data[ip]) 156 207 if func is self.module.bisect_right and ip > lo: 157 self. failUnless(data[ip-1] <= elem)208 self.assertTrue(data[ip-1] <= elem) 158 209 self.assertEqual(ip, max(lo, min(hi, expected))) 159 210 … … 192 243 f = self.module.insort_right 193 244 f(insorted, digit) 194 self.assertEqual(sorted(insorted), insorted)245 self.assertEqual(sorted(insorted), insorted) 195 246 196 247 def test_backcompatibility(self):
Note:
See TracChangeset
for help on using the changeset viewer.