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}} """; } }