Add Layout widget (#1041)

* Add width to panels
* Add height to panels
* Replace RenderContext with RenderOptions
* Remove exclusivity from alternative buffer
* Add Layout widget
* Add Align widget
This commit is contained in:
Patrik Svensson
2022-11-15 10:12:17 +01:00
committed by GitHub
parent 9ce3b99cd6
commit c3ec6a7363
137 changed files with 2651 additions and 387 deletions

View File

@ -0,0 +1,155 @@
using Spectre.Console.Extensions;
namespace Spectre.Console.Tests.Unit;
[UsesVerify]
[ExpectationPath("Widgets/Align")]
public sealed class AlignTests
{
[UsesVerify]
public sealed class Left
{
[Fact]
[Expectation("Left_Top")]
public Task Should_Render_Panel_Left_Aligned_At_Top()
{
// Given
var console = new TestConsole().Size(new Size(40, 15));
var align = Align.Left(new Panel("Hello World!"), VerticalAlignment.Top).Height(15);
// When
console.Write(align);
// Then
return Verifier.Verify(console.Output);
}
[Fact]
[Expectation("Left_Middle")]
public Task Should_Render_Panel_Left_Aligned_At_Middle()
{
// Given
var console = new TestConsole().Size(new Size(40, 15));
var align = Align.Left(new Panel("Hello World!"), VerticalAlignment.Middle).Height(15);
// When
console.Write(align);
// Then
return Verifier.Verify(console.Output);
}
[Fact]
[Expectation("Left_Bottom")]
public Task Should_Render_Panel_Left_Aligned_At_Bottom()
{
// Given
var console = new TestConsole().Size(new Size(40, 15));
var align = Align.Left(new Panel("Hello World!"), VerticalAlignment.Bottom).Height(15);
// When
console.Write(align);
// Then
return Verifier.Verify(console.Output);
}
}
[UsesVerify]
public sealed class Center
{
[Fact]
[Expectation("Center_Top")]
public Task Should_Render_Panel_Center_Aligned_At_Top()
{
// Given
var console = new TestConsole().Size(new Size(40, 15));
var align = Align.Center(new Panel("Hello World!"), VerticalAlignment.Top).Height(15);
// When
console.Write(align);
// Then
return Verifier.Verify(console.Output);
}
[Fact]
[Expectation("Center_Middle")]
public Task Should_Render_Panel_Center_Aligned_At_Middle()
{
// Given
var console = new TestConsole().Size(new Size(40, 15));
var align = Align.Center(new Panel("Hello World!"), VerticalAlignment.Middle).Height(15);
// When
console.Write(align);
// Then
return Verifier.Verify(console.Output);
}
[Fact]
[Expectation("Center_Bottom")]
public Task Should_Render_Panel_Center_Aligned_At_Bottom()
{
// Given
var console = new TestConsole().Size(new Size(40, 15));
var align = Align.Center(new Panel("Hello World!"), VerticalAlignment.Bottom).Height(15);
// When
console.Write(align);
// Then
return Verifier.Verify(console.Output);
}
}
[UsesVerify]
public sealed class Right
{
[Fact]
[Expectation("Right_Top")]
public Task Should_Render_Panel_Right_Aligned_At_Top()
{
// Given
var console = new TestConsole().Size(new Size(40, 15));
var align = Align.Right(new Panel("Hello World!"), VerticalAlignment.Top).Height(15);
// When
console.Write(align);
// Then
return Verifier.Verify(console.Output);
}
[Fact]
[Expectation("Right_Middle")]
public Task Should_Render_Panel_Right_Aligned_At_Middle()
{
// Given
var console = new TestConsole().Size(new Size(40, 15));
var align = Align.Right(new Panel("Hello World!"), VerticalAlignment.Middle).Height(15);
// When
console.Write(align);
// Then
return Verifier.Verify(console.Output);
}
[Fact]
[Expectation("Right_Bottom")]
public Task Should_Render_Panel_Right_Aligned_At_Bottom()
{
// Given
var console = new TestConsole().Size(new Size(40, 15));
var align = Align.Right(new Panel("Hello World!"), VerticalAlignment.Bottom).Height(15);
// When
console.Write(align);
// Then
return Verifier.Verify(console.Output);
}
}
}