コード例 #1
0
 def testFormatRow(self):
     formatter = table_formatter.PrettyFormatter()
     formatter.AddColumns(('one', 'two'))
     formatter.AddRow(['a', 'b'])
     self.assertEqual(['| a   | b   |'],
                      list(formatter.FormatRow(formatter.rows[0], 1)))
     formatter.AddRow(['a', 'b\nc'])
     self.assertEqual([
         '| a   | b   |',
         '|     | c   |',
     ], list(formatter.FormatRow(formatter.rows[1], 2)))
     self.assertRaises(table_formatter.FormatterException,
                       formatter.FormatRow, formatter.rows[1], 1)
     formatter.AddRow(['a', '\nbbbbbb\nc'])
     self.assertEqual([
         '| a   |        |',
         '|     | bbbbbb |',
         '|     | c      |',
     ], list(formatter.FormatRow(formatter.rows[2], 3)))
     self.assertEqual([
         '| a   |      |',
         '|     | b... |',
         '|     | c    |',
     ], list(formatter.FormatRow(formatter.rows[2], 3, column_widths=[3,
                                                                      4])))
コード例 #2
0
    def testPrintEmptyTable(self):
        formatter = table_formatter.PrettyFormatter(
            skip_header_when_empty=False)
        formatter.AddColumns(('a', 'b'))
        table_repr = '\n'.join(
            ('+---+---+', '| a | b |', '+---+---+', '+---+---+'))
        self.assertEquals(table_repr, str(formatter))

        formatter = table_formatter.PrettyFormatter()
        formatter.AddColumns(('a', 'b'))
        self.assertEquals(table_repr, str(formatter))

        formatter = table_formatter.PrettyFormatter(
            skip_header_when_empty=True)
        formatter.AddColumns(('a', 'b'))
        self.assertEquals('', str(formatter))
コード例 #3
0
 def testFormatHeader(self):
     formatter = table_formatter.PrettyFormatter()
     formatter.AddColumns(('a', 'bcd\nefgh'))
     formatter.AddRow(['really long string', ''])
     self.assertEqual([
         '+--------------------+------+', '|         a          | bcd  |',
         '|                    | efgh |', '+--------------------+------+'
     ], list(formatter.FormatHeader()))
コード例 #4
0
 def testAddColumn(self):
     formatter = table_formatter.PrettyFormatter()
     formatter.AddColumn('abc\ndef', align='r')
     self.assertEqual([3], formatter.column_widths)
     self.assertEqual(2, formatter.header_height)
     self.assertRaises(table_formatter.FormatterException,
                       formatter.AddColumn,
                       'bad',
                       align='d')
     formatter.AddRow([3])
     self.assertRaises(table_formatter.FormatterException,
                       formatter.AddColumn, 'anything')
コード例 #5
0
 def testAddRow(self):
     formatter = table_formatter.PrettyFormatter()
     formatter.AddColumns(('a', 'b'))
     formatter.AddRow(['foo', 'x'])
     self.assertLen(formatter, 1)
     self.assertEqual([3, 1], formatter.column_widths)
     self.assertEqual([1], formatter.row_heights)
     formatter.AddRow(['foo\nbar', 'xxxxxxx'])
     self.assertLen(formatter, 2)
     self.assertEqual([3, 7], formatter.column_widths)
     self.assertEqual([1, 2], formatter.row_heights)
     # Check that we can add non-string entries.
     formatter.AddRow([3, {'a': 5}])
コード例 #6
0
    def testFormatRowsEastAsian(self):
        formatter = table_formatter.PrettyFormatter()
        formatter.AddColumns(('a'))
        formatter.AddRow([u'English'])
        formatter.AddRow([u'中文 Chinese'])
        formatter.AddRow([u'日本語 Japanese'])

        # Note that the rows do not line up when viewed in a browser. But when they
        # are displayed in a terminal, where one Chinese/Japanese character takes up
        # the space of exactly 2 Latin letters, they will line up perfectly.
        self.assertEqual([
            u'| English         |',
            u'| 中文 Chinese    |',
            u'| 日本語 Japanese |',
        ], list(formatter.FormatRows()))
コード例 #7
0
 def testHeaderLines(self):
     formatter = table_formatter.PrettyFormatter()
     formatter.AddColumns(('a', 'b'))
     formatter.AddRow(['really long string', ''])
     self.assertEqual(['|         a          | b |'],
                      list(formatter.HeaderLines()))