mirror of
https://github.com/nsnail/spectre.console.git
synced 2025-06-19 21:38:16 +08:00

committed by
Phil Scott

parent
2e5d18fa78
commit
fd4b96944e
@ -0,0 +1,3 @@
|
||||
Foo
|
||||
[?1049h[HBar
|
||||
[?1049l
|
79
test/Spectre.Console.Tests/Unit/AlternateScreenTests.cs
Normal file
79
test/Spectre.Console.Tests/Unit/AlternateScreenTests.cs
Normal file
@ -0,0 +1,79 @@
|
||||
using System.Threading.Tasks;
|
||||
using Shouldly;
|
||||
using Spectre.Console.Testing;
|
||||
using Spectre.Verify.Extensions;
|
||||
using VerifyXunit;
|
||||
using Xunit;
|
||||
|
||||
namespace Spectre.Console.Tests.Unit
|
||||
{
|
||||
[UsesVerify]
|
||||
[ExpectationPath("AlternateScreen")]
|
||||
public sealed class AlternateScreenTests
|
||||
{
|
||||
[Fact]
|
||||
public void Should_Throw_If_Alternative_Buffer_Is_Not_Supported_By_Terminal()
|
||||
{
|
||||
// Given
|
||||
var console = new TestConsole();
|
||||
console.Profile.Capabilities.AlternateBuffer = false;
|
||||
|
||||
// When
|
||||
var result = Record.Exception(() =>
|
||||
{
|
||||
console.WriteLine("Foo");
|
||||
console.AlternateScreen(() =>
|
||||
{
|
||||
console.WriteLine("Bar");
|
||||
});
|
||||
});
|
||||
|
||||
// Then
|
||||
result.ShouldNotBeNull();
|
||||
result.Message.ShouldBe("Alternate buffers are not supported by your terminal.");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Should_Throw_If_Ansi_Is_Not_Supported_By_Terminal()
|
||||
{
|
||||
// Given
|
||||
var console = new TestConsole();
|
||||
console.Profile.Capabilities.Ansi = false;
|
||||
console.Profile.Capabilities.AlternateBuffer = true;
|
||||
|
||||
// When
|
||||
var result = Record.Exception(() =>
|
||||
{
|
||||
console.WriteLine("Foo");
|
||||
console.AlternateScreen(() =>
|
||||
{
|
||||
console.WriteLine("Bar");
|
||||
});
|
||||
});
|
||||
|
||||
// Then
|
||||
result.ShouldNotBeNull();
|
||||
result.Message.ShouldBe("Alternate buffers are not supported since your terminal does not support ANSI.");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
[Expectation("Show")]
|
||||
public async Task Should_Write_To_Alternate_Screen()
|
||||
{
|
||||
// Given
|
||||
var console = new TestConsole();
|
||||
console.EmitAnsiSequences = true;
|
||||
console.Profile.Capabilities.AlternateBuffer = true;
|
||||
|
||||
// When
|
||||
console.WriteLine("Foo");
|
||||
console.AlternateScreen(() =>
|
||||
{
|
||||
console.WriteLine("Bar");
|
||||
});
|
||||
|
||||
// Then
|
||||
await Verifier.Verify(console.Output);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user