Files
2024-12-27 13:49:16 +08:00

74 lines
1.9 KiB
C#

using System;
using Masuit.Tools.TextDiff;
using Xunit;
namespace Masuit.Tools.Abstractions.Test.TextDiff;
public class TextDifferTests
{
[Fact]
public void Empty_ShouldReturnEmptyTextDiffer()
{
var empty = TextDiffer.Empty;
Assert.Equal(DiffOperation.Equal, empty.Operation);
Assert.Equal(string.Empty, empty.Text);
}
[Fact]
public void IsEmpty_ShouldReturnTrueForEmptyText()
{
var empty = TextDiffer.Empty;
Assert.True(empty.IsEmpty);
}
[Fact]
public void Equal_ShouldCreateEqualTextDiffer()
{
var text = "test";
var differ = TextDiffer.Equal(text.AsSpan());
Assert.Equal(DiffOperation.Equal, differ.Operation);
Assert.Equal(text, differ.Text);
}
[Fact]
public void Insert_ShouldCreateInsertTextDiffer()
{
var text = "test";
var differ = TextDiffer.Insert(text.AsSpan());
Assert.Equal(DiffOperation.Insert, differ.Operation);
Assert.Equal(text, differ.Text);
}
[Fact]
public void Delete_ShouldCreateDeleteTextDiffer()
{
var text = "test";
var differ = TextDiffer.Delete(text.AsSpan());
Assert.Equal(DiffOperation.Delete, differ.Operation);
Assert.Equal(text, differ.Text);
}
[Fact]
public void Compute_ShouldReturnDiffs()
{
var text1 = "test";
var text2 = "test123";
var diffs = TextDiffer.Compute(text1, text2);
Assert.NotEmpty(diffs);
}
[Fact]
public void IsLargeDelete_ShouldReturnTrueForLargeDelete()
{
var differ = TextDiffer.Delete("large delete".AsSpan());
Assert.True(differ.IsLargeDelete(5));
}
[Fact]
public void ToString_ShouldReturnFormattedString()
{
var differ = TextDiffer.Equal("test\n".AsSpan());
var result = differ.ToString();
Assert.Equal("Diff(Equal,\"test\u00b6\")", result);
}
}