public void TestGameLostWithMultiplePlayingPlayer() { IGame game = CreateGame("game1", 5, 10); game.Start(new CancellationTokenSource()); CountCallTetriNETCallback callback1 = new CountCallTetriNETCallback(); IClient client1 = CreateClient("client1", callback1); game.Join(client1, false); CountCallTetriNETCallback callback2 = new CountCallTetriNETCallback(); IClient client2 = CreateClient("client2", callback2); game.Join(client2, false); CountCallTetriNETCallback callback3 = new CountCallTetriNETCallback(); IClient client3 = CreateClient("client3", callback3); game.Join(client3, false); game.StartGame(client1); callback1.Reset(); callback2.Reset(); callback3.Reset(); game.GameLost(client2); FlushActionQueue(); Assert.AreEqual(GameStates.GameStarted, game.State); Assert.AreEqual(ClientStates.Playing, client1.State); Assert.AreEqual(ClientStates.GameLost, client2.State); Assert.AreEqual(ClientStates.Playing, client3.State); Assert.AreEqual(1, callback1.GetCallCount("OnPlayerLost")); Assert.AreEqual(0, callback2.GetCallCount("OnPlayerLost")); Assert.AreEqual(1, callback3.GetCallCount("OnPlayerLost")); }
public void TestGameLostWithTwoPlayingPlayers() { IGame game = CreateGame("game1", 5, 10); game.Start(new CancellationTokenSource()); CountCallTetriNETCallback callback1 = new CountCallTetriNETCallback(); IClient client1 = CreateClient("client1", callback1); game.Join(client1, false); CountCallTetriNETCallback callback2 = new CountCallTetriNETCallback(); IClient client2 = CreateClient("client2", callback2); game.Join(client2, false); CountCallTetriNETCallback callback3 = new CountCallTetriNETCallback(); IClient client3 = CreateClient("client3", callback3); game.Join(client3, true); game.StartGame(client1); callback1.Reset(); callback2.Reset(); callback3.Reset(); game.GameLost(client2); FlushActionQueue(); Assert.AreEqual(GameStates.WaitStartGame, game.State); Assert.AreEqual(ClientStates.WaitInGame, client1.State); Assert.AreEqual(ClientStates.GameLost, client2.State); Assert.AreEqual(ClientStates.WaitInGame, client3.State); Assert.AreEqual(1, callback1.GetCallCount("OnPlayerLost")); Assert.AreEqual(0, callback2.GetCallCount("OnPlayerLost")); Assert.AreEqual(1, callback3.GetCallCount("OnPlayerLost")); Assert.AreEqual(1, callback1.GetCallCount("OnGameFinished")); Assert.AreEqual(1, callback2.GetCallCount("OnGameFinished")); Assert.AreEqual(1, callback3.GetCallCount("OnGameFinished")); Assert.AreEqual(1, callback1.GetCallCount("OnWinListModified")); Assert.AreEqual(1, callback2.GetCallCount("OnWinListModified")); Assert.AreEqual(1, callback3.GetCallCount("OnWinListModified")); Assert.AreEqual(1, callback1.GetCallCount("OnPlayerWon")); Assert.AreEqual(1, callback2.GetCallCount("OnPlayerWon")); Assert.AreEqual(1, callback3.GetCallCount("OnPlayerWon")); //Assert.AreEqual(client1.Id, callback1.GetCallParameters("OnPlayerWon", 0)[0]); }
public void TestLeavePlayingPlayerWhileGameStartedMultiplePlayingPlayerLeft() { IGame game = CreateGame("game1", 5, 10); game.Start(new CancellationTokenSource()); CountCallTetriNETCallback callback1 = new CountCallTetriNETCallback(); IClient client1 = CreateClient("client1", callback1); game.Join(client1, false); CountCallTetriNETCallback callback2 = new CountCallTetriNETCallback(); IClient client2 = CreateClient("client2", callback2); game.Join(client2, false); CountCallTetriNETCallback callback3 = new CountCallTetriNETCallback(); IClient client3 = CreateClient("client3", callback3); game.Join(client3, false); game.StartGame(client1); callback1.Reset(); callback2.Reset(); callback3.Reset(); game.Leave(client2); Assert.AreEqual(GameStates.GameStarted, game.State); Assert.AreEqual(ClientStates.Playing, client1.State); Assert.AreEqual(ClientStates.Playing, client3.State); Assert.AreEqual(0, callback1.GetCallCount("OnGameFinished")); Assert.AreEqual(0, callback2.GetCallCount("OnGameFinished")); Assert.AreEqual(0, callback3.GetCallCount("OnGameFinished")); Assert.AreEqual(0, callback1.GetCallCount("OnWinListModified")); Assert.AreEqual(0, callback2.GetCallCount("OnWinListModified")); Assert.AreEqual(0, callback3.GetCallCount("OnWinListModified")); }
public void TestGameLostWithOnePlayingPlayer() { IGame game = CreateGame("game1", 5, 10); game.Start(new CancellationTokenSource()); CountCallTetriNETCallback callback1 = new CountCallTetriNETCallback(); IClient client1 = CreateClient("client1", callback1); game.Join(client1, false); game.StartGame(client1); callback1.Reset(); game.GameLost(client1); FlushActionQueue(); Assert.AreEqual(GameStates.WaitStartGame, game.State); Assert.AreEqual(ClientStates.GameLost, client1.State); Assert.AreEqual(0, callback1.GetCallCount("OnPlayerLost")); Assert.AreEqual(1, callback1.GetCallCount("OnGameFinished")); Assert.AreEqual(0, callback1.GetCallCount("OnWinListModified")); }
public void TestJoinSpectatorWhileGameStarted() { IGame game = CreateGame("game1", 5, 10); game.Start(new CancellationTokenSource()); CountCallTetriNETCallback callback1 = new CountCallTetriNETCallback(); IClient client1 = CreateClient("client1", callback1); game.Join(client1, false); CountCallTetriNETCallback callback2 = new CountCallTetriNETCallback(); IClient client2 = CreateClient("client2", callback2); game.Join(client2, false); CountCallTetriNETCallback callback3 = new CountCallTetriNETCallback(); IClient client3 = CreateClient("client3", callback3); game.Join(client3, true); game.StartGame(client1); callback1.Reset(); callback2.Reset(); callback3.Reset(); CountCallTetriNETCallback callback4 = new CountCallTetriNETCallback(); IClient client4 = CreateClient("client4", callback4); game.Join(client4, true); Assert.AreEqual(ClientStates.WaitInGame, client4.State); Assert.AreEqual(ClientRoles.Spectator, client4.Roles); Assert.AreEqual(1, callback1.GetCallCount("OnClientGameJoined")); Assert.AreEqual(1, callback2.GetCallCount("OnClientGameJoined")); Assert.AreEqual(1, callback3.GetCallCount("OnClientGameJoined")); Assert.AreEqual(1, callback4.GetCallCount("OnGameJoined")); }