using AtomUI.Build.Tasks.LocalizationBuild;
using Shouldly;
using Xunit;
namespace AtomUI.Build.Tasks.Tests;
public class LanguageSourceFingerprintTests
{
[Fact]
public void Compute_Changes_When_A_Unit_Key_Changes()
{
var original = Compute(SourceXliff("Title", "Sign in"));
var renamed = Compute(SourceXliff("Heading", "Sign in"));
renamed.ShouldNotBe(original);
}
[Fact]
public void Compute_Changes_When_English_Source_Changes()
{
var original = Compute(SourceXliff("Title", "Sign in"));
var revised = Compute(SourceXliff("Title", "Log in"));
revised.ShouldNotBe(original);
}
[Fact]
public void Compute_Is_Independent_Of_Xliff_Unit_Order()
{
const string first = """
Sign in
Cancel
""";
const string reversed = """
Cancel
Sign in
""";
Compute(reversed).ShouldBe(Compute(first));
}
private static string Compute(string content)
{
return LanguageSourceFingerprint.Compute(Xliff21Parser.Parse(content).Document!);
}
private static string SourceXliff(string key, string source)
{
return $$"""
{{source}}
""";
}
}