MCPcopy Index your code
hub / github.com/RustPython/RustPython / test_tee

Method test_tee

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

Source from the content-addressed store, hash-verified

1221
1222 @unittest.expectedFailure # TODO: RUSTPYTHON
1223 def test_tee(self):
1224 n = 200
1225
1226 a, b = tee([]) # test empty iterator
1227 self.assertEqual(list(a), [])
1228 self.assertEqual(list(b), [])
1229
1230 a, b = tee(irange(n)) # test 100% interleaved
1231 self.assertEqual(lzip(a,b), lzip(range(n), range(n)))
1232
1233 a, b = tee(irange(n)) # test 0% interleaved
1234 self.assertEqual(list(a), list(range(n)))
1235 self.assertEqual(list(b), list(range(n)))
1236
1237 a, b = tee(irange(n)) # test dealloc of leading iterator
1238 for i in range(100):
1239 self.assertEqual(next(a), i)
1240 del a
1241 self.assertEqual(list(b), list(range(n)))
1242
1243 a, b = tee(irange(n)) # test dealloc of trailing iterator
1244 for i in range(100):
1245 self.assertEqual(next(a), i)
1246 del b
1247 self.assertEqual(list(a), list(range(100, n)))
1248
1249 for j in range(5): # test randomly interleaved
1250 order = [0]*n + [1]*n
1251 random.shuffle(order)
1252 lists = ([], [])
1253 its = tee(irange(n))
1254 for i in order:
1255 value = next(its[i])
1256 lists[i].append(value)
1257 self.assertEqual(lists[0], list(range(n)))
1258 self.assertEqual(lists[1], list(range(n)))
1259
1260 # test argument format checking
1261 self.assertRaises(TypeError, tee)
1262 self.assertRaises(TypeError, tee, 3)
1263 self.assertRaises(TypeError, tee, [1,2], 'x')
1264 self.assertRaises(TypeError, tee, [1,2], 3, 'x')
1265
1266 # tee object should be instantiable
1267 a, b = tee('abc')
1268 c = type(a)('def')
1269 self.assertEqual(list(c), list('def'))
1270
1271 # test long-lagged and multi-way split
1272 a, b, c = tee(range(2000), 3)
1273 for i in range(100):
1274 self.assertEqual(next(a), i)
1275 self.assertEqual(list(b), list(range(2000)))
1276 self.assertEqual([next(c), next(c)], list(range(2)))
1277 self.assertEqual(list(a), list(range(100,2000)))
1278 self.assertEqual(list(c), list(range(2,2000)))
1279
1280 # test values of n

Callers

nothing calls this directly

Calls 14

listClass · 0.85
irangeFunction · 0.85
lzipFunction · 0.85
nextFunction · 0.85
lenFunction · 0.85
getattrFunction · 0.85
takeFunction · 0.85
shuffleMethod · 0.80
assertTrueMethod · 0.80
proxyMethod · 0.80
assertEqualMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected