From 0d72b94f9c2fe643966dc81511311d854c00e56a Mon Sep 17 00:00:00 2001 From: Nils Andresen Date: Tue, 2 Aug 2022 21:08:09 +0200 Subject: [PATCH] added some breaking unit tests --- .../Unit/AnsiConsoleTests.Markup.cs | 30 ++++++++++++++ .../AnsiConsoleTests.MarkupInterpolated.cs | 40 +++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 test/Spectre.Console.Tests/Unit/AnsiConsoleTests.MarkupInterpolated.cs diff --git a/test/Spectre.Console.Tests/Unit/AnsiConsoleTests.Markup.cs b/test/Spectre.Console.Tests/Unit/AnsiConsoleTests.Markup.cs index 10c57e3..325ed53 100644 --- a/test/Spectre.Console.Tests/Unit/AnsiConsoleTests.Markup.cs +++ b/test/Spectre.Console.Tests/Unit/AnsiConsoleTests.Markup.cs @@ -49,6 +49,36 @@ public partial class AnsiConsoleTests console.Output.ShouldMatch("]8;id=[0-9]*;https:\\/\\/patriksvensson\\.se\\\\https:\\/\\/patriksvensson\\.se]8;;\\\\"); } + [Fact] + public void Should_Output_Expected_Ansi_For_Link_With_Bracket_In_Url_Only() + { + // Given + var console = new TestConsole() + .EmitAnsiSequences(); + + // When + const string Path = "file://c:/temp/[x].txt"; + console.Markup($"[link]{Path.EscapeMarkup()}[/]"); + + // Then + console.Output.ShouldMatch("]8;id=[0-9]*;file:\\/\\/c:\\/temp\\/\\[x\\].txt\\\\file:\\/\\/c:\\/temp\\/\\[x\\].txt]8;;\\\\"); + } + + [Fact] + public void Should_Output_Expected_Ansi_For_Link_With_Bracket_In_Url() + { + // Given + var console = new TestConsole() + .EmitAnsiSequences(); + + // When + const string Path = "file://c:/temp/[x].txt"; + console.Markup($"[link={Path.EscapeMarkup()}]{Path.EscapeMarkup()}[/]"); + + // Then + console.Output.ShouldMatch("]8;id=[0-9]*;file:\\/\\/c:\\/temp\\/\\[x\\].txt\\\\file:\\/\\/c:\\/temp\\/\\[x\\].txt]8;;\\\\"); + } + [Theory] [InlineData("[yellow]Hello [[ World[/]", "Hello [ World")] public void Should_Be_Able_To_Escape_Tags(string markup, string expected) diff --git a/test/Spectre.Console.Tests/Unit/AnsiConsoleTests.MarkupInterpolated.cs b/test/Spectre.Console.Tests/Unit/AnsiConsoleTests.MarkupInterpolated.cs new file mode 100644 index 0000000..13ad592 --- /dev/null +++ b/test/Spectre.Console.Tests/Unit/AnsiConsoleTests.MarkupInterpolated.cs @@ -0,0 +1,40 @@ +namespace Spectre.Console.Tests.Unit; + +public partial class AnsiConsoleTests +{ + public sealed class MarkupInterpolated + { + [Fact] + public void Should_Print_Simple_Interpolated_Strings() + { + // Given + var console = new TestConsole() + .Colors(ColorSystem.Standard) + .EmitAnsiSequences(); + + // When + const string Path = "file://c:/temp/[x].txt"; + console.MarkupInterpolated($"[Green]{Path}[/]"); + + // Then + console.Output.ShouldBe($"{Path}"); + } + + [Fact] + public void Should_Not_Throw_Error_On_Links_Brackets() + { + // Given + var console = new TestConsole() + .Colors(ColorSystem.Standard) + .EmitAnsiSequences(); + + // When + const string Path = "file://c:/temp/[x].txt"; + console.MarkupInterpolated($"[link={Path}]{Path}[/]"); + + // Then + var pathAsRegEx = Regex.Replace(Path, "([/\\[\\]\\\\])", "\\$1", RegexOptions.Compiled|RegexOptions.IgnoreCase); + console.Output.ShouldMatch($"\\]8;id=[0-9]+;{pathAsRegEx}\\\\{pathAsRegEx}\\]8;;\\\\"); + } + } +}