Files
2026-07-10 10:24:29 +08:00

45 lines
1.7 KiB
C#

using Xunit;
using XWorld.PublishTool;
namespace XWorld.PublishTool.Tests
{
public class GameSpecJsonTests
{
[Fact]
public void Parse_LowercaseKeys_FillsAllFields()
{
// Editor 侧 JsonUtility 输出小写字段名;解析须大小写不敏感、含 fields
string json = @"{
""gameId"": ""rps"", ""version"": 3, ""minFrameworkVersion"": 1,
""playerCount"": 2, ""tickRateHz"": 10,
""serverAssembly"": ""RPS.Server.dll"", ""serverEntryType"": ""RPS.Server.RpsServerRoom"",
""coreDll"": ""RPS.Core.dll"", ""clientDll"": ""RPS.Client.dll"",
""clientEntryType"": ""RPS.Client.RpsGameClient"",
""codeAb"": ""code.unity3d"", ""assets"": [""res.unity3d""]
}";
var s = GameSpecJson.Parse(json);
Assert.Equal("rps", s.GameId);
Assert.Equal(3, s.Version);
Assert.Equal(1, s.MinFrameworkVersion);
Assert.Equal(2, s.PlayerCount);
Assert.Equal(10, s.TickRateHz);
Assert.Equal("RPS.Server.dll", s.ServerAssembly);
Assert.Equal("RPS.Server.RpsServerRoom", s.ServerEntryType);
Assert.Equal("RPS.Core.dll", s.CoreDll);
Assert.Equal("RPS.Client.dll", s.ClientDll);
Assert.Equal("RPS.Client.RpsGameClient", s.ClientEntryType);
Assert.Equal("code.unity3d", s.CodeAb);
Assert.Single(s.Assets);
Assert.Equal("res.unity3d", s.Assets[0]);
}
[Fact]
public void Parse_MissingAssets_YieldsEmptyList_NotNull()
{
var s = GameSpecJson.Parse(@"{""gameId"":""x"",""version"":1,""codeAb"":""code.unity3d""}");
Assert.NotNull(s.Assets);
Assert.Empty(s.Assets);
}
}
}