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])))
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))
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()))
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')
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}])
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()))
def testHeaderLines(self): formatter = table_formatter.PrettyFormatter() formatter.AddColumns(('a', 'b')) formatter.AddRow(['really long string', '']) self.assertEqual(['| a | b |'], list(formatter.HeaderLines()))