public void WhenNamedClientDropsOutOfGameSessionBeforeLaunchOtherClientsAreNotified() { Jabberwocky.SoC.Service.GameSessionManager gameSessionManager = null; try { var expectedMessageForTestPlayer1 = new PlayerHasLeftGameMessage(); var expectedMessageForTestPlayer2 = new OtherPlayerHasLeftGameMessage(TestPlayer1UserName); var testPlayer1Data = new Jabberwocky.SoC.Service.PlayerData(TestPlayer1UserName); var mockPlayerCardRepository = this.CreateMockPlayerCardRepository(testPlayer1Data); gameSessionManager = GameSessionManagerTestExtensions.CreateGameSessionManagerForTest(4) .AddPlayerCardRepository(mockPlayerCardRepository) .WaitUntilGameSessionManagerHasStarted(); var testPlayer1 = new TestClient(TestPlayer1UserName, gameSessionManager); var testPlayer2 = new TestClient(TestPlayer2UserName, gameSessionManager); var testScript = new TestScript(testPlayer1, testPlayer2); testScript.AllClientsJoinGame(); testScript.WaitUntilClientsReceiveMessageOfType(typeof(PlayerDataReceivedMessage), testPlayer1, testPlayer2); // Act testPlayer1.LeaveGame(); // Assert testScript.WaitUntilClientsReceiveMessage(expectedMessageForTestPlayer1, testPlayer1); testScript.WaitUntilClientsReceiveMessage(expectedMessageForTestPlayer2, testPlayer2); } finally { gameSessionManager?.WaitUntilGameSessionManagerHasStopped(); } }
public void WhenNamedClientDropsOutOfGameSessionAfterLaunchOtherClientsAreNotified() { Jabberwocky.SoC.Service.GameSessionManager gameSessionManager = null; try { var expectedMessageForTestPlayer1 = new PlayerHasLeftGameMessage(); var expectedMessageForOtherTestPlayers = new OtherPlayerHasLeftGameMessage(TestPlayer1UserName); var testPlayer1Data = new Jabberwocky.SoC.Service.PlayerData(TestPlayer1UserName); var testPlayer2Data = new Jabberwocky.SoC.Service.PlayerData(TestPlayer2UserName); var testPlayer3Data = new Jabberwocky.SoC.Service.PlayerData(TestPlayer3UserName); var testPlayer4Data = new Jabberwocky.SoC.Service.PlayerData(TestPlayer4UserName); var mockPlayerCardRepository = this.CreateMockPlayerCardRepository(testPlayer1Data, testPlayer2Data, testPlayer3Data, testPlayer4Data); gameSessionManager = GameSessionManagerTestExtensions.CreateGameSessionManagerForTest(4) .AddPlayerCardRepository(mockPlayerCardRepository) .WaitUntilGameSessionManagerHasStarted(); var testPlayer1 = new TestClient(TestPlayer1UserName, gameSessionManager); var testPlayer2 = new TestClient(TestPlayer2UserName, gameSessionManager); var testPlayer3 = new TestClient(TestPlayer3UserName, gameSessionManager); var testPlayer4 = new TestClient(TestPlayer4UserName, gameSessionManager); var testScript = new TestScript(testPlayer1, testPlayer2, testPlayer3, testPlayer4); testScript.RunUntil(TestScript.RunPoints.RunUntilClientsReceiveGameInitializationMessage); // Act testPlayer1.LeaveGame(); // Assert testScript.WaitUntilClientsReceiveMessage(expectedMessageForTestPlayer1, testPlayer1); testScript.WaitUntilClientsReceiveMessage(expectedMessageForOtherTestPlayers, testPlayer2, testPlayer3, testPlayer4); } finally { gameSessionManager?.WaitUntilGameSessionManagerHasStopped(); } }