def testPrintRejectsMarkerNotInLastColumn(self, constructor): marker = constructor([ ('aa', 'aaa', 'a'), ('bbbb', constructor([('ab', 'cd')]), 'bb'), ]) with io.StringIO() as out, self.assertRaises(TypeError): marker.Print(out, 0, cp.ColumnWidths(row=('4444', '333', '22')))
def testPrintIncludesSeparator(self): labeled = cp.Labeled([ ('aa', 'aaa'), ('bbbb', 'bb'), ('ccc', 'cc'), ]) with io.StringIO() as out: labeled.Print(out, 0, cp.ColumnWidths(row=('55555', '333'))) self.assertEqual(out.getvalue(), textwrap.dedent("""\ aa: aaa bbbb: bb ccc: cc """))
def testPrintSkipsFollowedByEmpty(self): labeled = cp.Labeled([ ('aa', 'aaa'), ('bbbb', 'bb'), ('cc', ''), ('ddd', 'dd'), ]) with io.StringIO() as out: labeled.Print(out, 0, cp.ColumnWidths(row=('55555', '333'))) self.assertEqual(out.getvalue(), textwrap.dedent("""\ aa: aaa bbbb: bb ddd: dd """))
def testPrintWithNonMarkerValues(self, constructor): marker = constructor([ 'line 1', 'line 2', 'line 3', ]) with io.StringIO() as out: marker.Print(out, 0, cp.ColumnWidths()) self.assertEqual( out.getvalue(), textwrap.dedent("""\ line 1 line 2 line 3 """))
def testPrintSkipsEmpty(self, constructor): marker = constructor([ ('aa', 'aaa', 'a'), ('bbbb', 'bb', 'bb'), (), ('ddd', 'dd', 'dd', 'dd'), ]) with io.StringIO() as out: marker.Print(out, 0, cp.ColumnWidths(row=('4444', '333', '22', '22'))) self.assertEqual( out.getvalue(), textwrap.dedent("""\ aa aaa a bbbb bb bb ddd dd dd dd """))
def testPrintIncludesFollowedByMarkerWithOutput(self): labeled = cp.Labeled([ ('aa', 'aaa'), ('bbbb', 'bb'), ('cc', cp.Labeled([('e', 'eee')])), ('ddd', 'dd'), ]) with io.StringIO() as out: labeled.Print(out, 0, cp.ColumnWidths(row=('55555', '333'))) self.assertEqual( out.getvalue(), textwrap.dedent("""\ aa: aaa bbbb: bb cc: e: eee ddd: dd """))
def testPrintWithIndentation(self, constructor): marker = constructor([ 'line 1', 'line 2', 'line 3', ]) with io.StringIO() as out: out.write('prefix\n') marker.Print(out, 2, cp.ColumnWidths()) out.write('suffix\n') self.assertEqual( out.getvalue(), textwrap.dedent("""\ prefix line 1 line 2 line 3 suffix """))
def testPrintNestedMarker(self, constructor): marker = constructor([ ('aa', 'aaa', 'a'), ('bbbb', 'bb', 'bb'), ('cc', constructor([ ('xxx', 'xx', 'x'), ('yyyy', 'yy', 'yyy') ])), ('ddd', 'dd', 'dd', 'dd'), ]) with io.StringIO() as out: marker.Print(out, 0, cp.ColumnWidths(row=('666666', '333', '22', '22'))) self.assertEqual(out.getvalue(), textwrap.dedent("""\ aa aaa a bbbb bb bb cc xxx xx x yyyy yy yyy ddd dd dd dd """))
def testOverridesColumnWidths(self): section = cp.Section([ 'line 1', 'line 2', cp.Table([ ('a', 'aaa', 'a'), ('bb', 'bb', 'b'), ]), 'line 3', ]) with io.StringIO() as out: section.Print(out, 0, cp.ColumnWidths(row=('1', '1', '1'))) self.assertEqual( out.getvalue(), textwrap.dedent("""\ line 1 line 2 a aaa a bb bb b line 3 """))
def testPrintWithMarkerValues(self, constructor): marker = constructor([ 'line 1', 'line 2', cp.Table([ ('a', 'aaa', 'a'), ('bb', 'bb', 'b'), ]), 'line 3', ]) with io.StringIO() as out: marker.Print(out, 0, cp.ColumnWidths(row=('22', '333', '1'))) self.assertEqual( out.getvalue(), textwrap.dedent("""\ line 1 line 2 a aaa a bb bb b line 3 """))
def testPrintIndents(self, constructor): marker = constructor([ ('aa', 'aaa', 'a'), ('bbbb', 'bb', 'bb'), ('cc',), ('ddd', 'dd', 'dd', 'dd'), ]) with io.StringIO() as out: out.write('prefix\n') marker.Print( out, 2, cp.ColumnWidths(row=('4444', '333', '22', '22'), indent_length=2)) out.write('suffix\n') self.assertEqual( out.getvalue(), textwrap.dedent("""\ prefix aa aaa a bbbb bb bb cc ddd dd dd dd suffix """))
def testRestrictsIndentLengthToMaxColumnWidth(self): column_widths = cp.ColumnWidths( row=('a', 'aa', 'aaaa'), indent_length=10, max_column_width=4) self.assertEqual(column_widths.widths, [4, 2, 0])
def testComputesNestedColumnWidthsNestedLessColumns(self): column_widths = cp.ColumnWidths( row=('bb', 'bbbbbb', 'bb', cp.Table([('ccc', 'cc')]))) self.assertEqual(column_widths.widths, [5, 6, 0])
def testRejectsNestedNotLastColumn(self): with self.assertRaises(TypeError): cp.ColumnWidths(row=('aaaa', cp.Table([('1', '2')]), 'bb'))
def testAddsIndentLengthToFirstColumnWidth(self): column_widths = cp.ColumnWidths(row=('a', 'aa', 'aaaa'), indent_length=2) self.assertEqual(column_widths.widths, [3, 2, 0])
def testReprIncludesWidths(self): column_widths = cp.ColumnWidths(row=('bb', 'bbb')) self.assertEqual(repr(column_widths), '<widths: [2, 0]>')
def testRestrictsWidthsToMaxColumnWidth(self): column_widths = cp.ColumnWidths( row=('a', 'aa', 'aaaa', 'a'), max_column_width=2) self.assertEqual(column_widths.widths, [1, 2, 2, 0])
def testMergeRetrictsToLargerMaxColumnWidth(self): widths1 = cp.ColumnWidths(row=('aaa', 'aaaa', 'a'), max_column_width=3) widths2 = cp.ColumnWidths(row=('bb', 'bbbbb', 'bb'), max_column_width=2) merged = widths1.Merge(widths2) self.assertEqual(merged.widths, [3, 3, 0])
def testMergeHandlesArgumentMoreColumns(self): widths1 = cp.ColumnWidths(row=('aaa', 'aaaa', 'aa')) widths2 = cp.ColumnWidths(row=('bb', 'bbbbb', 'bbbbbb', 'bb')) merged = widths1.Merge(widths2) self.assertEqual(merged.widths, [3, 5, 6, 0])
def testPassesMaxColumnWidthToNestedTables(self): column_widths = cp.ColumnWidths( row=('b', 'bbbb', 'bb', cp.Table([('c', 'c', 'cc')])), max_column_width=2) self.assertEqual(column_widths.widths, [2, 2, 0])
def testHandlesEmptyLastColumn(self): column_widths = cp.ColumnWidths(row=('aaa', 'bbbbb', 'c', '')) self.assertEqual(column_widths.widths, [3, 5, 1, 0])
def testHandlesEmptyInteriorColumn(self): column_widths = cp.ColumnWidths(row=('aaa', '', 'bbbbb', 'c')) self.assertEqual(column_widths.widths, [3, 0, 5, 0])
def testIgnoresEmptyRow(self): column_widths = cp.ColumnWidths(row=()) self.assertEqual(column_widths.widths, [])
def testComputesWidthsIgnoringLastColumn(self): column_widths = cp.ColumnWidths(row=('aaa', 'aa', 'aaaa', 'a')) self.assertEqual(column_widths.widths, [3, 2, 4, 0])
def testMergeTakesMaxWidthInEachColumn(self): widths1 = cp.ColumnWidths(row=('aaa', 'aaaa', 'a')) widths2 = cp.ColumnWidths(row=('bb', 'bbbbb', 'bb')) merged = widths1.Merge(widths2) self.assertEqual(merged.widths, [3, 5, 0])
def testSkipsEmptyLastColumnWhenSpecified(self): column_widths = cp.ColumnWidths(row=('aaa', 'bbbbb', ''), skip_empty=True) self.assertEqual(column_widths.widths, [3, 0, 0])
def testMergeSetsMaxColumnWidthToUnlimitedIfOneUnlimited(self): widths1 = cp.ColumnWidths(row=('aaa', 'aaaa', 'a')) widths2 = cp.ColumnWidths(row=('bb', 'bbbbb', 'bb'), max_column_width=2) merged = widths1.Merge(widths2) self.assertEqual(merged.widths, [3, 4, 0])
def testSkipsMultipleEmptyEndingColumnsWhenSpecified(self): column_widths = cp.ColumnWidths( row=('aaa', 'bbbbb', '', ''), skip_empty=True) self.assertEqual(column_widths.widths, [3, 0, 0, 0])
def testIncludesSeparatorWidth(self): column_widths = cp.ColumnWidths(row=('aaa', 'aa'), separator=':') self.assertEqual(column_widths.widths, [4, 0])
def testIncludesEmptyInteriorColumnsWhenSkipEmptySpecified(self): column_widths = cp.ColumnWidths( row=('aaa', '', 'bbbbb', 'c'), skip_empty=True) self.assertEqual(column_widths.widths, [3, 0, 5, 0])