mirror of
https://github.com/spectreconsole/spectre.console.git
synced 2026-01-01 16:59:37 +01:00
Add padder widget
This commit adds a padder can be use to pad other IRenderable objects such as tables, panels, grids, text, etc.
This commit is contained in:
committed by
Patrik Svensson
parent
314456ca17
commit
7d6104ace4
@@ -190,9 +190,9 @@ namespace Spectre.Console.Tests.Unit
|
||||
// Given
|
||||
var console = new PlainConsole(width: 80);
|
||||
var grid = new Grid();
|
||||
grid.AddColumn(new GridColumn { Padding = new Padding(3, 0) });
|
||||
grid.AddColumn(new GridColumn { Padding = new Padding(0, 0) });
|
||||
grid.AddColumn(new GridColumn { Padding = new Padding(0, 3) });
|
||||
grid.AddColumn(new GridColumn { Padding = new Padding(3, 0, 0, 0) });
|
||||
grid.AddColumn(new GridColumn { Padding = new Padding(0, 0, 0, 0) });
|
||||
grid.AddColumn(new GridColumn { Padding = new Padding(0, 0, 3, 0) });
|
||||
grid.AddRow("Foo", "Bar", "Baz");
|
||||
grid.AddRow("Qux", "Corgi", "Waldo");
|
||||
grid.AddRow("Grault", "Garply", "Fred");
|
||||
@@ -213,7 +213,7 @@ namespace Spectre.Console.Tests.Unit
|
||||
var console = new PlainConsole(width: 80);
|
||||
var grid = new Grid();
|
||||
grid.AddColumn(new GridColumn { NoWrap = true });
|
||||
grid.AddColumn(new GridColumn { Padding = new Padding(2, 0) });
|
||||
grid.AddColumn(new GridColumn { Padding = new Padding(2, 0, 0, 0) });
|
||||
grid.AddRow("[bold]Options[/]", string.Empty);
|
||||
grid.AddRow(" [blue]-h[/], [blue]--help[/]", "Show command line help.");
|
||||
grid.AddRow(" [blue]-c[/], [blue]--configuration[/]", "The configuration to run for.\nThe default for most projects is [green]Debug[/].");
|
||||
|
||||
107
src/Spectre.Console.Tests/Unit/PadderTests.cs
Normal file
107
src/Spectre.Console.Tests/Unit/PadderTests.cs
Normal file
@@ -0,0 +1,107 @@
|
||||
using Shouldly;
|
||||
using Xunit;
|
||||
|
||||
namespace Spectre.Console.Tests.Unit
|
||||
{
|
||||
public sealed class PadderTests
|
||||
{
|
||||
[Fact]
|
||||
public void Should_Render_Padded_Object_Correctly()
|
||||
{
|
||||
// Given
|
||||
var console = new PlainConsole(width: 60);
|
||||
var table = new Table();
|
||||
table.AddColumn("Foo");
|
||||
table.AddColumn("Bar");
|
||||
table.AddRow("Baz", "Qux");
|
||||
table.AddRow("Corgi", "Waldo");
|
||||
|
||||
// When
|
||||
console.Render(new Padder(table).SetPadding(1, 2, 3, 4));
|
||||
|
||||
// Then
|
||||
console.Lines.Count.ShouldBe(12);
|
||||
console.Lines[00].ShouldBe(" ");
|
||||
console.Lines[01].ShouldBe(" ");
|
||||
console.Lines[02].ShouldBe(" ┌───────┬───────┐ ");
|
||||
console.Lines[03].ShouldBe(" │ Foo │ Bar │ ");
|
||||
console.Lines[04].ShouldBe(" ├───────┼───────┤ ");
|
||||
console.Lines[05].ShouldBe(" │ Baz │ Qux │ ");
|
||||
console.Lines[06].ShouldBe(" │ Corgi │ Waldo │ ");
|
||||
console.Lines[07].ShouldBe(" └───────┴───────┘ ");
|
||||
console.Lines[08].ShouldBe(" ");
|
||||
console.Lines[09].ShouldBe(" ");
|
||||
console.Lines[10].ShouldBe(" ");
|
||||
console.Lines[11].ShouldBe(" ");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Should_Render_Expanded_Padded_Object_Correctly()
|
||||
{
|
||||
// Given
|
||||
var console = new PlainConsole(width: 60);
|
||||
var table = new Table();
|
||||
table.AddColumn("Foo");
|
||||
table.AddColumn("Bar");
|
||||
table.AddRow("Baz", "Qux");
|
||||
table.AddRow("Corgi", "Waldo");
|
||||
|
||||
// When
|
||||
console.Render(new Padder(table)
|
||||
.SetPadding(1, 2, 3, 4)
|
||||
.Expand());
|
||||
|
||||
// Then
|
||||
console.Lines.Count.ShouldBe(12);
|
||||
console.Lines[00].ShouldBe(" ");
|
||||
console.Lines[01].ShouldBe(" ");
|
||||
console.Lines[02].ShouldBe(" ┌───────┬───────┐ ");
|
||||
console.Lines[03].ShouldBe(" │ Foo │ Bar │ ");
|
||||
console.Lines[04].ShouldBe(" ├───────┼───────┤ ");
|
||||
console.Lines[05].ShouldBe(" │ Baz │ Qux │ ");
|
||||
console.Lines[06].ShouldBe(" │ Corgi │ Waldo │ ");
|
||||
console.Lines[07].ShouldBe(" └───────┴───────┘ ");
|
||||
console.Lines[08].ShouldBe(" ");
|
||||
console.Lines[09].ShouldBe(" ");
|
||||
console.Lines[10].ShouldBe(" ");
|
||||
console.Lines[11].ShouldBe(" ");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Should_Render_Padded_Object_Correctly_When_Nested_Within_Other_Object()
|
||||
{
|
||||
// Given
|
||||
var console = new PlainConsole(width: 60);
|
||||
var table = new Table();
|
||||
table.AddColumn("Foo");
|
||||
table.AddColumn("Bar", c => c.PadLeft(0).PadRight(0));
|
||||
table.AddRow("Baz", "Qux");
|
||||
table.AddRow(new Text("Corgi"), new Padder(new Panel("Waldo"))
|
||||
.SetPadding(2, 1, 2, 1));
|
||||
|
||||
// When
|
||||
console.Render(new Padder(table)
|
||||
.SetPadding(1, 2, 3, 4)
|
||||
.Expand());
|
||||
|
||||
// Then
|
||||
console.Lines.Count.ShouldBe(16);
|
||||
console.Lines[00].ShouldBe(" ");
|
||||
console.Lines[01].ShouldBe(" ");
|
||||
console.Lines[02].ShouldBe(" ┌───────┬─────────────┐ ");
|
||||
console.Lines[03].ShouldBe(" │ Foo │Bar │ ");
|
||||
console.Lines[04].ShouldBe(" ├───────┼─────────────┤ ");
|
||||
console.Lines[05].ShouldBe(" │ Baz │Qux │ ");
|
||||
console.Lines[06].ShouldBe(" │ Corgi │ │ ");
|
||||
console.Lines[07].ShouldBe(" │ │ ┌───────┐ │ ");
|
||||
console.Lines[08].ShouldBe(" │ │ │ Waldo │ │ ");
|
||||
console.Lines[09].ShouldBe(" │ │ └───────┘ │ ");
|
||||
console.Lines[10].ShouldBe(" │ │ │ ");
|
||||
console.Lines[11].ShouldBe(" └───────┴─────────────┘ ");
|
||||
console.Lines[12].ShouldBe(" ");
|
||||
console.Lines[13].ShouldBe(" ");
|
||||
console.Lines[14].ShouldBe(" ");
|
||||
console.Lines[15].ShouldBe(" ");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -21,6 +21,25 @@ namespace Spectre.Console.Tests.Unit
|
||||
console.Lines[2].ShouldBe("└─────────────┘");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Should_Render_Panel_With_Padding_Set_To_Zero()
|
||||
{
|
||||
// Given
|
||||
var console = new PlainConsole(width: 80);
|
||||
|
||||
// When
|
||||
console.Render(new Panel(new Text("Hello World"))
|
||||
{
|
||||
Padding = new Padding(0, 0, 0, 0),
|
||||
});
|
||||
|
||||
// Then
|
||||
console.Lines.Count.ShouldBe(3);
|
||||
console.Lines[0].ShouldBe("┌───────────┐");
|
||||
console.Lines[1].ShouldBe("│Hello World│");
|
||||
console.Lines[2].ShouldBe("└───────────┘");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Should_Render_Panel_With_Padding()
|
||||
{
|
||||
@@ -30,14 +49,17 @@ namespace Spectre.Console.Tests.Unit
|
||||
// When
|
||||
console.Render(new Panel(new Text("Hello World"))
|
||||
{
|
||||
Padding = new Padding(3, 5),
|
||||
Padding = new Padding(3, 1, 5, 2),
|
||||
});
|
||||
|
||||
// Then
|
||||
console.Lines.Count.ShouldBe(3);
|
||||
console.Lines.Count.ShouldBe(6);
|
||||
console.Lines[0].ShouldBe("┌───────────────────┐");
|
||||
console.Lines[1].ShouldBe("│ Hello World │");
|
||||
console.Lines[2].ShouldBe("└───────────────────┘");
|
||||
console.Lines[1].ShouldBe("│ │");
|
||||
console.Lines[2].ShouldBe("│ Hello World │");
|
||||
console.Lines[3].ShouldBe("│ │");
|
||||
console.Lines[4].ShouldBe("│ │");
|
||||
console.Lines[5].ShouldBe("└───────────────────┘");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -51,7 +73,7 @@ namespace Spectre.Console.Tests.Unit
|
||||
{
|
||||
Header = new PanelHeader("Greeting"),
|
||||
Expand = true,
|
||||
Padding = new Padding(2, 2),
|
||||
Padding = new Padding(2, 0, 2, 0),
|
||||
});
|
||||
|
||||
// Then
|
||||
|
||||
@@ -347,7 +347,7 @@ namespace Spectre.Console.Tests.Unit
|
||||
var console = new PlainConsole(width: 80);
|
||||
var table = new Table();
|
||||
table.AddColumns("Foo", "Bar");
|
||||
table.AddColumn(new TableColumn("Baz") { Padding = new Padding(3, 2) });
|
||||
table.AddColumn(new TableColumn("Baz") { Padding = new Padding(3, 0, 2, 0) });
|
||||
table.AddRow("Qux\nQuuux", "Corgi", "Waldo");
|
||||
table.AddRow("Grault", "Garply", "Fred");
|
||||
|
||||
@@ -372,7 +372,7 @@ namespace Spectre.Console.Tests.Unit
|
||||
var console = new PlainConsole(width: 80);
|
||||
var table = new Table();
|
||||
table.AddColumns("Foo", "Bar");
|
||||
table.AddColumn(new TableColumn("Baz") { Padding = new Padding(3, 2) });
|
||||
table.AddColumn(new TableColumn("Baz") { Padding = new Padding(3, 0, 2, 0) });
|
||||
|
||||
// When
|
||||
console.Render(table);
|
||||
|
||||
Reference in New Issue
Block a user