From ef9bf4031a2f9ec674817274c93a90e0f21db114 Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Wed, 10 Mar 2004 10:10:42 +0000 Subject: Tidied up the implementations of reversed (including the custom ones for xrange and list objects). * list.__reversed__ now checks the length of the sequence object before calling PyList_GET_ITEM() because the mutable could have changed length. * all three implementations are now tranparent with respect to length and maintain the invariant len(it) == len(list(it)) even when the underlying sequence mutates. * __builtin__.reversed() now frees the underlying sequence as soon as the iterator is exhausted. * the code paths were rearranged so that the most common paths do not require a jump. --- Lib/test/test_enumerate.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'Lib/test/test_enumerate.py') diff --git a/Lib/test/test_enumerate.py b/Lib/test/test_enumerate.py index 34bc71db24..200779fb98 100644 --- a/Lib/test/test_enumerate.py +++ b/Lib/test/test_enumerate.py @@ -143,8 +143,8 @@ class TestReversed(unittest.TestCase): def test_len(self): # This is an implementation detail, not an interface requirement - s = 'hello' - self.assertEqual(len(reversed(s)), len(s)) + for s in ('hello', tuple('hello'), list('hello'), xrange(5)): + self.assertEqual(len(reversed(s)), len(s)) def test_main(verbose=None): testclasses = (EnumerateTestCase, SubclassTestCase, TestEmpty, TestBig, -- cgit v1.2.1