public void TestFormatNoColumns()
 {
     Table table = new Table();
     table.Rows.Add();
     table.Rows.Add();
     IEnumerable<string > actual = Formatter.Format(table);
     MoreAssert.HasCount(2, actual);
     foreach(string line in actual)
     {
         MoreAssert.IsEmpty(line);
     }
 }
 public void TestFormat2x2()
 {
     Table table = new Table();
     table.Columns.Add("thing", typeof(int));
     table.Columns.Add("stuff", typeof(char));
     table.Rows.Add(1, 'a');
     table.Rows.Add(2, 'b');
     table.Rows.Add(3, 'c');
     IEnumerable<string > expected = new List<string> { "1 a", "2 b", "3 c", };
     IEnumerable<string > actual = Formatter.Format(table);
     MoreAssert.CollectionsEqual(expected, actual);
 }
 internal InnerFormatter(Table table, char leftBorder, char columnSeparator, char rightBorder, char topBorder, char bottomBorder, char corner)
 {
     if(table == null)
     {
         throw new ArgumentNullException("table");
     }
     Table = table;
     ColumnWidths = Table.GetColumnWidths().ToList();
     TopBorderChar = topBorder;
     BottomBorderChar = bottomBorder;
     LeftBorderChar = leftBorder;
     ColumnSeparatorChar = columnSeparator;
     RightBorderChar = rightBorder;
     CornerChar = corner;
 }
 private InnerFormatter GetFormatterFor(Table table)
 {
     if(table == null)
     {
         throw new ArgumentNullException("table");
     }
     return new InnerFormatter(table, LeftBorderChar, ColumnSeparatorChar, RightBorderChar, TopBorderChar, BottomBorderChar, CornerChar);
 }
 /// <summary>
 /// Get a row separator for the specified <see cref="Table" />.
 /// </summary>
 /// <param name="table">
 /// The <see cref="Table" /> for which to get the row separator.
 /// </param>
 /// <param name="separator">
 /// The character to use to separate the two.
 /// </param>
 /// <exception cref="ArgumentNullException">
 /// Thrown if <paramref name="table"/> is <see langword="null" />.
 /// </exception>
 public string GetRowSeparator(Table table, char separator)
 {
     if(table == null)
     {
         throw new ArgumentNullException("table");
     }
     return GetFormatterFor(table).GetRowSeparator(separator);
 }
 /// <summary>
 /// Format a <see cref="Table" /> to be printed on the console.
 /// </summary>
 /// <param name="table">
 /// The <see cref="Table" /> to format.
 /// </param>
 /// <exception cref="ArgumentNullException">
 /// Thrown if <paramref name="table"/> is <see langword="null" />.
 /// </exception>
 public IEnumerable<string> Format(Table table)
 {
     if(table == null)
     {
         throw new ArgumentNullException("table");
     }
     return GetFormatterFor(table).Format();
 }
 internal InnerFormatter(Table table, char leftBorder, char columnSeparator, char rightBorder, char topBorder, char bottomBorder, char bodyTop, char corner)
     : base(table, leftBorder, columnSeparator, rightBorder, bodyTop, bottomBorder, corner)
 {
     ColumnWidths = Table.GetColumnWidths(true);
     TopBorderChar = topBorder;
 }
 /// <summary>
 /// Format a <see cref="Table" /> to be pritned on the console.
 /// </summary>
 /// <param name="table">
 /// The sequence of values in the table.
 /// </param>
 /// <exception cref="ArgumentNullException">
 /// Thrown if <paramref name="values"/> is <see langword="null" />.
 /// </exception>
 public new IEnumerable<string> Format(Table table)
 {
     if(table == null)
     {
         throw new ArgumentNullException("table");
     }
     return new InnerFormatter(table, LeftBorderChar, ColumnSeparatorChar, RightBorderChar, TopBorderChar, BottomBorderChar, BodyTopChar, CornerChar).Format();
 }
 public void TestFormatNoRows()
 {
     Table table = new Table();
     table.Columns.Add("x");
     table.Columns.Add("y");
     IEnumerable<string > actual = Formatter.Format(table);
     MoreAssert.IsEmpty(actual);
     actual = FormatterT.Format(table);
     MoreAssert.HasCount(1, actual);
     Assert.AreEqual("+", actual.First());
     actual = FormatterTB.Format(table);
     MoreAssert.HasCount(2, actual);
     foreach(string line in actual)
     {
         Assert.AreEqual("-", line);
     }
 }
 public void TestGetRowSeparator()
 {
     Table table = new Table();
     table.Columns.Add("thing", typeof(string));
     table.Columns.Add("stuff", typeof(string));
     table.Rows.Add("xx", "zzz");
     table.Rows.Add("walrus", "thingything");
     TableFormatter formatter = new TableFormatter('\0', '|', '\0', '\0', '\0', '+');
     Assert.AreEqual("------+-----------", formatter.GetRowSeparator(table, '-'));
     formatter = new TableFormatter('|', '|', '\0', '\0', '\0', '+');
     Assert.AreEqual("+------+-----------", formatter.GetRowSeparator(table, '-'));
     formatter = new TableFormatter('\0', '|', '|', '\0', '\0', '+');
     Assert.AreEqual("------+-----------+", formatter.GetRowSeparator(table, '-'));
     formatter = new TableFormatter('|', '|', '|', '\0', '\0', '+');
     Assert.AreEqual("+------+-----------+", formatter.GetRowSeparator(table, '-'));
 }