public void EventCache_ActorReplaceData() { UnifiedTestClient client1 = null; UnifiedTestClient client2 = null; UnifiedTestClient client3 = null; UnifiedTestClient client4 = null; try { var roomName = this.GenerateRandomizedRoomName(MethodBase.GetCurrentMethod().Name); // create room client1 = this.CreateMasterClientAndAuthenticate(this.Player1); var createGameRequest = new CreateGameRequest { GameId = roomName, CheckUserOnJoin = !string.IsNullOrEmpty(this.Player1), }; var createGameResponse = client1.CreateGame(createGameRequest); this.ConnectAndAuthenticate(client1, createGameResponse.Address); // creation on GS client1.CreateGame(createGameRequest); // second player joins and check that there is no removed event client2 = this.CreateMasterClientAndAuthenticate(this.Player2); client3 = this.CreateMasterClientAndAuthenticate(this.Player3); this.ConnectClientToGame(client2, roomName); this.ConnectClientToGame(client3, roomName); var eventsData = new Hashtable { { 1, 1 } }; var eventsData2 = new Hashtable { { 2, 2 } }; AddActorEventCacheData(client1, client2, client3, eventsData); client2.Disconnect(); client3.Disconnect(); // update cached message client1.SendRequest(new OperationRequest { OperationCode = OperationCode.RaiseEvent, Parameters = new Dictionary <byte, object> { { ParameterCode.Data, eventsData2 }, { ParameterCode.Cache, (byte)EventCaching.ReplaceCache }, { ParameterCode.Code, (byte)1 }, } }); client4 = this.CreateMasterClientAndAuthenticate("Player4"); this.ConnectClientToGame(client4, roomName); client4.WaitForEvent(EventCode.Join); EventData ev; Assert.That(client4.TryWaitEvent(1, this.WaitTimeout, out ev), Is.True); Assert.That(ev[(byte)ParameterKey.Data], Is.EqualTo(eventsData2)); client4.CheckThereIsEvent(2); client4.CheckThereIsEvent(3); } finally { DisposeClients(client1, client2, client3, client4); } }