using Xunit; using XWorld.PublishTool; namespace XWorld.PublishTool.Tests { public class FilesManifestTests { [Fact] public void Render_And_Parse_RoundTrips() { var m = new FilesManifest(); m.Add("RPS.Core.dll.bytes", "abc123", 100); m.Add("ui_rps_abc.unity3d", "def456", 2048); string text = m.Render(); var back = FilesManifest.Parse(text); Assert.Equal(2, back.Entries.Count); Assert.Equal("abc123", back.Entries["RPS.Core.dll.bytes"].Md5); Assert.Equal(2048, back.Entries["ui_rps_abc.unity3d"].Size); } [Fact] public void Render_LineFormat_MatchesDllfilesConvention() { var m = new FilesManifest(); m.Add("a.dll", "m5", 7); Assert.Equal("{'a.dll','m5',7},\n", m.Render()); } [Fact] public void Digest_IsStable_RegardlessOfInsertOrder() { var a = new FilesManifest(); a.Add("x", "1", 1); a.Add("y", "2", 2); var b = new FilesManifest(); b.Add("y", "2", 2); b.Add("x", "1", 1); Assert.Equal(a.Digest(), b.Digest()); // 按 name 排序后摘要,顺序无关 } } }