(self)
| 250 | self.assertRaises(IndexError, d.__getitem__, -1) |
| 251 | |
| 252 | def test_index(self): |
| 253 | for n in 1, 2, 30, 40, 200: |
| 254 | |
| 255 | d = deque(range(n)) |
| 256 | for i in range(n): |
| 257 | self.assertEqual(d.index(i), i) |
| 258 | |
| 259 | with self.assertRaises(ValueError): |
| 260 | d.index(n+1) |
| 261 | |
| 262 | # Test detection of mutation during iteration |
| 263 | d = deque(range(n)) |
| 264 | d[n//2] = MutateCmp(d, False) |
| 265 | with self.assertRaises(RuntimeError): |
| 266 | d.index(n) |
| 267 | |
| 268 | # Test detection of comparison exceptions |
| 269 | d = deque(range(n)) |
| 270 | d[n//2] = BadCmp() |
| 271 | with self.assertRaises(RuntimeError): |
| 272 | d.index(n) |
| 273 | |
| 274 | # Test start and stop arguments behavior matches list.index() |
| 275 | elements = 'ABCDEFGHI' |
| 276 | nonelement = 'Z' |
| 277 | d = deque(elements * 2) |
| 278 | s = list(elements * 2) |
| 279 | for start in range(-5 - len(s)*2, 5 + len(s) * 2): |
| 280 | for stop in range(-5 - len(s)*2, 5 + len(s) * 2): |
| 281 | for element in elements + 'Z': |
| 282 | try: |
| 283 | target = s.index(element, start, stop) |
| 284 | except ValueError: |
| 285 | with self.assertRaises(ValueError): |
| 286 | d.index(element, start, stop) |
| 287 | else: |
| 288 | self.assertEqual(d.index(element, start, stop), target) |
| 289 | |
| 290 | # Test large start argument |
| 291 | d = deque(range(0, 10000, 10)) |
| 292 | for step in range(100): |
| 293 | i = d.index(8500, 700) |
| 294 | self.assertEqual(d[i], 8500) |
| 295 | # Repeat test with a different internal offset |
| 296 | d.rotate() |
| 297 | |
| 298 | def test_index_bug_24913(self): |
| 299 | d = deque('A' * 3) |
nothing calls this directly
no test coverage detected