Improve test coverage.
diff --git a/Lib/test/test_enumerate.py b/Lib/test/test_enumerate.py
index 18c2bb9..0ed2b4c 100644
--- a/Lib/test/test_enumerate.py
+++ b/Lib/test/test_enumerate.py
@@ -145,6 +145,35 @@
         # 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,
diff --git a/Lib/test/test_itertools.py b/Lib/test/test_itertools.py
index 02f84b7..aa80910 100644
--- a/Lib/test/test_itertools.py
+++ b/Lib/test/test_itertools.py
@@ -420,6 +420,14 @@
         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 @@
         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: