[Python-checkins] python/nondist/sandbox/csv/test test_csv.py,1.26,1.27

montanaro@users.sourceforge.net montanaro@users.sourceforge.net
Mon, 10 Feb 2003 07:10:20 -0800


Update of /cvsroot/python/python/nondist/sandbox/csv/test
In directory sc8-pr-cvs1:/tmp/cvs-serv15640

Modified Files:
	test_csv.py 
Log Message:
add test for reading short rows (and filling in default values)


Index: test_csv.py
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/csv/test/test_csv.py,v
retrieving revision 1.26
retrieving revision 1.27
diff -C2 -d -r1.26 -r1.27
*** test_csv.py	10 Feb 2003 10:41:09 -0000	1.26
--- test_csv.py	10 Feb 2003 15:10:16 -0000	1.27
***************
*** 368,371 ****
--- 368,373 ----
  # Disabled, pending support in csv.utils module
  class TestDictFields(unittest.TestCase):
+     ### "long" means the row is longer than the number of fieldnames
+     ### "short" means there are fewer elements in the row than fieldnames
      def test_write_simple_dict(self):
          fileobj = StringIO()
***************
*** 379,396 ****
  
      def test_read_dict_fields(self):
!         reader = csv.DictReader(StringIO("1,2,abc\r\n"), dialect="excel",
                                  fieldnames=["f1", "f2", "f3"])
          self.assertEqual(reader.next(), {"f1": '1', "f2": '2', "f3": 'abc'})
  
!     def test_read_short(self):
          reader = csv.DictReader(StringIO("1,2,abc,4,5,6\r\n"),
                                  fieldnames=["f1", "f2"])
          self.assertEqual(reader.next(), {"f1": '1', "f2": '2'})
  
!     def test_read_short_with_rest(self):
          reader = csv.DictReader(StringIO("1,2,abc,4,5,6\r\n"),
                                  fieldnames=["f1", "f2"], rest="_rest")
          self.assertEqual(reader.next(), {"f1": '1', "f2": '2',
                                           "_rest": ["abc", "4", "5", "6"]})
  
  class TestArrayWrites(unittest.TestCase):
--- 381,408 ----
  
      def test_read_dict_fields(self):
!         reader = csv.DictReader(StringIO("1,2,abc\r\n"),
                                  fieldnames=["f1", "f2", "f3"])
          self.assertEqual(reader.next(), {"f1": '1', "f2": '2', "f3": 'abc'})
  
!     def test_read_long(self):
          reader = csv.DictReader(StringIO("1,2,abc,4,5,6\r\n"),
                                  fieldnames=["f1", "f2"])
          self.assertEqual(reader.next(), {"f1": '1', "f2": '2'})
  
!     def test_read_long_with_rest(self):
          reader = csv.DictReader(StringIO("1,2,abc,4,5,6\r\n"),
                                  fieldnames=["f1", "f2"], rest="_rest")
          self.assertEqual(reader.next(), {"f1": '1', "f2": '2',
                                           "_rest": ["abc", "4", "5", "6"]})
+ 
+     def test_read_short(self):
+         reader = csv.DictReader(["1,2,abc,4,5,6\r\n","1,2,abc\r\n"],
+                                 fieldnames="1 2 3 4 5 6".split(),
+                                 restval="DEFAULT")
+         self.assertEqual(reader.next(), {"1": '1', "2": '2', "3": 'abc',
+                                          "4": '4', "5": '5', "6": '6'})
+         self.assertEqual(reader.next(), {"1": '1', "2": '2', "3": 'abc',
+                                          "4": 'DEFAULT', "5": 'DEFAULT',
+                                          "6": 'DEFAULT'})
  
  class TestArrayWrites(unittest.TestCase):