(self)
| 1269 | self.assertRaises(ValueError, next, dropwhile(errfunc, [(4,5)])) |
| 1270 | |
| 1271 | def test_tee(self): |
| 1272 | n = 200 |
| 1273 | |
| 1274 | a, b = tee([]) # test empty iterator |
| 1275 | self.assertEqual(list(a), []) |
| 1276 | self.assertEqual(list(b), []) |
| 1277 | |
| 1278 | a, b = tee(irange(n)) # test 100% interleaved |
| 1279 | self.assertEqual(lzip(a,b), lzip(range(n), range(n))) |
| 1280 | |
| 1281 | a, b = tee(irange(n)) # test 0% interleaved |
| 1282 | self.assertEqual(list(a), list(range(n))) |
| 1283 | self.assertEqual(list(b), list(range(n))) |
| 1284 | |
| 1285 | a, b = tee(irange(n)) # test dealloc of leading iterator |
| 1286 | for i in range(100): |
| 1287 | self.assertEqual(next(a), i) |
| 1288 | del a |
| 1289 | self.assertEqual(list(b), list(range(n))) |
| 1290 | |
| 1291 | a, b = tee(irange(n)) # test dealloc of trailing iterator |
| 1292 | for i in range(100): |
| 1293 | self.assertEqual(next(a), i) |
| 1294 | del b |
| 1295 | self.assertEqual(list(a), list(range(100, n))) |
| 1296 | |
| 1297 | for j in range(5): # test randomly interleaved |
| 1298 | order = [0]*n + [1]*n |
| 1299 | random.shuffle(order) |
| 1300 | lists = ([], []) |
| 1301 | its = tee(irange(n)) |
| 1302 | for i in order: |
| 1303 | value = next(its[i]) |
| 1304 | lists[i].append(value) |
| 1305 | self.assertEqual(lists[0], list(range(n))) |
| 1306 | self.assertEqual(lists[1], list(range(n))) |
| 1307 | |
| 1308 | # test argument format checking |
| 1309 | self.assertRaises(TypeError, tee) |
| 1310 | self.assertRaises(TypeError, tee, 3) |
| 1311 | self.assertRaises(TypeError, tee, [1,2], 'x') |
| 1312 | self.assertRaises(TypeError, tee, [1,2], 3, 'x') |
| 1313 | |
| 1314 | # tee object should be instantiable |
| 1315 | a, b = tee('abc') |
| 1316 | c = type(a)('def') |
| 1317 | self.assertEqual(list(c), list('def')) |
| 1318 | |
| 1319 | # test long-lagged and multi-way split |
| 1320 | a, b, c = tee(range(2000), 3) |
| 1321 | for i in range(100): |
| 1322 | self.assertEqual(next(a), i) |
| 1323 | self.assertEqual(list(b), list(range(2000))) |
| 1324 | self.assertEqual([next(c), next(c)], list(range(2))) |
| 1325 | self.assertEqual(list(a), list(range(100,2000))) |
| 1326 | self.assertEqual(list(c), list(range(2,2000))) |
| 1327 | |
| 1328 | # test values of n |
nothing calls this directly
no test coverage detected