]> granicus.if.org Git - python/commitdiff
Improve test coverage.
authorRaymond Hettinger <python@rcn.com>
Wed, 29 Sep 2004 11:40:50 +0000 (11:40 +0000)
committerRaymond Hettinger <python@rcn.com>
Wed, 29 Sep 2004 11:40:50 +0000 (11:40 +0000)
Lib/test/test_enumerate.py
Lib/test/test_itertools.py

index 18c2bb9396660e1ee7b9dbeab3214c941f968039..0ed2b4c5c1f761a4651a8fe7c72309fb71df29fc 100644 (file)
@@ -145,6 +145,35 @@ class TestReversed(unittest.TestCase):
         # This is an implementation detail, not an interface requirement
         for s in ('hello', tuple('hello'), list('hello'), xrange(5)):
             self.assertEqual(len(reversed(s)), len(s))
+            r = reversed(s)
+            list(r)
+            self.assertEqual(len(r), 0)
+        class SeqWithWeirdLen:
+            called = False
+            def __len__(self):
+                if not self.called:
+                    self.called = True
+                    return 10
+                raise ZeroDivisionError
+            def __getitem__(self, index):
+                return index
+        r = reversed(SeqWithWeirdLen())
+        self.assertRaises(ZeroDivisionError, len, r)
+
+
+    def test_gc(self):
+        class Seq:
+            def __len__(self):
+                return 10
+            def __getitem__(self, index):
+                return index
+        s = Seq()
+        r = reversed(s)
+        s.r = r
+
+    def test_args(self):
+        self.assertRaises(TypeError, reversed)
+        self.assertRaises(TypeError, reversed, [], 'extra')
 
 def test_main(verbose=None):
     testclasses = (EnumerateTestCase, SubclassTestCase, TestEmpty, TestBig,
index 02f84b7e39820e57b7b37da7652fb0b77fc6dc62..aa809105479489dd87be6bb34c9928263a3ca92a 100644 (file)
@@ -420,6 +420,14 @@ class TestGC(unittest.TestCase):
         a = []
         self.makecycle(cycle([a]*2), a)
 
+    def test_dropwhile(self):
+        a = []
+        self.makecycle(dropwhile(bool, [0, a, a]), a)
+
+    def test_groupby(self):
+        a = []
+        self.makecycle(groupby([a]*2, lambda x:x), a)
+
     def test_ifilter(self):
         a = []
         self.makecycle(ifilter(lambda x:True, [a]*2), a)
@@ -440,10 +448,18 @@ class TestGC(unittest.TestCase):
         a = []
         self.makecycle(islice([a]*2, None), a)
 
+    def test_repeat(self):
+        a = []
+        self.makecycle(repeat(a), a)
+
     def test_starmap(self):
         a = []
         self.makecycle(starmap(lambda *t: t, [(a,a)]*2), a)
 
+    def test_takewhile(self):
+        a = []
+        self.makecycle(takewhile(bool, [1, 0, a, a]), a)
+
 def R(seqn):
     'Regular generator'
     for i in seqn: