using System.Collections.Generic;
using System.Linq;
using Masuit.Tools.TextDiff;
using Xunit;
namespace Masuit.Tools.Abstractions.Test.TextDiff;
public class ExtensionsTests
{
[Fact]
public void HtmlDiff_ShouldReturnHtmlDiff()
{
// Arrange
var text1 = "
Hello
";
var text2 = "Hi
";
// Act
var (html1, html2) = text1.HtmlDiff(text2);
// Assert
Assert.Contains("ello", html1);
Assert.Contains("i", html2);
}
[Theory]
[InlineData("ABCADE", "ADCABE", "ABCADE", "ADCABE")]
[InlineData("12345", "14325", "12345", "14325")]
public void HtmlDiff_ShouldIncludeShortUnchangedTextInChanges(string text1, string text2, string expectedHtml1, string expectedHtml2)
{
var (html1, html2) = text1.HtmlDiff(text2, maxUnchangedLength: 2);
Assert.Equal(expectedHtml1, html1);
Assert.Equal(expectedHtml2, html2);
}
[Fact]
public void HtmlDiffMerge_ShouldReturnMergedHtml()
{
// Arrange
var text1 = "Hello
";
var text2 = "Hi
";
// Act
var result = text1.HtmlDiffMerge(text2);
// Assert
Assert.Contains("ello", result);
Assert.Contains("i", result);
}
[Fact]
public void HtmlDiffMerge_ShouldIncludeShortUnchangedTextInChanges()
{
var result = "ABCADE".HtmlDiffMerge("ADCABE", maxUnchangedLength: 2);
Assert.Equal("ABCADDCABE", result);
}
}