summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_itertools.py
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2008-02-23 02:20:41 (GMT)
committerRaymond Hettinger <python@rcn.com>2008-02-23 02:20:41 (GMT)
commit73d796324242dc2164a0b5943bd08d6252a28651 (patch)
tree3c1770c2ea596e727e3c69604033016d02ea1574 /Lib/test/test_itertools.py
parentc5705a823bb200b48417677f8ef3ca6833ace4bb (diff)
downloadcpython-73d796324242dc2164a0b5943bd08d6252a28651.zip
cpython-73d796324242dc2164a0b5943bd08d6252a28651.tar.gz
cpython-73d796324242dc2164a0b5943bd08d6252a28651.tar.bz2
Improve the implementation of itertools.product()
* Fix-up issues pointed-out by Neal Norwitz. * Add extensive comments. * The lz->result variable is now a tuple instead of a list. * Use fast macro getitem/setitem calls so most code is in-line. * Re-use the result tuple if available (modify in-place instead of copy).
Diffstat (limited to 'Lib/test/test_itertools.py')
-rw-r--r--Lib/test/test_itertools.py3
1 files changed, 3 insertions, 0 deletions
diff --git a/Lib/test/test_itertools.py b/Lib/test/test_itertools.py
index e65bba7..f5dd069 100644
--- a/Lib/test/test_itertools.py
+++ b/Lib/test/test_itertools.py
@@ -274,6 +274,9 @@ class TestBasicOps(unittest.TestCase):
args = map(iter, args)
self.assertEqual(len(list(product(*args))), n)
+ # Test implementation detail: tuple re-use
+ self.assertEqual(len(set(map(id, product('abc', 'def')))), 1)
+ self.assertNotEqual(len(set(map(id, list(product('abc', 'def'))))), 1)
def test_repeat(self):
self.assertEqual(zip(xrange(3),repeat('a')),