(self)
| 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 |
nothing calls this directly
no test coverage detected