fix: improve minigame reconnect flow
This commit is contained in:
@@ -18,10 +18,11 @@ namespace XWorld.Framework.Tests
|
||||
[Fact]
|
||||
public void MatchRequest_RoundTrips()
|
||||
{
|
||||
var m = new MatchRequestMsg { GameId = "rock_paper_scissors", Version = 3 };
|
||||
var m = new MatchRequestMsg { GameId = "rock_paper_scissors", Version = 3, RequestId = 42 };
|
||||
var d = MatchRequestMsg.Decode(m.Encode());
|
||||
Assert.Equal(m.GameId, d.GameId);
|
||||
Assert.Equal(m.Version, d.Version);
|
||||
Assert.Equal(m.RequestId, d.RequestId);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -29,9 +30,11 @@ namespace XWorld.Framework.Tests
|
||||
{
|
||||
var m = new MatchFoundMsg
|
||||
{
|
||||
GameId = "rps",
|
||||
RoomId = "room-42",
|
||||
Version = 3,
|
||||
SelfPlayerId = 1001,
|
||||
RequestId = 99,
|
||||
Players =
|
||||
{
|
||||
new PlayerInfo
|
||||
@@ -55,9 +58,11 @@ namespace XWorld.Framework.Tests
|
||||
},
|
||||
};
|
||||
var d = MatchFoundMsg.Decode(m.Encode());
|
||||
Assert.Equal("rps", d.GameId);
|
||||
Assert.Equal("room-42", d.RoomId);
|
||||
Assert.Equal(3, d.Version);
|
||||
Assert.Equal(1001, d.SelfPlayerId);
|
||||
Assert.Equal(99, d.RequestId);
|
||||
Assert.Equal(2, d.Players.Count);
|
||||
Assert.Equal(1001, d.Players[0].PlayerId);
|
||||
Assert.Equal("Alice", d.Players[0].Name);
|
||||
@@ -101,10 +106,30 @@ namespace XWorld.Framework.Tests
|
||||
[Fact]
|
||||
public void Error_RoundTrips()
|
||||
{
|
||||
var m = new ErrorMsg { Code = 404, Message = "version mismatch" };
|
||||
var m = new ErrorMsg { Code = 404, Message = "version mismatch", RequestId = 7 };
|
||||
var d = ErrorMsg.Decode(m.Encode());
|
||||
Assert.Equal(404, d.Code);
|
||||
Assert.Equal("version mismatch", d.Message);
|
||||
Assert.Equal(7, d.RequestId);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void MatchControl_RoundTrips()
|
||||
{
|
||||
var m = new MatchControlMsg { RequestId = 123 };
|
||||
var d = MatchControlMsg.Decode(m.Encode());
|
||||
Assert.Equal(123, d.RequestId);
|
||||
Assert.Equal(0, MatchControlMsg.Decode(System.Array.Empty<byte>()).RequestId);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void MatchAssigned_RoundTrips()
|
||||
{
|
||||
var m = new MatchAssignedMsg { GameId = "rps", Version = 2, RequestId = 88 };
|
||||
var d = MatchAssignedMsg.Decode(m.Encode());
|
||||
Assert.Equal("rps", d.GameId);
|
||||
Assert.Equal(2, d.Version);
|
||||
Assert.Equal(88, d.RequestId);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -141,6 +166,7 @@ namespace XWorld.Framework.Tests
|
||||
Assert.Equal((ushort)7, (ushort)FrameworkOpcode.Error);
|
||||
Assert.Equal((ushort)16, (ushort)FrameworkOpcode.WorldChatSend);
|
||||
Assert.Equal((ushort)17, (ushort)FrameworkOpcode.WorldChatMessage);
|
||||
Assert.Equal((ushort)18, (ushort)FrameworkOpcode.MatchCancel);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -209,6 +235,7 @@ namespace XWorld.Framework.Tests
|
||||
MatchFoundMsg d = MatchFoundMsg.Decode(w.ToArray());
|
||||
|
||||
Assert.Equal("legacy-room", d.RoomId);
|
||||
Assert.Equal(0, d.RequestId);
|
||||
Assert.Equal(2, d.Players.Count);
|
||||
Assert.Equal(1001, d.Players[0].PlayerId);
|
||||
Assert.Equal("LegacyAlice", d.Players[0].Name);
|
||||
|
||||
Reference in New Issue
Block a user