MCPcopy Index your code
hub / github.com/python/cpython / test_tee

Method test_tee

Lib/test/test_itertools.py:1271–1384  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

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

Callers

nothing calls this directly

Calls 11

listClass · 0.85
irangeFunction · 0.85
lzipFunction · 0.85
takeFunction · 0.85
shuffleMethod · 0.80
assertTrueMethod · 0.80
proxyMethod · 0.80
assertEqualMethod · 0.45
appendMethod · 0.45
assertRaisesMethod · 0.45
copyMethod · 0.45

Tested by

no test coverage detected