public void RoomFlags_DeleteNullPropsAfterStateRestoreTest() { if (!this.UsePlugins) { Assert.Ignore("This test needs plugins"); } UnifiedTestClient masterClient1 = null; UnifiedTestClient masterClient2 = null; try { // create game on the game server string roomName = this.GenerateRandomizedRoomName(MethodBase.GetCurrentMethod().Name); var gameProperties = new Hashtable(); gameProperties["P1"] = 1; gameProperties["P2"] = 2; gameProperties["L1"] = 1; gameProperties["L2"] = 2; gameProperties["L3"] = 3; var createGameRequest = new CreateGameRequest { GameId = roomName, RoomFlags = RoomOptionFlags.DeleteNullProps, GameProperties = gameProperties, Plugins = new[] { "SaveLoadStateTestPlugin" }, }; masterClient1 = this.CreateMasterClientAndAuthenticate(Player1); var cgResponse = masterClient1.CreateGame(createGameRequest); this.ConnectAndAuthenticate(masterClient1, cgResponse.Address); masterClient1.CreateGame(createGameRequest); Thread.Sleep(100); masterClient1.LeaveGame();// leave game, so that game will be persisted Thread.Sleep(100); this.ConnectAndAuthenticate(masterClient1, this.MasterAddress); var joinRequest = new JoinGameRequest() { GameId = roomName, JoinMode = JoinModes.RejoinOrJoin, Plugins = new[] { "SaveLoadStateTestPlugin" }, }; var jgResponse = masterClient1.JoinGame(joinRequest, ErrorCode.Ok); this.ConnectAndAuthenticate(masterClient1, jgResponse.Address); jgResponse = masterClient1.JoinGame(joinRequest); masterClient1.OpSetPropertiesOfRoom ( new Hashtable { { "P1", null } } ); masterClient2 = this.CreateMasterClientAndAuthenticate(Player2); jgResponse = masterClient2.JoinGame(joinRequest, ErrorCode.Ok); this.ConnectAndAuthenticate(masterClient2, jgResponse.Address); jgResponse = masterClient2.JoinGame(joinRequest); Assert.That(jgResponse.GameProperties.Contains("P1"), Is.False); masterClient1.OpSetPropertiesOfRoom ( new Hashtable { { "P2", null } } ); var propertiesChangedEvent = masterClient2.WaitForEvent(EventCode.PropertiesChanged, this.WaitTimeout); var properties = (Hashtable)propertiesChangedEvent[(byte)ParameterKey.Properties]; Assert.That(properties, Is.Not.Null); Assert.That(properties.Contains("P2")); Assert.That(properties["P2"], Is.Null); } finally { DisposeClients(masterClient1, masterClient2); } }
public void RoomFlags_DeleteNullPropsTest() { UnifiedTestClient masterClient1 = null; UnifiedTestClient masterClient2 = null; try { // create game on the game server string roomName = this.GenerateRandomizedRoomName(MethodBase.GetCurrentMethod().Name); var gameProperties = new Hashtable(); gameProperties["P1"] = 1; gameProperties["P2"] = 2; gameProperties["L1"] = 1; gameProperties["L2"] = 2; gameProperties["L3"] = 3; var createGameRequest = new OperationRequest { OperationCode = OperationCode.CreateGame, Parameters = new Dictionary <byte, object> { { ParameterCode.RoomName, roomName }, { ParameterCode.Properties, gameProperties }, } }; createGameRequest.Parameters.Add((byte)ParameterKey.RoomOptionFlags, RoomOptionFlags.DeleteNullProps); masterClient1 = this.CreateMasterClientAndAuthenticate(Player1); var cgResponse = masterClient1.SendRequestAndWaitForResponse(createGameRequest); this.ConnectAndAuthenticate(masterClient1, (string)cgResponse[ParameterCode.Address]); masterClient1.SendRequestAndWaitForResponse(createGameRequest); masterClient1.OpSetPropertiesOfRoom ( new Hashtable { { "P1", null } } ); masterClient2 = this.CreateMasterClientAndAuthenticate(Player2); var joinRequest = new JoinGameRequest() { GameId = roomName, }; var jgResponse = masterClient2.JoinGame(joinRequest, ErrorCode.Ok); this.ConnectAndAuthenticate(masterClient2, jgResponse.Address); jgResponse = masterClient2.JoinGame(joinRequest); Assert.That(jgResponse.GameProperties.Contains("P1"), Is.False); masterClient1.OpSetPropertiesOfRoom ( new Hashtable { { "P2", null } } ); var propertiesChangedEvent = masterClient2.WaitForEvent(EventCode.PropertiesChanged, this.WaitTimeout); var properties = (Hashtable)propertiesChangedEvent[(byte)ParameterKey.Properties]; Assert.That(properties, Is.Not.Null); Assert.That(properties.Contains("P2")); Assert.That(properties["P2"], Is.Null); } finally { DisposeClients(masterClient1, masterClient2); } }