diff --git a/src/Spectre.Console/Widgets/Table/TableRenderer.cs b/src/Spectre.Console/Widgets/Table/TableRenderer.cs index c6f44df..d27326e 100644 --- a/src/Spectre.Console/Widgets/Table/TableRenderer.cs +++ b/src/Spectre.Console/Widgets/Table/TableRenderer.cs @@ -8,7 +8,7 @@ internal static class TableRenderer public static List Render(TableRendererContext context, List columnWidths) { // Can't render the table? - if (context.TableWidth <= 0 || context.TableWidth > context.MaxWidth || columnWidths.Any(c => c <= 0)) + if (context.TableWidth <= 0 || context.TableWidth > context.MaxWidth || columnWidths.Any(c => c < 0)) { return new List(new[] { new Segment("…", context.BorderStyle ?? Style.Plain) }); } @@ -23,12 +23,12 @@ internal static class TableRenderer // Get the list of cells for the row and calculate the cell height var cells = new List>(); - foreach (var (columnIndex, _, _, (rowWidth, cell)) in columnWidths.Zip(row).Enumerate()) + foreach (var (columnIndex, _, _, (columnWidth, cell)) in columnWidths.Zip(row).Enumerate()) { var justification = context.Columns[columnIndex].Alignment; var childContext = context.Options with { Justification = justification }; - var lines = Segment.SplitLines(cell.Render(childContext, rowWidth)); + var lines = Segment.SplitLines(cell.Render(childContext, columnWidth)); cellHeight = Math.Max(cellHeight, lines.Count); cells.Add(lines); } diff --git a/test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Empty_Column.Output.verified.txt b/test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Empty_Column.Output.verified.txt new file mode 100644 index 0000000..97dbe2f --- /dev/null +++ b/test/Spectre.Console.Tests/Expectations/Widgets/Table/Render_Empty_Column.Output.verified.txt @@ -0,0 +1,6 @@ +┌──┬───┐ +│ │ │ +├──┼───┤ +│ │ A │ +│ │ B │ +└──┴───┘ diff --git a/test/Spectre.Console.Tests/Unit/Widgets/Table/TableTests.cs b/test/Spectre.Console.Tests/Unit/Widgets/Table/TableTests.cs index a027658..a8fb908 100644 --- a/test/Spectre.Console.Tests/Unit/Widgets/Table/TableTests.cs +++ b/test/Spectre.Console.Tests/Unit/Widgets/Table/TableTests.cs @@ -573,4 +573,22 @@ public sealed class TableTests // Then return Verifier.Verify(console.Output); } + + [Fact] + [Expectation("Render_Empty_Column")] + public Task Should_Render_Empty_Column_Correctly() + { + // Given + var console = new TestConsole().Width(30); + var table = new Table(); + table.AddColumns(string.Empty, string.Empty); + table.AddRow(string.Empty, "A"); + table.AddRow(string.Empty, "B"); + + // When + console.Write(table); + + // Then + return Verifier.Verify(console.Output); + } }