mirror of
https://github.com/nsnail/spectre.console.git
synced 2025-04-16 00:42:51 +08:00

* Add support for C# 12 * Run all tests on all major .NET SDKs * Only build on Ubuntu * Do not build docs for pull requests * Add Cédric Luthi, and Frank Ray to authors * Drop netstandard2.0 for ImageSharp plugin
802 lines
20 KiB
C#
802 lines
20 KiB
C#
namespace Spectre.Console.Tests.Unit;
|
|
|
|
[ExpectationPath("Rendering/Borders/Table")]
|
|
public sealed class TableBorderTests
|
|
{
|
|
public sealed class NoBorder
|
|
{
|
|
[Fact]
|
|
public void Should_Return_Correct_Visibility()
|
|
{
|
|
// Given, When
|
|
var visibility = TableBorder.None.Visible;
|
|
|
|
// Then
|
|
visibility.ShouldBeFalse();
|
|
}
|
|
|
|
public sealed class TheSafeGetBorderMethod
|
|
{
|
|
[Fact]
|
|
public void Should_Return_Safe_Border()
|
|
{
|
|
// Given, When
|
|
var border = TableBorder.None.GetSafeBorder(safe: true);
|
|
|
|
// Then
|
|
border.ShouldBeSameAs(TableBorder.None);
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
[Expectation("NoBorder")]
|
|
public Task Should_Render_As_Expected()
|
|
{
|
|
// Given
|
|
var console = new TestConsole();
|
|
var table = Fixture.GetTable().NoBorder();
|
|
|
|
// When
|
|
console.Write(table);
|
|
|
|
// Then
|
|
return Verifier.Verify(console.Output);
|
|
}
|
|
}
|
|
|
|
public sealed class AsciiBorder
|
|
{
|
|
[Fact]
|
|
public void Should_Return_Correct_Visibility()
|
|
{
|
|
// Given, When
|
|
var visibility = TableBorder.Ascii.Visible;
|
|
|
|
// Then
|
|
visibility.ShouldBeTrue();
|
|
}
|
|
|
|
public sealed class TheSafeGetBorderMethod
|
|
{
|
|
[Fact]
|
|
public void Should_Return_Safe_Border()
|
|
{
|
|
// Given, When
|
|
var border = TableBorder.Ascii.GetSafeBorder(safe: true);
|
|
|
|
// Then
|
|
border.ShouldBeSameAs(TableBorder.Ascii);
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
[Expectation("AsciiBorder")]
|
|
public Task Should_Render_As_Expected()
|
|
{
|
|
// Given
|
|
var console = new TestConsole();
|
|
var table = Fixture.GetTable().AsciiBorder();
|
|
|
|
// When
|
|
console.Write(table);
|
|
|
|
// Then
|
|
return Verifier.Verify(console.Output);
|
|
}
|
|
}
|
|
|
|
public sealed class Ascii2Border
|
|
{
|
|
[Fact]
|
|
public void Should_Return_Correct_Visibility()
|
|
{
|
|
// Given, When
|
|
var visibility = TableBorder.Ascii2.Visible;
|
|
|
|
// Then
|
|
visibility.ShouldBeTrue();
|
|
}
|
|
|
|
public sealed class TheSafeGetBorderMethod
|
|
{
|
|
[Fact]
|
|
public void Should_Return_Safe_Border()
|
|
{
|
|
// Given, When
|
|
var border = TableBorder.Ascii2.GetSafeBorder(safe: true);
|
|
|
|
// Then
|
|
border.ShouldBeSameAs(TableBorder.Ascii2);
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
[Expectation("Ascii2Border")]
|
|
public Task Should_Render_As_Expected()
|
|
{
|
|
// Given
|
|
var console = new TestConsole();
|
|
var table = Fixture.GetTable().Ascii2Border();
|
|
|
|
// When
|
|
console.Write(table);
|
|
|
|
// Then
|
|
return Verifier.Verify(console.Output);
|
|
}
|
|
}
|
|
|
|
public sealed class AsciiDoubleHeadBorder
|
|
{
|
|
[Fact]
|
|
public void Should_Return_Correct_Visibility()
|
|
{
|
|
// Given, When
|
|
var visibility = TableBorder.AsciiDoubleHead.Visible;
|
|
|
|
// Then
|
|
visibility.ShouldBeTrue();
|
|
}
|
|
|
|
public sealed class TheSafeGetBorderMethod
|
|
{
|
|
[Fact]
|
|
public void Should_Return_Safe_Border()
|
|
{
|
|
// Given, When
|
|
var border = TableBorder.AsciiDoubleHead.GetSafeBorder(safe: true);
|
|
|
|
// Then
|
|
border.ShouldBeSameAs(TableBorder.AsciiDoubleHead);
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
[Expectation("AsciiDoubleHeadBorder")]
|
|
public Task Should_Render_As_Expected()
|
|
{
|
|
// Given
|
|
var console = new TestConsole();
|
|
var table = Fixture.GetTable().AsciiDoubleHeadBorder();
|
|
|
|
// When
|
|
console.Write(table);
|
|
|
|
// Then
|
|
return Verifier.Verify(console.Output);
|
|
}
|
|
}
|
|
|
|
public sealed class SquareBorder
|
|
{
|
|
[Fact]
|
|
public void Should_Return_Correct_Visibility()
|
|
{
|
|
// Given, When
|
|
var visibility = TableBorder.Square.Visible;
|
|
|
|
// Then
|
|
visibility.ShouldBeTrue();
|
|
}
|
|
|
|
public sealed class TheSafeGetBorderMethod
|
|
{
|
|
[Fact]
|
|
public void Should_Return_Safe_Border()
|
|
{
|
|
// Given, When
|
|
var border = TableBorder.Square.GetSafeBorder(safe: true);
|
|
|
|
// Then
|
|
border.ShouldBeSameAs(TableBorder.Square);
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
[Expectation("SquareBorder")]
|
|
public Task Should_Render_As_Expected()
|
|
{
|
|
// Given
|
|
var console = new TestConsole();
|
|
var table = Fixture.GetTable().SquareBorder();
|
|
|
|
// When
|
|
console.Write(table);
|
|
|
|
// Then
|
|
return Verifier.Verify(console.Output);
|
|
}
|
|
}
|
|
|
|
public sealed class RoundedBorder
|
|
{
|
|
[Fact]
|
|
public void Should_Return_Correct_Visibility()
|
|
{
|
|
// Given, When
|
|
var visibility = TableBorder.Rounded.Visible;
|
|
|
|
// Then
|
|
visibility.ShouldBeTrue();
|
|
}
|
|
|
|
public sealed class TheSafeGetBorderMethod
|
|
{
|
|
[Fact]
|
|
public void Should_Return_Safe_Border()
|
|
{
|
|
// Given, When
|
|
var border = TableBorder.Rounded.GetSafeBorder(safe: true);
|
|
|
|
// Then
|
|
border.ShouldBeSameAs(TableBorder.Square);
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
[Expectation("RoundedBorder")]
|
|
public Task Should_Render_As_Expected()
|
|
{
|
|
// Given
|
|
var console = new TestConsole();
|
|
var table = Fixture.GetTable().RoundedBorder();
|
|
|
|
// When
|
|
console.Write(table);
|
|
|
|
// Then
|
|
return Verifier.Verify(console.Output);
|
|
}
|
|
}
|
|
|
|
public sealed class MinimalBorder
|
|
{
|
|
[Fact]
|
|
public void Should_Return_Correct_Visibility()
|
|
{
|
|
// Given, When
|
|
var visibility = TableBorder.Minimal.Visible;
|
|
|
|
// Then
|
|
visibility.ShouldBeTrue();
|
|
}
|
|
|
|
public sealed class TheSafeGetBorderMethod
|
|
{
|
|
[Fact]
|
|
public void Should_Return_Safe_Border()
|
|
{
|
|
// Given, When
|
|
var border = TableBorder.Minimal.GetSafeBorder(safe: true);
|
|
|
|
// Then
|
|
border.ShouldBeSameAs(TableBorder.Minimal);
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
[Expectation("MinimalBorder")]
|
|
public Task Should_Render_As_Expected()
|
|
{
|
|
// Given
|
|
var console = new TestConsole();
|
|
var table = Fixture.GetTable().MinimalBorder();
|
|
|
|
// When
|
|
console.Write(table);
|
|
|
|
// Then
|
|
return Verifier.Verify(console.Output);
|
|
}
|
|
}
|
|
|
|
public sealed class MinimalHeavyHeadBorder
|
|
{
|
|
[Fact]
|
|
public void Should_Return_Correct_Visibility()
|
|
{
|
|
// Given, When
|
|
var visibility = TableBorder.MinimalHeavyHead.Visible;
|
|
|
|
// Then
|
|
visibility.ShouldBeTrue();
|
|
}
|
|
|
|
public sealed class TheSafeGetBorderMethod
|
|
{
|
|
[Fact]
|
|
public void Should_Return_Safe_Border()
|
|
{
|
|
// Given, When
|
|
var border = TableBorder.MinimalHeavyHead.GetSafeBorder(safe: true);
|
|
|
|
// Then
|
|
border.ShouldBeSameAs(TableBorder.Minimal);
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
[Expectation("MinimalHeavyHeadBorder")]
|
|
public Task Should_Render_As_Expected()
|
|
{
|
|
// Given
|
|
var console = new TestConsole();
|
|
var table = Fixture.GetTable().MinimalHeavyHeadBorder();
|
|
|
|
// When
|
|
console.Write(table);
|
|
|
|
// Then
|
|
return Verifier.Verify(console.Output);
|
|
}
|
|
}
|
|
|
|
public sealed class MinimalDoubleHeadBorder
|
|
{
|
|
[Fact]
|
|
public void Should_Return_Correct_Visibility()
|
|
{
|
|
// Given, When
|
|
var visibility = TableBorder.MinimalDoubleHead.Visible;
|
|
|
|
// Then
|
|
visibility.ShouldBeTrue();
|
|
}
|
|
|
|
public sealed class TheSafeGetBorderMethod
|
|
{
|
|
[Fact]
|
|
public void Should_Return_Safe_Border()
|
|
{
|
|
// Given, When
|
|
var border = TableBorder.MinimalDoubleHead.GetSafeBorder(safe: true);
|
|
|
|
// Then
|
|
border.ShouldBeSameAs(TableBorder.MinimalDoubleHead);
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
[Expectation("MinimalDoubleHeadBorder")]
|
|
public Task Should_Render_As_Expected()
|
|
{
|
|
// Given
|
|
var console = new TestConsole();
|
|
var table = Fixture.GetTable().MinimalDoubleHeadBorder();
|
|
|
|
// When
|
|
console.Write(table);
|
|
|
|
// Then
|
|
return Verifier.Verify(console.Output);
|
|
}
|
|
}
|
|
|
|
public sealed class SimpleBorder
|
|
{
|
|
[Fact]
|
|
public void Should_Return_Correct_Visibility()
|
|
{
|
|
// Given, When
|
|
var visibility = TableBorder.Simple.Visible;
|
|
|
|
// Then
|
|
visibility.ShouldBeTrue();
|
|
}
|
|
|
|
public sealed class TheSafeGetBorderMethod
|
|
{
|
|
[Fact]
|
|
public void Should_Return_Safe_Border()
|
|
{
|
|
// Given, When
|
|
var border = TableBorder.Simple.GetSafeBorder(safe: true);
|
|
|
|
// Then
|
|
border.ShouldBeSameAs(TableBorder.Simple);
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
[Expectation("SimpleBorder")]
|
|
public Task Should_Render_As_Expected()
|
|
{
|
|
// Given
|
|
var console = new TestConsole();
|
|
var table = Fixture.GetTable().SimpleBorder();
|
|
|
|
// When
|
|
console.Write(table);
|
|
|
|
// Then
|
|
return Verifier.Verify(console.Output);
|
|
}
|
|
}
|
|
|
|
public sealed class HorizontalBorder
|
|
{
|
|
[Fact]
|
|
public void Should_Return_Correct_Visibility()
|
|
{
|
|
// Given, When
|
|
var visibility = TableBorder.Horizontal.Visible;
|
|
|
|
// Then
|
|
visibility.ShouldBeTrue();
|
|
}
|
|
|
|
public sealed class TheSafeGetBorderMethod
|
|
{
|
|
[Fact]
|
|
public void Should_Return_Safe_Border()
|
|
{
|
|
// Given, When
|
|
var border = TableBorder.Horizontal.GetSafeBorder(safe: true);
|
|
|
|
// Then
|
|
border.ShouldBeSameAs(TableBorder.Horizontal);
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
[Expectation("HorizontalBorder")]
|
|
public Task Should_Render_As_Expected()
|
|
{
|
|
// Given
|
|
var console = new TestConsole();
|
|
var table = Fixture.GetTable().HorizontalBorder();
|
|
|
|
// When
|
|
console.Write(table);
|
|
|
|
// Then
|
|
return Verifier.Verify(console.Output);
|
|
}
|
|
}
|
|
|
|
public sealed class SimpleHeavyBorder
|
|
{
|
|
[Fact]
|
|
public void Should_Return_Correct_Visibility()
|
|
{
|
|
// Given, When
|
|
var visibility = TableBorder.SimpleHeavy.Visible;
|
|
|
|
// Then
|
|
visibility.ShouldBeTrue();
|
|
}
|
|
|
|
public sealed class TheSafeGetBorderMethod
|
|
{
|
|
[Fact]
|
|
public void Should_Return_Safe_Border()
|
|
{
|
|
// Given, When
|
|
var border = TableBorder.SimpleHeavy.GetSafeBorder(safe: true);
|
|
|
|
// Then
|
|
border.ShouldBeSameAs(TableBorder.Simple);
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
[Expectation("SimpleHeavyBorder")]
|
|
public Task Should_Render_As_Expected()
|
|
{
|
|
// Given
|
|
var console = new TestConsole();
|
|
var table = Fixture.GetTable().SimpleHeavyBorder();
|
|
|
|
// When
|
|
console.Write(table);
|
|
|
|
// Then
|
|
return Verifier.Verify(console.Output);
|
|
}
|
|
}
|
|
|
|
public sealed class HeavyBorder
|
|
{
|
|
[Fact]
|
|
public void Should_Return_Correct_Visibility()
|
|
{
|
|
// Given, When
|
|
var visibility = TableBorder.Heavy.Visible;
|
|
|
|
// Then
|
|
visibility.ShouldBeTrue();
|
|
}
|
|
|
|
public sealed class TheSafeGetBorderMethod
|
|
{
|
|
[Fact]
|
|
public void Should_Return_Safe_Border()
|
|
{
|
|
// Given, When
|
|
var border = TableBorder.Heavy.GetSafeBorder(safe: true);
|
|
|
|
// Then
|
|
border.ShouldBeSameAs(TableBorder.Square);
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
[Expectation("HeavyBorder")]
|
|
public Task Should_Render_As_Expected()
|
|
{
|
|
// Given
|
|
var console = new TestConsole();
|
|
var table = Fixture.GetTable().HeavyBorder();
|
|
|
|
// When
|
|
console.Write(table);
|
|
|
|
// Then
|
|
return Verifier.Verify(console.Output);
|
|
}
|
|
}
|
|
|
|
public sealed class HeavyEdgeBorder
|
|
{
|
|
[Fact]
|
|
public void Should_Return_Correct_Visibility()
|
|
{
|
|
// Given, When
|
|
var visibility = TableBorder.HeavyEdge.Visible;
|
|
|
|
// Then
|
|
visibility.ShouldBeTrue();
|
|
}
|
|
|
|
public sealed class TheSafeGetBorderMethod
|
|
{
|
|
[Fact]
|
|
public void Should_Return_Safe_Border()
|
|
{
|
|
// Given, When
|
|
var border = TableBorder.HeavyEdge.GetSafeBorder(safe: true);
|
|
|
|
// Then
|
|
border.ShouldBeSameAs(TableBorder.Square);
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
[Expectation("HeavyEdgeBorder")]
|
|
public Task Should_Render_As_Expected()
|
|
{
|
|
// Given
|
|
var console = new TestConsole();
|
|
var table = Fixture.GetTable().HeavyEdgeBorder();
|
|
|
|
// When
|
|
console.Write(table);
|
|
|
|
// Then
|
|
return Verifier.Verify(console.Output);
|
|
}
|
|
}
|
|
|
|
public sealed class HeavyHeadBorder
|
|
{
|
|
[Fact]
|
|
public void Should_Return_Correct_Visibility()
|
|
{
|
|
// Given, When
|
|
var visibility = TableBorder.HeavyHead.Visible;
|
|
|
|
// Then
|
|
visibility.ShouldBeTrue();
|
|
}
|
|
|
|
public sealed class TheSafeGetBorderMethod
|
|
{
|
|
[Fact]
|
|
public void Should_Return_Safe_Border()
|
|
{
|
|
// Given, When
|
|
var border = TableBorder.HeavyHead.GetSafeBorder(safe: true);
|
|
|
|
// Then
|
|
border.ShouldBeSameAs(TableBorder.Square);
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
[Expectation("HeavyHeadBorder")]
|
|
public Task Should_Render_As_Expected()
|
|
{
|
|
// Given
|
|
var console = new TestConsole();
|
|
var table = Fixture.GetTable().HeavyHeadBorder();
|
|
|
|
// When
|
|
console.Write(table);
|
|
|
|
// Then
|
|
return Verifier.Verify(console.Output);
|
|
}
|
|
}
|
|
|
|
public sealed class DoubleBorder
|
|
{
|
|
[Fact]
|
|
public void Should_Return_Correct_Visibility()
|
|
{
|
|
// Given, When
|
|
var visibility = TableBorder.Double.Visible;
|
|
|
|
// Then
|
|
visibility.ShouldBeTrue();
|
|
}
|
|
|
|
public sealed class TheSafeGetBorderMethod
|
|
{
|
|
[Fact]
|
|
public void Should_Return_Safe_Border()
|
|
{
|
|
// Given, When
|
|
var border = TableBorder.Double.GetSafeBorder(safe: true);
|
|
|
|
// Then
|
|
border.ShouldBeSameAs(TableBorder.Double);
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
[Expectation("DoubleBorder")]
|
|
public Task Should_Render_As_Expected()
|
|
{
|
|
// Given
|
|
var console = new TestConsole();
|
|
var table = Fixture.GetTable().DoubleBorder();
|
|
|
|
// When
|
|
console.Write(table);
|
|
|
|
// Then
|
|
return Verifier.Verify(console.Output);
|
|
}
|
|
}
|
|
|
|
public sealed class DoubleEdgeBorder
|
|
{
|
|
[Fact]
|
|
public void Should_Return_Correct_Visibility()
|
|
{
|
|
// Given, When
|
|
var visibility = TableBorder.DoubleEdge.Visible;
|
|
|
|
// Then
|
|
visibility.ShouldBeTrue();
|
|
}
|
|
|
|
public sealed class TheSafeGetBorderMethod
|
|
{
|
|
[Fact]
|
|
public void Should_Return_Safe_Border()
|
|
{
|
|
// Given, When
|
|
var border = TableBorder.DoubleEdge.GetSafeBorder(safe: true);
|
|
|
|
// Then
|
|
border.ShouldBeSameAs(TableBorder.DoubleEdge);
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
[Expectation("DoubleEdgeBorder")]
|
|
public Task Should_Render_As_Expected()
|
|
{
|
|
// Given
|
|
var console = new TestConsole();
|
|
var table = Fixture.GetTable().DoubleEdgeBorder();
|
|
|
|
// When
|
|
console.Write(table);
|
|
|
|
// Then
|
|
return Verifier.Verify(console.Output);
|
|
}
|
|
}
|
|
|
|
public sealed class MarkdownBorder
|
|
{
|
|
[Fact]
|
|
public void Should_Return_Correct_Visibility()
|
|
{
|
|
// Given, When
|
|
var visibility = TableBorder.Markdown.Visible;
|
|
|
|
// Then
|
|
visibility.ShouldBeTrue();
|
|
}
|
|
|
|
public sealed class TheSafeGetBorderMethod
|
|
{
|
|
[Fact]
|
|
public void Should_Return_Safe_Border()
|
|
{
|
|
// Given, When
|
|
var border = TableBorder.Markdown.GetSafeBorder(safe: true);
|
|
|
|
// Then
|
|
border.ShouldBeSameAs(TableBorder.Markdown);
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
[Expectation("MarkdownBorder")]
|
|
public Task Should_Render_As_Expected()
|
|
{
|
|
// Given
|
|
var console = new TestConsole();
|
|
var table = Fixture.GetTable().MarkdownBorder();
|
|
|
|
// When
|
|
console.Write(table);
|
|
|
|
// Then
|
|
return Verifier.Verify(console.Output);
|
|
}
|
|
|
|
[Fact]
|
|
[Expectation("MarkdownBorder_LeftAligned")]
|
|
public Task Should_Render_Left_Aligned_Table_Columns_As_Expected()
|
|
{
|
|
// Given
|
|
var console = new TestConsole();
|
|
var table = Fixture.GetTable(header2: Justify.Left).MarkdownBorder();
|
|
|
|
// When
|
|
console.Write(table);
|
|
|
|
// Then
|
|
return Verifier.Verify(console.Output);
|
|
}
|
|
|
|
[Fact]
|
|
[Expectation("MarkdownBorder_Centered")]
|
|
public Task Should_Render_Center_Aligned_Table_Columns_As_Expected()
|
|
{
|
|
// Given
|
|
var console = new TestConsole();
|
|
var table = Fixture.GetTable(header2: Justify.Center).MarkdownBorder();
|
|
|
|
// When
|
|
console.Write(table);
|
|
|
|
// Then
|
|
return Verifier.Verify(console.Output);
|
|
}
|
|
|
|
[Fact]
|
|
[Expectation("MarkdownBorder_RightAligned")]
|
|
public Task Should_Render_Right_Aligned_Table_Columns_As_Expected()
|
|
{
|
|
// Given
|
|
var console = new TestConsole();
|
|
var table = Fixture.GetTable(header2: Justify.Right).MarkdownBorder();
|
|
|
|
// When
|
|
console.Write(table);
|
|
|
|
// Then
|
|
return Verifier.Verify(console.Output);
|
|
}
|
|
}
|
|
|
|
private static class Fixture
|
|
{
|
|
public static Table GetTable(Justify? header1 = null, Justify? header2 = null)
|
|
{
|
|
var table = new Table();
|
|
table.AddColumn("Header 1", c => c.Alignment(header1).Footer("Footer 1"));
|
|
table.AddColumn("Header 2", c => c.Alignment(header2).Footer("Footer 2"));
|
|
table.AddRow("Cell", "Cell");
|
|
table.AddRow("Cell", "Cell");
|
|
return table;
|
|
}
|
|
}
|
|
}
|