refactor: Splitting ANSI into codes and texts, instead of converting straight to HTML

This commit is contained in:
Chris Cameron
2020-02-25 19:05:40 -05:00
parent a82645e902
commit 3f62e7e929
7 changed files with 137 additions and 98 deletions

View File

@@ -0,0 +1,27 @@
using System.Linq;
using NUnit.Framework;
namespace ICD.Common.Utils.Tests
{
[TestFixture]
public sealed class AnsiUtilsTest
{
[Test]
public void ToSpansTest()
{
string ansi = "\x1b[30mblack\x1b[37mwhite\x1b[0mdefault";
AnsiSpan[] spans = AnsiUtils.ToSpans(ansi).ToArray();
Assert.AreEqual(3, spans.Length);
Assert.AreEqual("black", spans[0].Text);
Assert.AreEqual("30", spans[0].Code);
Assert.AreEqual("white", spans[1].Text);
Assert.AreEqual("37", spans[1].Code);
Assert.AreEqual("default", spans[2].Text);
Assert.AreEqual("0", spans[2].Code);
}
}
}

View File

@@ -1,22 +0,0 @@
using ICD.Common.Utils.Converters;
using NUnit.Framework;
namespace ICD.Common.Utils.Tests.Converters
{
[TestFixture]
public sealed class AnsiToHtmlTest
{
[TestCase("black\x1b[37mwhite",
@"black<span style=""color:#BBBBBB"">white</span>")]
[TestCase("black\x1b[0mblack",
@"blackblack")]
[TestCase("black\x1b[37mwhite\x1b[0m",
@"black<span style=""color:#BBBBBB"">white</span>")]
[TestCase("\x1b[30mblack\x1b[37mwhite",
@"<span style=""color:#000000"">black<span style=""color:#BBBBBB"">white</span></span>")]
public void ConvertTest(string ansi, string expected)
{
Assert.AreEqual(expected, AnsiToHtml.Convert(ansi));
}
}
}