[Python-checkins] CVS: python/dist/src/Lib/test test_iter.py,1.20,1.21

Tim Peters tim_one@users.sourceforge.net
Sat, 22 Sep 2001 21:06:07 -0700


Update of /cvsroot/python/python/dist/src/Lib/test
In directory usw-pr-cvs1:/tmp/cvs-serv18490/python/Lib/test

Modified Files:
	test_iter.py 
Log Message:
Generalize file.writelines() to allow iterable objects.


Index: test_iter.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_iter.py,v
retrieving revision 1.20
retrieving revision 1.21
diff -C2 -d -r1.20 -r1.21
*** test_iter.py	2001/09/20 21:33:42	1.20
--- test_iter.py	2001/09/23 04:06:04	1.21
***************
*** 642,645 ****
--- 642,698 ----
          self.assertRaises(ValueError, indexOf, iclass, -1)
  
+     # Test iterators with file.writelines().
+     def test_writelines(self):
+         f = file(TESTFN, "w")
+ 
+         try:
+             self.assertRaises(TypeError, f.writelines, None)
+             self.assertRaises(TypeError, f.writelines, 42)
+     
+             f.writelines(["1\n", "2\n"])
+             f.writelines(("3\n", "4\n"))
+             f.writelines({'5\n': None})
+             f.writelines({})
+ 
+             # Try a big chunk too.
+             class Iterator:
+                 def __init__(self, start, finish):
+                     self.start = start
+                     self.finish = finish
+                     self.i = self.start
+ 
+                 def next(self):
+                     if self.i >= self.finish:
+                         raise StopIteration
+                     result = str(self.i) + '\n'
+                     self.i += 1
+                     return result
+ 
+                 def __iter__(self):
+                     return self
+ 
+             class Whatever:
+                 def __init__(self, start, finish):
+                     self.start = start
+                     self.finish = finish
+ 
+                 def __iter__(self):
+                     return Iterator(self.start, self.finish)
+                     
+             f.writelines(Whatever(6, 6+2000))            
+             f.close()
+ 
+             f = file(TESTFN)
+             expected = [str(i) + "\n" for i in range(1, 2006)]
+             self.assertEqual(list(f), expected)
+             
+         finally:
+             f.close()
+             try:
+                 unlink(TESTFN)
+             except OSError:
+                 pass
+ 
+ 
      # Test iterators on RHS of unpacking assignments.
      def test_unpack_iter(self):