예제 #1
0
    def test_read_columns(self):
        """Test basic column reading."""
        fn = self.filenames[0]
        
        # Get the first two columns. Both columns are of type int.
        col0, col1 = du.read_columns(fn, self.header_lines[fn], (int, int))
        self.assertEqual(col0, self.columns[fn][0])
        self.assertEqual(col1, self.columns[fn][1])

        # Read columns 1 and 3 and convert them to type
        # int and float, respectively. Skip the two header rows.
        col1, col3 = du.read_columns(fn, self.header_lines[fn], (int, float), (1,3))
        self.assertEqual(col1, self.columns[fn][1])
        self.assertEqual(col3, self.columns[fn][3])

        # Read only the second column. Note the use of tuples!
        col1, = du.read_columns(fn, self.header_lines[fn], (int,), (1,))
        self.assertEqual(col1, self.columns[fn][1])

        # A missing column should raise IndexError.
        fn = self.filenames[1]
        self.assertRaises(IndexError, du.read_columns,
                          fn, self.header_lines[fn], (int,float), (1,3))

        # Finding a float when int is expected should raise
        # ValueError.
        fn = self.filenames[2]
        self.assertRaises(ValueError, du.read_columns,
                          fn, self.header_lines[fn], (int,int), (0,1))
예제 #2
0
    def test_read_columns_fun(self):
        """Test column reading with conversion function."""
        fn = self.filenames[0]
        
        # Get the first two columns. Both columns are of type int.
        def col_fun(fields):
            return int(fields[0]), int(fields[1])
        col0, col1 = du.read_columns(fn, self.header_lines[fn], col_fun)
        self.assertEqual(col0, self.columns[fn][0])
        self.assertEqual(col1, self.columns[fn][1])

        # Read columns 1 and 3 and convert them to type
        # int and float, respectively. Skip the two header rows.
        def col_fun(fields):
            return int(fields[1]), float(fields[3])
        col1, col3 = du.read_columns(fn, self.header_lines[fn], col_fun)
        self.assertEqual(col1, self.columns[fn][1])
        self.assertEqual(col3, self.columns[fn][3])

        # Read only the second column. Note the use of tuples!
        def col_fun(fields):
            return int(fields[1]),
        col1, = du.read_columns(fn, self.header_lines[fn], col_fun)
        self.assertEqual(col1, self.columns[fn][1])