From 046a2fbdc3867e134be4e8a3cf3cbada7f3e9a90 Mon Sep 17 00:00:00 2001 From: lotodore Date: Sun, 18 Jan 2015 01:34:38 +0100 Subject: [PATCH] More work on java tests. --- tests/src/de/pokerth/test/CreateGameTest.java | 3 +- tests/src/de/pokerth/test/RejoinGameTest.java | 126 ++++++++++------- .../de/pokerth/test/RejoinMultiGameTest.java | 130 +++++++++++------- .../de/pokerth/test/RunNormalGameTest.java | 109 +++++++++------ .../de/pokerth/test/RunRankingGameTest.java | 10 +- 5 files changed, 232 insertions(+), 146 deletions(-) diff --git a/tests/src/de/pokerth/test/CreateGameTest.java b/tests/src/de/pokerth/test/CreateGameTest.java index 965d3ed6..0185f676 100644 --- a/tests/src/de/pokerth/test/CreateGameTest.java +++ b/tests/src/de/pokerth/test/CreateGameTest.java @@ -60,8 +60,7 @@ public class CreateGameTest extends TestBase { } msg = receiveMessage(); - if (msg.hasLobbyMessage() && msg.getLobbyMessage().hasJoinGameAckMessage() && msg.getLobbyMessage().getMessageType() == LobbyMessageType.Type_JoinGameAckMessage) - { + if (msg.hasLobbyMessage() && msg.getLobbyMessage().hasJoinGameAckMessage() && msg.getLobbyMessage().getMessageType() == LobbyMessageType.Type_JoinGameAckMessage) { assertTrue(msg.getLobbyMessage().getJoinGameAckMessage().getGameId() != 0); NetGameInfo receivedGameInfo = msg.getLobbyMessage().getJoinGameAckMessage().getGameInfo(); assertEquals(receivedGameInfo.getDelayBetweenHands(), gameInfo.getDelayBetweenHands()); diff --git a/tests/src/de/pokerth/test/RejoinGameTest.java b/tests/src/de/pokerth/test/RejoinGameTest.java index acf03c41..d56757b3 100644 --- a/tests/src/de/pokerth/test/RejoinGameTest.java +++ b/tests/src/de/pokerth/test/RejoinGameTest.java @@ -26,9 +26,13 @@ import java.util.Collection; import org.junit.Test; +import de.pokerth.protocol.ProtoBuf.GameManagementMessage; +import de.pokerth.protocol.ProtoBuf.GameManagementMessage.GameManagementMessageType; +import de.pokerth.protocol.ProtoBuf.GameMessage; import de.pokerth.protocol.ProtoBuf.NetGameInfo; import de.pokerth.protocol.ProtoBuf.PlayerListMessage.PlayerListNotification; import de.pokerth.protocol.ProtoBuf.StartEventAckMessage; +import de.pokerth.protocol.ProtoBuf.GameMessage.GameMessageType; import de.pokerth.protocol.ProtoBuf.NetGameInfo.EndRaiseMode; import de.pokerth.protocol.ProtoBuf.NetGameInfo.NetGameType; import de.pokerth.protocol.ProtoBuf.PokerTHMessage.PokerTHMessageType; @@ -47,7 +51,7 @@ public class RejoinGameTest extends TestBase { // Waiting for player list update. PokerTHMessage msg; msg = receiveMessage(); - if (!msg.hasPlayerListMessage()) { + if (!(msg.hasLobbyMessage() && msg.getLobbyMessage().hasPlayerListMessage())) { failOnErrorMessage(msg); fail("Invalid message."); } @@ -62,22 +66,22 @@ public class RejoinGameTest extends TestBase { // Game list update (new game) msg = receiveMessage(); - if (!msg.hasGameListNewMessage()) { + if (!(msg.hasLobbyMessage() && msg.getLobbyMessage().hasGameListNewMessage())) { failOnErrorMessage(msg); fail("Invalid message."); } // Join game ack. msg = receiveMessage(); - if (!msg.hasJoinGameAckMessage()) { + if (!(msg.hasLobbyMessage() && msg.getLobbyMessage().hasJoinGameAckMessage())) { failOnErrorMessage(msg); fail("Could not create game!"); } - int gameId = msg.getJoinGameAckMessage().getGameId(); + int gameId = msg.getLobbyMessage().getJoinGameAckMessage().getGameId(); // Game list update (player joined). msg = receiveMessage(); - if (!msg.hasGameListPlayerJoinedMessage()) { + if (!(msg.hasLobbyMessage() && msg.getLobbyMessage().hasGameListPlayerJoinedMessage())) { failOnErrorMessage(msg); fail("Invalid message."); } @@ -93,8 +97,9 @@ public class RejoinGameTest extends TestBase { // Waiting for player list update. do { msg = receiveMessage(s[i]); - } while (msg.hasGameListNewMessage() || msg.hasGameListPlayerJoinedMessage() || msg.hasGamePlayerJoinedMessage()); - if (!msg.hasPlayerListMessage()) { + } while ((msg.hasLobbyMessage() && (msg.getLobbyMessage().hasGameListNewMessage() || msg.getLobbyMessage().hasGameListPlayerJoinedMessage())) + || (msg.hasGameMessage() && msg.getGameMessage().hasGameManagementMessage() && msg.getGameMessage().getGameManagementMessage().hasGamePlayerJoinedMessage())); + if (!(msg.hasLobbyMessage() && msg.getLobbyMessage().hasPlayerListMessage())) { failOnErrorMessage(msg); fail("Invalid message."); } @@ -102,24 +107,24 @@ public class RejoinGameTest extends TestBase { do { msg = receiveMessage(s[i]); failOnErrorMessage(msg); - } while (!msg.hasJoinGameAckMessage() && !msg.hasJoinGameFailedMessage()); - if (!msg.hasJoinGameAckMessage()) { + } while (!(msg.hasLobbyMessage() && (msg.getLobbyMessage().hasJoinGameAckMessage() || msg.getLobbyMessage().hasJoinGameFailedMessage()))); + if (!(msg.hasLobbyMessage() && msg.getLobbyMessage().hasJoinGameAckMessage())) { fail("User " + username + " could not join ranking game."); } // The player should have joined the game. msg = receiveMessage(); - if (!msg.hasPlayerListMessage()) { + if (!(msg.hasLobbyMessage() && msg.getLobbyMessage().hasPlayerListMessage())) { failOnErrorMessage(msg); fail("Invalid message."); } msg = receiveMessage(); - if (!msg.hasGamePlayerJoinedMessage()) { + if (!(msg.hasGameMessage() && msg.getGameMessage().hasGameManagementMessage() && msg.getGameMessage().getGameManagementMessage().hasGamePlayerJoinedMessage())) { failOnErrorMessage(msg); fail("Invalid message."); } msg = receiveMessage(); - if (!msg.hasGameListPlayerJoinedMessage()) { + if (!(msg.hasLobbyMessage() && msg.getLobbyMessage().hasGameListPlayerJoinedMessage())) { failOnErrorMessage(msg); fail("Invalid message."); } @@ -127,7 +132,7 @@ public class RejoinGameTest extends TestBase { // Server should automatically send start event. msg = receiveMessage(); - if (!msg.hasStartEventMessage()) { + if (!(msg.hasGameMessage() && msg.getGameMessage().hasGameManagementMessage() && msg.getGameMessage().getGameManagementMessage().hasStartEventMessage())) { failOnErrorMessage(msg); fail("Invalid message."); } @@ -135,16 +140,28 @@ public class RejoinGameTest extends TestBase { do { msg = receiveMessage(s[i]); failOnErrorMessage(msg); - } while (!msg.hasStartEventMessage()); + } while (!(msg.hasGameMessage() && msg.getGameMessage().hasGameManagementMessage() && msg.getGameMessage().getGameManagementMessage().hasStartEventMessage())); } // Acknowledge start event. StartEventAckMessage startAck = StartEventAckMessage.newBuilder() - .setGameId(gameId) .build(); + + GameManagementMessage gameManagement = GameManagementMessage.newBuilder() + .setMessageType(GameManagementMessageType.Type_StartEventAckMessage) + .setStartEventAckMessage(startAck) + .build(); + + GameMessage game = GameMessage.newBuilder() + .setGameId(gameId) + .setMessageType(GameMessageType.Type_GameManagementMessage) + .setGameManagementMessage(gameManagement) + .build(); + msg = PokerTHMessage.newBuilder() - .setMessageType(PokerTHMessageType.Type_StartEventAckMessage) - .setStartEventAckMessage(startAck) - .build(); + .setMessageType(PokerTHMessageType.Type_GameMessage) + .setGameMessage(game) + .build(); + sendMessage(msg); for (int i = 0; i < 9; i++) { sendMessage(msg, s[i]); @@ -152,13 +169,13 @@ public class RejoinGameTest extends TestBase { // Game list update (game now running). msg = receiveMessage(); - if (!msg.hasGameListUpdateMessage()) { + if (!(msg.hasLobbyMessage() && msg.getLobbyMessage().hasGameListUpdateMessage())) { failOnErrorMessage(msg); fail("Invalid message."); } msg = receiveMessage(); - if (!msg.hasGameStartInitialMessage()) { + if (!(msg.hasGameMessage() && msg.getGameMessage().hasGameManagementMessage() && msg.getGameMessage().getGameManagementMessage().hasGameStartInitialMessage())) { failOnErrorMessage(msg); fail("Invalid message."); } @@ -173,7 +190,7 @@ public class RejoinGameTest extends TestBase { failOnErrorMessage(inMsg); } } - } while (!msg.hasHandStartMessage()); + } while (!(msg.hasGameMessage() && msg.getGameMessage().hasGameEngineMessage() && msg.getGameMessage().getGameEngineMessage().hasHandStartMessage())); // Leave the game by closing the socket. sock.close(); @@ -185,9 +202,9 @@ public class RejoinGameTest extends TestBase { do { msg = receiveMessage(s[i]); failOnErrorMessage(msg); - } while (!msg.hasPlayerListMessage()); - assertEquals(firstPlayerId, msg.getPlayerListMessage().getPlayerId()); - assertEquals(PlayerListNotification.playerListLeft, msg.getPlayerListMessage().getPlayerListNotification()); + } while (!(msg.hasLobbyMessage() && msg.getLobbyMessage().hasPlayerListMessage())); + assertEquals(firstPlayerId, msg.getLobbyMessage().getPlayerListMessage().getPlayerId()); + assertEquals(PlayerListNotification.playerListLeft, msg.getLobbyMessage().getPlayerListMessage().getPlayerListNotification()); } sock = new Socket("localhost", 7234); @@ -197,8 +214,9 @@ public class RejoinGameTest extends TestBase { // Waiting for player list update. do { msg = receiveMessage(); - } while (msg.hasGameListNewMessage() || msg.hasGameListPlayerJoinedMessage() || msg.hasGamePlayerJoinedMessage()); - if (!msg.hasPlayerListMessage()) { + } while ((msg.hasLobbyMessage() && (msg.getLobbyMessage().hasGameListNewMessage() || msg.getLobbyMessage().hasGameListPlayerJoinedMessage())) + || (msg.hasGameMessage() && msg.getGameMessage().hasGameManagementMessage() && msg.getGameMessage().getGameManagementMessage().hasGamePlayerJoinedMessage())); + if (!(msg.hasLobbyMessage() && msg.getLobbyMessage().hasPlayerListMessage())) { failOnErrorMessage(msg); fail("Invalid message."); } @@ -207,8 +225,8 @@ public class RejoinGameTest extends TestBase { do { msg = receiveMessage(); failOnErrorMessage(msg); - } while (!msg.hasJoinGameAckMessage() && !msg.hasJoinGameFailedMessage()); - if (!msg.hasJoinGameAckMessage()) { + } while (!(msg.hasLobbyMessage() && (msg.getLobbyMessage().hasJoinGameAckMessage() || msg.getLobbyMessage().hasJoinGameFailedMessage()))); + if (!(msg.hasLobbyMessage() && msg.getLobbyMessage().hasJoinGameAckMessage())) { fail("User " + AuthUser + " could not rejoin normal game."); } @@ -217,63 +235,75 @@ public class RejoinGameTest extends TestBase { do { msg = receiveMessage(s[i]); failOnErrorMessage(msg); - } while (!msg.hasPlayerListMessage()); - assertEquals(firstPlayerIdAfterRejoin, msg.getPlayerListMessage().getPlayerId()); - assertEquals(PlayerListNotification.playerListNew, msg.getPlayerListMessage().getPlayerListNotification()); + } while (!(msg.hasLobbyMessage() && msg.getLobbyMessage().hasPlayerListMessage())); + assertEquals(firstPlayerIdAfterRejoin, msg.getLobbyMessage().getPlayerListMessage().getPlayerId()); + assertEquals(PlayerListNotification.playerListNew, msg.getLobbyMessage().getPlayerListMessage().getPlayerListNotification()); } // Wait for start event. do { msg = receiveMessage(); failOnErrorMessage(msg); - } while (!msg.hasStartEventMessage()); + } while (!(msg.hasGameMessage() && msg.getGameMessage().hasGameManagementMessage() && msg.getGameMessage().getGameManagementMessage().hasStartEventMessage())); - assertEquals(gameId, msg.getStartEventMessage().getGameId()); - assertEquals(StartEventType.rejoinEvent, msg.getStartEventMessage().getStartEventType()); + assertEquals(gameId, msg.getGameMessage().getGameId()); + assertEquals(StartEventType.rejoinEvent, msg.getGameMessage().getGameManagementMessage().getStartEventMessage().getStartEventType()); // Acknowledge start event. startAck = StartEventAckMessage.newBuilder() - .setGameId(gameId) - .build(); + .build(); + + gameManagement = GameManagementMessage.newBuilder() + .setMessageType(GameManagementMessageType.Type_StartEventAckMessage) + .setStartEventAckMessage(startAck) + .build(); + + game = GameMessage.newBuilder() + .setGameId(gameId) + .setMessageType(GameMessageType.Type_GameManagementMessage) + .setGameManagementMessage(gameManagement) + .build(); + msg = PokerTHMessage.newBuilder() - .setMessageType(PokerTHMessageType.Type_StartEventAckMessage) - .setStartEventAckMessage(startAck) - .build(); + .setMessageType(PokerTHMessageType.Type_GameMessage) + .setGameMessage(game) + .build(); + sendMessage(msg); // Wait for game start. This may take a while, because rejoin is performed at the beginning of the next hand. do { msg = receiveMessage(); failOnErrorMessage(msg); - } while (!msg.hasGameStartRejoinMessage()); + } while (!(msg.hasGameMessage() && msg.getGameMessage().hasGameManagementMessage() && msg.getGameMessage().getGameManagementMessage().hasGameStartRejoinMessage())); // Check whether we got all necessary data to rejoin. - assertEquals(gameId, msg.getGameStartRejoinMessage().getGameId()); + assertEquals(gameId, msg.getGameMessage().getGameId()); // We left at the first hand. - assertEquals(1, msg.getGameStartRejoinMessage().getHandNum()); + assertEquals(1, msg.getGameMessage().getGameManagementMessage().getGameStartRejoinMessage().getHandNum()); // 10 Players should now be active again. - assertEquals(10, msg.getGameStartRejoinMessage().getRejoinPlayerDataCount()); + assertEquals(10, msg.getGameMessage().getGameManagementMessage().getGameStartRejoinMessage().getRejoinPlayerDataCount()); // All other players should have received "player id changed". for (int i = 0; i < 9; i++) { do { msg = receiveMessage(s[i]); failOnErrorMessage(msg); - } while (!msg.hasPlayerIdChangedMessage()); - assertEquals(firstPlayerId, msg.getPlayerIdChangedMessage().getOldPlayerId()); - assertEquals(firstPlayerIdAfterRejoin, msg.getPlayerIdChangedMessage().getNewPlayerId()); + } while (!(msg.hasGameMessage() && msg.getGameMessage().hasGameManagementMessage() && msg.getGameMessage().getGameManagementMessage().hasPlayerIdChangedMessage())); + assertEquals(firstPlayerId, msg.getGameMessage().getGameManagementMessage().getPlayerIdChangedMessage().getOldPlayerId()); + assertEquals(firstPlayerIdAfterRejoin, msg.getGameMessage().getGameManagementMessage().getPlayerIdChangedMessage().getNewPlayerId()); } // Everyone should receive a "hand start message" now. do { msg = receiveMessage(); failOnErrorMessage(msg); - } while (!msg.hasHandStartMessage()); + } while (!(msg.hasGameMessage() && msg.getGameMessage().hasGameEngineMessage() && msg.getGameMessage().getGameEngineMessage().hasHandStartMessage())); for (int i = 0; i < 9; i++) { do { msg = receiveMessage(s[i]); failOnErrorMessage(msg); - } while (!msg.hasHandStartMessage()); + } while (!(msg.hasGameMessage() && msg.getGameMessage().hasGameEngineMessage() && msg.getGameMessage().getGameEngineMessage().hasHandStartMessage())); } for (int i = 0; i < 9; i++) { diff --git a/tests/src/de/pokerth/test/RejoinMultiGameTest.java b/tests/src/de/pokerth/test/RejoinMultiGameTest.java index 15343af3..9c16db6d 100644 --- a/tests/src/de/pokerth/test/RejoinMultiGameTest.java +++ b/tests/src/de/pokerth/test/RejoinMultiGameTest.java @@ -28,8 +28,12 @@ import java.util.Collection; import org.junit.Test; +import de.pokerth.protocol.ProtoBuf.GameManagementMessage; +import de.pokerth.protocol.ProtoBuf.GameMessage; import de.pokerth.protocol.ProtoBuf.NetGameInfo; import de.pokerth.protocol.ProtoBuf.StartEventAckMessage; +import de.pokerth.protocol.ProtoBuf.GameManagementMessage.GameManagementMessageType; +import de.pokerth.protocol.ProtoBuf.GameMessage.GameMessageType; import de.pokerth.protocol.ProtoBuf.NetGameInfo.EndRaiseMode; import de.pokerth.protocol.ProtoBuf.NetGameInfo.NetGameType; import de.pokerth.protocol.ProtoBuf.PlayerListMessage.PlayerListNotification; @@ -53,7 +57,7 @@ public class RejoinMultiGameTest extends TestBase { // Waiting for player list update. PokerTHMessage msg; msg = receiveMessage(); - if (!msg.hasPlayerListMessage()) { + if (!(msg.hasLobbyMessage() && msg.getLobbyMessage().hasPlayerListMessage())) { failOnErrorMessage(msg); fail("Invalid message."); } @@ -68,22 +72,22 @@ public class RejoinMultiGameTest extends TestBase { // Game list update (new game) msg = receiveMessage(); - if (!msg.hasGameListNewMessage()) { + if (!(msg.hasLobbyMessage() && msg.getLobbyMessage().hasGameListNewMessage())) { failOnErrorMessage(msg); fail("Invalid message."); } // Join game ack. msg = receiveMessage(); - if (!msg.hasJoinGameAckMessage()) { + if (!(msg.hasLobbyMessage() && msg.getLobbyMessage().hasJoinGameAckMessage())) { failOnErrorMessage(msg); fail("Could not create game!"); } - int gameId = msg.getJoinGameAckMessage().getGameId(); + int gameId = msg.getLobbyMessage().getJoinGameAckMessage().getGameId(); // Game list update (player joined). msg = receiveMessage(); - if (!msg.hasGameListPlayerJoinedMessage()) { + if (!(msg.hasLobbyMessage() && msg.getLobbyMessage().hasGameListPlayerJoinedMessage())) { failOnErrorMessage(msg); fail("Invalid message."); } @@ -101,8 +105,9 @@ public class RejoinMultiGameTest extends TestBase { // Waiting for player list update. do { msg = receiveMessage(s[i]); - } while (msg.hasGameListNewMessage() || msg.hasGameListPlayerJoinedMessage() || msg.hasGamePlayerJoinedMessage()); - if (!msg.hasPlayerListMessage()) { + } while ((msg.hasLobbyMessage() && (msg.getLobbyMessage().hasGameListNewMessage() || msg.getLobbyMessage().hasGameListPlayerJoinedMessage())) + || (msg.hasGameMessage() && msg.getGameMessage().hasGameManagementMessage() && msg.getGameMessage().getGameManagementMessage().hasGamePlayerJoinedMessage())); + if (!(msg.hasLobbyMessage() && msg.getLobbyMessage().hasPlayerListMessage())) { failOnErrorMessage(msg); fail("Invalid message."); } @@ -110,24 +115,24 @@ public class RejoinMultiGameTest extends TestBase { do { msg = receiveMessage(s[i]); failOnErrorMessage(msg); - } while (!msg.hasJoinGameAckMessage() && !msg.hasJoinGameFailedMessage()); - if (!msg.hasJoinGameAckMessage()) { + } while (!(msg.hasLobbyMessage() && (msg.getLobbyMessage().hasJoinGameAckMessage() || msg.getLobbyMessage().hasJoinGameFailedMessage()))); + if (!(msg.hasLobbyMessage() && msg.getLobbyMessage().hasJoinGameAckMessage())) { fail("User " + username + " could not join ranking game."); } // The player should have joined the game. msg = receiveMessage(); - if (!msg.hasPlayerListMessage()) { + if (!(msg.hasLobbyMessage() && msg.getLobbyMessage().hasPlayerListMessage())) { failOnErrorMessage(msg); fail("Invalid message."); } msg = receiveMessage(); - if (!msg.hasGamePlayerJoinedMessage()) { + if (!(msg.hasGameMessage() && msg.getGameMessage().hasGameManagementMessage() && msg.getGameMessage().getGameManagementMessage().hasGamePlayerJoinedMessage())) { failOnErrorMessage(msg); fail("Invalid message."); } msg = receiveMessage(); - if (!msg.hasGameListPlayerJoinedMessage()) { + if (!(msg.hasLobbyMessage() && msg.getLobbyMessage().hasGameListPlayerJoinedMessage())) { failOnErrorMessage(msg); fail("Invalid message."); } @@ -135,7 +140,7 @@ public class RejoinMultiGameTest extends TestBase { // Server should automatically send start event. msg = receiveMessage(); - if (!msg.hasStartEventMessage()) { + if (!(msg.hasGameMessage() && msg.getGameMessage().hasGameManagementMessage() && msg.getGameMessage().getGameManagementMessage().hasStartEventMessage())) { failOnErrorMessage(msg); fail("Invalid message."); } @@ -143,16 +148,28 @@ public class RejoinMultiGameTest extends TestBase { do { msg = receiveMessage(s[i]); failOnErrorMessage(msg); - } while (!msg.hasStartEventMessage()); + } while (!(msg.hasGameMessage() && msg.getGameMessage().hasGameManagementMessage() && msg.getGameMessage().getGameManagementMessage().hasStartEventMessage())); } // Acknowledge start event. StartEventAckMessage startAck = StartEventAckMessage.newBuilder() - .setGameId(gameId) - .build(); + .build(); + + GameManagementMessage gameManagement = GameManagementMessage.newBuilder() + .setMessageType(GameManagementMessageType.Type_StartEventAckMessage) + .setStartEventAckMessage(startAck) + .build(); + + GameMessage game = GameMessage.newBuilder() + .setGameId(gameId) + .setMessageType(GameMessageType.Type_GameManagementMessage) + .setGameManagementMessage(gameManagement) + .build(); + msg = PokerTHMessage.newBuilder() - .setMessageType(PokerTHMessageType.Type_StartEventAckMessage) - .setStartEventAckMessage(startAck) - .build(); + .setMessageType(PokerTHMessageType.Type_GameMessage) + .setGameMessage(game) + .build(); + sendMessage(msg); for (int i = 0; i < 9; i++) { sendMessage(msg, s[i]); @@ -160,13 +177,13 @@ public class RejoinMultiGameTest extends TestBase { // Game list update (game now running). msg = receiveMessage(); - if (!msg.hasGameListUpdateMessage()) { + if (!(msg.hasLobbyMessage() && msg.getLobbyMessage().hasGameListUpdateMessage())) { failOnErrorMessage(msg); fail("Invalid message."); } msg = receiveMessage(); - if (!msg.hasGameStartInitialMessage()) { + if (!(msg.hasGameMessage() && msg.getGameMessage().hasGameManagementMessage() && msg.getGameMessage().getGameManagementMessage().hasGameStartInitialMessage())) { failOnErrorMessage(msg); fail("Invalid message."); } @@ -181,7 +198,7 @@ public class RejoinMultiGameTest extends TestBase { failOnErrorMessage(inMsg); } } - } while (!msg.hasHandStartMessage()); + } while (!(msg.hasGameMessage() && msg.getGameMessage().hasGameEngineMessage() && msg.getGameMessage().getGameEngineMessage().hasHandStartMessage())); // 9 players leave the game by closing the socket. for (int i = 0; i < 9; i++) { @@ -196,9 +213,9 @@ public class RejoinMultiGameTest extends TestBase { do { msg = receiveMessage(); failOnErrorMessage(msg); - } while (!msg.hasPlayerListMessage()); - assertEquals(playerId[i], msg.getPlayerListMessage().getPlayerId()); - assertEquals(PlayerListNotification.playerListLeft, msg.getPlayerListMessage().getPlayerListNotification()); + } while (!(msg.hasLobbyMessage() && msg.getLobbyMessage().hasPlayerListMessage())); + assertEquals(playerId[i], msg.getLobbyMessage().getPlayerListMessage().getPlayerId()); + assertEquals(PlayerListNotification.playerListLeft, msg.getLobbyMessage().getPlayerListMessage().getPlayerListNotification()); } // Let all players reconnect. @@ -212,8 +229,9 @@ public class RejoinMultiGameTest extends TestBase { // Waiting for player list update. do { msg = receiveMessage(s[i]); - } while (msg.hasGameListNewMessage() || msg.hasGameListPlayerJoinedMessage() || msg.hasGamePlayerJoinedMessage()); - if (!msg.hasPlayerListMessage()) { + } while ((msg.hasLobbyMessage() && (msg.getLobbyMessage().hasGameListNewMessage() || msg.getLobbyMessage().hasGameListPlayerJoinedMessage())) + || (msg.hasGameMessage() && msg.getGameMessage().hasGameManagementMessage() && msg.getGameMessage().getGameManagementMessage().hasGamePlayerJoinedMessage())); + if (!(msg.hasLobbyMessage() && msg.getLobbyMessage().hasPlayerListMessage())) { failOnErrorMessage(msg); fail("Invalid message."); } @@ -221,8 +239,8 @@ public class RejoinMultiGameTest extends TestBase { do { msg = receiveMessage(s[i]); failOnErrorMessage(msg); - } while (!msg.hasJoinGameAckMessage() && !msg.hasJoinGameFailedMessage()); - if (!msg.hasJoinGameAckMessage()) { + } while (!(msg.hasLobbyMessage() && (msg.getLobbyMessage().hasJoinGameAckMessage() || msg.getLobbyMessage().hasJoinGameFailedMessage()))); + if (!(msg.hasLobbyMessage() && msg.getLobbyMessage().hasJoinGameAckMessage())) { fail("User " + username + " could not rejoin ranking game."); } } @@ -231,9 +249,9 @@ public class RejoinMultiGameTest extends TestBase { do { msg = receiveMessage(); failOnErrorMessage(msg); - } while (!msg.hasPlayerListMessage()); - assertEquals(playerIdAfterRejoin[i], msg.getPlayerListMessage().getPlayerId()); - assertEquals(PlayerListNotification.playerListNew, msg.getPlayerListMessage().getPlayerListNotification()); + } while (!(msg.hasLobbyMessage() && msg.getLobbyMessage().hasPlayerListMessage())); + assertEquals(playerIdAfterRejoin[i], msg.getLobbyMessage().getPlayerListMessage().getPlayerId()); + assertEquals(PlayerListNotification.playerListNew, msg.getLobbyMessage().getPlayerListMessage().getPlayerListNotification()); } for (int i = 0; i < 9; i++) { @@ -241,19 +259,31 @@ public class RejoinMultiGameTest extends TestBase { do { msg = receiveMessage(s[i]); failOnErrorMessage(msg); - } while (!msg.hasStartEventMessage()); + } while (!(msg.hasGameMessage() && msg.getGameMessage().hasGameManagementMessage() && msg.getGameMessage().getGameManagementMessage().hasStartEventMessage())); - assertEquals(gameId, msg.getStartEventMessage().getGameId()); - assertEquals(StartEventType.rejoinEvent, msg.getStartEventMessage().getStartEventType()); + assertEquals(gameId, msg.getGameMessage().getGameId()); + assertEquals(StartEventType.rejoinEvent, msg.getGameMessage().getGameManagementMessage().getStartEventMessage().getStartEventType()); // Acknowledge start event. startAck = StartEventAckMessage.newBuilder() - .setGameId(gameId) - .build(); + .build(); + + gameManagement = GameManagementMessage.newBuilder() + .setMessageType(GameManagementMessageType.Type_StartEventAckMessage) + .setStartEventAckMessage(startAck) + .build(); + + game = GameMessage.newBuilder() + .setGameId(gameId) + .setMessageType(GameMessageType.Type_GameManagementMessage) + .setGameManagementMessage(gameManagement) + .build(); + msg = PokerTHMessage.newBuilder() - .setMessageType(PokerTHMessageType.Type_StartEventAckMessage) - .setStartEventAckMessage(startAck) - .build(); + .setMessageType(PokerTHMessageType.Type_GameMessage) + .setGameMessage(game) + .build(); + sendMessage(msg, s[i]); } @@ -262,14 +292,14 @@ public class RejoinMultiGameTest extends TestBase { do { msg = receiveMessage(s[i]); failOnErrorMessage(msg); - } while (!msg.hasGameStartRejoinMessage()); + } while (!(msg.hasGameMessage() && msg.getGameMessage().hasGameManagementMessage() && msg.getGameMessage().getGameManagementMessage().hasGameStartRejoinMessage())); // Check whether we got all necessary data to rejoin. - assertEquals(gameId, msg.getGameStartRejoinMessage().getGameId()); + assertEquals(gameId, msg.getGameMessage().getGameId()); // We left at the first hand. - assertTrue(msg.getGameStartRejoinMessage().getHandNum() >= 1); + assertTrue(msg.getGameMessage().getGameManagementMessage().getGameStartRejoinMessage().getHandNum() >= 1); // 10 Players should now be active again. - assertEquals(10, msg.getGameStartRejoinMessage().getRejoinPlayerDataCount()); + assertEquals(10, msg.getGameMessage().getGameManagementMessage().getGameStartRejoinMessage().getRejoinPlayerDataCount()); } // The remaining player should have received 9 "player id changed". @@ -277,28 +307,28 @@ public class RejoinMultiGameTest extends TestBase { do { msg = receiveMessage(); failOnErrorMessage(msg); - } while (!msg.hasPlayerIdChangedMessage()); - assertEquals(playerId[i], msg.getPlayerIdChangedMessage().getOldPlayerId()); - assertEquals(playerIdAfterRejoin[i], msg.getPlayerIdChangedMessage().getNewPlayerId()); + } while (!(msg.hasGameMessage() && msg.getGameMessage().hasGameManagementMessage() && msg.getGameMessage().getGameManagementMessage().hasPlayerIdChangedMessage())); + assertEquals(playerId[i], msg.getGameMessage().getGameManagementMessage().getPlayerIdChangedMessage().getOldPlayerId()); + assertEquals(playerIdAfterRejoin[i], msg.getGameMessage().getGameManagementMessage().getPlayerIdChangedMessage().getNewPlayerId()); } // Everyone should receive a "hand start message" now. do { msg = receiveMessage(); failOnErrorMessage(msg); - } while (!msg.hasHandStartMessage()); + } while (!(msg.hasGameMessage() && msg.getGameMessage().hasGameEngineMessage() && msg.getGameMessage().getGameEngineMessage().hasHandStartMessage())); for (int i = 0; i < 9; i++) { do { msg = receiveMessage(s[i]); failOnErrorMessage(msg); - } while (!msg.hasHandStartMessage()); + } while (!(msg.hasGameMessage() && msg.getGameMessage().hasGameEngineMessage() && msg.getGameMessage().getGameEngineMessage().hasHandStartMessage())); } // The game should continue to the end. do { msg = receiveMessage(); failOnErrorMessage(msg); - } while (!msg.hasEndOfGameMessage()); + } while (!(msg.hasGameMessage() && msg.getGameMessage().hasGameManagementMessage() && msg.getGameMessage().getGameManagementMessage().hasEndOfGameMessage())); for (int i = 0; i < 9; i++) { s[i].close(); diff --git a/tests/src/de/pokerth/test/RunNormalGameTest.java b/tests/src/de/pokerth/test/RunNormalGameTest.java index c236e83b..4efa01ef 100644 --- a/tests/src/de/pokerth/test/RunNormalGameTest.java +++ b/tests/src/de/pokerth/test/RunNormalGameTest.java @@ -27,15 +27,18 @@ import java.util.Iterator; import org.junit.Test; +import de.pokerth.protocol.ProtoBuf.GameManagementMessage.GameManagementMessageType; +import de.pokerth.protocol.ProtoBuf.GameMessage.GameMessageType; +import de.pokerth.protocol.ProtoBuf.LobbyMessage.LobbyMessageType; +import de.pokerth.protocol.ProtoBuf.GameManagementMessage; +import de.pokerth.protocol.ProtoBuf.GameMessage; import de.pokerth.protocol.ProtoBuf.NetGameInfo; import de.pokerth.protocol.ProtoBuf.PlayerResult; import de.pokerth.protocol.ProtoBuf.StartEventAckMessage; -import de.pokerth.protocol.ProtoBuf.StartEventMessage; import de.pokerth.protocol.ProtoBuf.NetGameInfo.EndRaiseMode; import de.pokerth.protocol.ProtoBuf.NetGameInfo.NetGameType; import de.pokerth.protocol.ProtoBuf.PokerTHMessage; import de.pokerth.protocol.ProtoBuf.PokerTHMessage.PokerTHMessageType; -import de.pokerth.protocol.ProtoBuf.StartEventMessage.StartEventType; public class RunNormalGameTest extends TestBase { @@ -55,53 +58,63 @@ public class RunNormalGameTest extends TestBase { // Waiting for player list update. msg = receiveMessage(); - if (!msg.hasPlayerListMessage() || msg.getMessageType() != PokerTHMessageType.Type_PlayerListMessage) { + if (!msg.hasLobbyMessage() || !msg.getLobbyMessage().hasPlayerListMessage() || msg.getLobbyMessage().getMessageType() != LobbyMessageType.Type_PlayerListMessage) { failOnErrorMessage(msg); fail("Invalid message."); } // Game list update (new game) msg = receiveMessage(); - if (!msg.hasGameListNewMessage() || msg.getMessageType() != PokerTHMessageType.Type_GameListNewMessage) { + if (!msg.hasLobbyMessage() || !msg.getLobbyMessage().hasGameListNewMessage() || msg.getLobbyMessage().getMessageType() != LobbyMessageType.Type_GameListNewMessage) { failOnErrorMessage(msg); fail("Invalid message."); } // Join game ack. msg = receiveMessage(); - if (!msg.hasJoinGameAckMessage() || msg.getMessageType() != PokerTHMessageType.Type_JoinGameAckMessage) { + if (!msg.hasLobbyMessage() || !msg.getLobbyMessage().hasJoinGameAckMessage() || msg.getLobbyMessage().getMessageType() != LobbyMessageType.Type_JoinGameAckMessage) { failOnErrorMessage(msg); fail("Could not create game!"); } - int gameId = msg.getJoinGameAckMessage().getGameId(); + int gameId = msg.getLobbyMessage().getJoinGameAckMessage().getGameId(); // Game list update (player joined). msg = receiveMessage(); - if (!msg.hasGameListPlayerJoinedMessage() || msg.getMessageType() != PokerTHMessageType.Type_GameListPlayerJoinedMessage) { + if (!msg.hasLobbyMessage() || !msg.getLobbyMessage().hasGameListPlayerJoinedMessage() || msg.getLobbyMessage().getMessageType() != LobbyMessageType.Type_GameListPlayerJoinedMessage) { failOnErrorMessage(msg); fail("Invalid message."); } - StartEventMessage startMsg = StartEventMessage.newBuilder() + StartEventAckMessage startAck = StartEventAckMessage.newBuilder() + .build(); + + GameManagementMessage gameManagement = GameManagementMessage.newBuilder() + .setMessageType(GameManagementMessageType.Type_StartEventAckMessage) + .setStartEventAckMessage(startAck) + .build(); + + GameMessage game = GameMessage.newBuilder() .setGameId(gameId) - .setFillWithComputerPlayers(true) - .setStartEventType(StartEventType.startEvent) + .setMessageType(GameMessageType.Type_GameManagementMessage) + .setGameManagementMessage(gameManagement) .build(); + msg = PokerTHMessage.newBuilder() - .setMessageType(PokerTHMessageType.Type_StartEventMessage) - .setStartEventMessage(startMsg) + .setMessageType(PokerTHMessageType.Type_GameMessage) + .setGameMessage(game) .build(); + sendMessage(msg); // Now the computer players should join. for (int i = 0; i < 9; i++) { msg = receiveMessage(); - if (!msg.hasGamePlayerJoinedMessage() || msg.getMessageType() != PokerTHMessageType.Type_GamePlayerJoinedMessage) { + if (!msg.hasGameMessage() || !msg.getGameMessage().hasGameManagementMessage() || !msg.getGameMessage().getGameManagementMessage().hasGamePlayerJoinedMessage() || msg.getGameMessage().getGameManagementMessage().getMessageType() != GameManagementMessageType.Type_GamePlayerJoinedMessage) { failOnErrorMessage(msg); fail("Invalid message."); } msg = receiveMessage(); - if (!msg.hasGameListPlayerJoinedMessage() || msg.getMessageType() != PokerTHMessageType.Type_GameListPlayerJoinedMessage) { + if (!msg.hasLobbyMessage() || !msg.getLobbyMessage().hasGameListPlayerJoinedMessage() || msg.getLobbyMessage().getMessageType() != LobbyMessageType.Type_GameListPlayerJoinedMessage) { failOnErrorMessage(msg); fail("Invalid message."); } @@ -109,29 +122,41 @@ public class RunNormalGameTest extends TestBase { // Server should confirm start event. msg = receiveMessage(); - if (!msg.hasStartEventMessage() || msg.getMessageType() != PokerTHMessageType.Type_StartEventMessage) { + if (!msg.hasGameMessage() || !msg.getGameMessage().hasGameManagementMessage() || !msg.getGameMessage().getGameManagementMessage().hasStartEventMessage() || msg.getGameMessage().getGameManagementMessage().getMessageType() != GameManagementMessageType.Type_StartEventMessage) { failOnErrorMessage(msg); fail("Invalid message."); } // Acknowledge start event. - StartEventAckMessage startAck = StartEventAckMessage.newBuilder() - .setGameId(gameId) - .build(); + startAck = StartEventAckMessage.newBuilder() + .build(); + + gameManagement = GameManagementMessage.newBuilder() + .setMessageType(GameManagementMessageType.Type_StartEventAckMessage) + .setStartEventAckMessage(startAck) + .build(); + + game = GameMessage.newBuilder() + .setGameId(gameId) + .setMessageType(GameMessageType.Type_GameManagementMessage) + .setGameManagementMessage(gameManagement) + .build(); + msg = PokerTHMessage.newBuilder() - .setMessageType(PokerTHMessageType.Type_StartEventAckMessage) - .setStartEventAckMessage(startAck) - .build(); + .setMessageType(PokerTHMessageType.Type_GameMessage) + .setGameMessage(game) + .build(); + sendMessage(msg); // Game list update (game now running). msg = receiveMessage(); - if (!msg.hasGameListUpdateMessage() || msg.getMessageType() != PokerTHMessageType.Type_GameListUpdateMessage) { + if (!msg.hasLobbyMessage() || !msg.getLobbyMessage().hasGameListUpdateMessage() || msg.getLobbyMessage().getMessageType() != LobbyMessageType.Type_GameListUpdateMessage) { failOnErrorMessage(msg); fail("Invalid message."); } msg = receiveMessage(); - if (!msg.hasGameStartInitialMessage() || msg.getMessageType() != PokerTHMessageType.Type_GameStartInitialMessage) { + if (!msg.hasGameMessage() || !msg.getGameMessage().hasGameManagementMessage() || !msg.getGameMessage().getGameManagementMessage().hasGameStartInitialMessage() || msg.getGameMessage().getGameManagementMessage().getMessageType() != GameManagementMessageType.Type_GameStartInitialMessage) { failOnErrorMessage(msg); fail("Invalid message."); } @@ -139,10 +164,10 @@ public class RunNormalGameTest extends TestBase { long lastPlayerMoney = 0; do { msg = receiveMessage(); - if (msg.hasEndOfHandHideCardsMessage()) { - lastPlayerMoney = msg.getEndOfHandHideCardsMessage().getPlayerMoney(); - } else if (msg.hasEndOfHandShowCardsMessage()) { - Collection result = msg.getEndOfHandShowCardsMessage().getPlayerResultsList(); + if (msg.hasGameMessage() && msg.getGameMessage().hasGameEngineMessage() && msg.getGameMessage().getGameEngineMessage().hasEndOfHandHideCardsMessage()) { + lastPlayerMoney = msg.getGameMessage().getGameEngineMessage().getEndOfHandHideCardsMessage().getPlayerMoney(); + } else if (msg.getGameMessage().getGameEngineMessage().hasEndOfHandShowCardsMessage()) { + Collection result = msg.getGameMessage().getGameEngineMessage().getEndOfHandShowCardsMessage().getPlayerResultsList(); assertFalse(result.isEmpty()); long maxPlayerMoney = 0; for (Iterator it = result.iterator(); it.hasNext(); ) { @@ -155,18 +180,20 @@ public class RunNormalGameTest extends TestBase { lastPlayerMoney = maxPlayerMoney; } } while ( - msg.hasHandStartMessage() - || msg.hasDealFlopCardsMessage() - || msg.hasDealRiverCardMessage() - || msg.hasDealTurnCardMessage() - || msg.hasPlayersTurnMessage() - || msg.hasPlayersActionDoneMessage() - || msg.hasEndOfHandHideCardsMessage() - || msg.hasEndOfHandShowCardsMessage() - || msg.hasAllInShowCardsMessage() - || msg.hasTimeoutWarningMessage() - ); - if (!msg.hasEndOfGameMessage() || msg.getMessageType() != PokerTHMessageType.Type_EndOfGameMessage) { + msg.hasGameMessage() + && ((msg.getGameMessage().hasGameEngineMessage() && + (msg.getGameMessage().getGameEngineMessage().hasHandStartMessage() + || msg.getGameMessage().getGameEngineMessage().hasDealFlopCardsMessage() + || msg.getGameMessage().getGameEngineMessage().hasDealRiverCardMessage() + || msg.getGameMessage().getGameEngineMessage().hasDealTurnCardMessage() + || msg.getGameMessage().getGameEngineMessage().hasPlayersTurnMessage() + || msg.getGameMessage().getGameEngineMessage().hasPlayersActionDoneMessage() + || msg.getGameMessage().getGameEngineMessage().hasEndOfHandHideCardsMessage() + || msg.getGameMessage().getGameEngineMessage().hasEndOfHandShowCardsMessage() + || msg.getGameMessage().getGameEngineMessage().hasAllInShowCardsMessage())) + || ((msg.getGameMessage().hasGameManagementMessage() && + msg.getGameMessage().getGameManagementMessage().hasTimeoutWarningMessage())))); + if (!msg.hasGameMessage() || !msg.getGameMessage().hasGameManagementMessage() || !msg.getGameMessage().getGameManagementMessage().hasEndOfGameMessage() || msg.getGameMessage().getGameManagementMessage().getMessageType() != GameManagementMessageType.Type_EndOfGameMessage) { fail("No end of game received."); } // Last player money should be sum of all money. @@ -175,12 +202,12 @@ public class RunNormalGameTest extends TestBase { // Now the computer players should leave. for (int i = 0; i < 9; i++) { msg = receiveMessage(); - if (!msg.hasGamePlayerLeftMessage()) { + if (!msg.hasGameMessage() || !msg.getGameMessage().hasGameManagementMessage() || !msg.getGameMessage().getGameManagementMessage().hasGamePlayerLeftMessage()) { failOnErrorMessage(msg); fail("Invalid message."); } msg = receiveMessage(); - if (!msg.hasGameListPlayerLeftMessage()) { + if (!msg.hasLobbyMessage() || !msg.getLobbyMessage().hasGameListPlayerLeftMessage()) { failOnErrorMessage(msg); fail("Invalid message."); } diff --git a/tests/src/de/pokerth/test/RunRankingGameTest.java b/tests/src/de/pokerth/test/RunRankingGameTest.java index 7b43a54b..3ac24bdd 100644 --- a/tests/src/de/pokerth/test/RunRankingGameTest.java +++ b/tests/src/de/pokerth/test/RunRankingGameTest.java @@ -55,7 +55,7 @@ public class RunRankingGameTest extends TestBase { // Waiting for player list update. PokerTHMessage msg; msg = receiveMessage(); - if (!msg.hasPlayerListMessage()) { + if (!msg.hasLobbyMessage() || !msg.getLobbyMessage().hasPlayerListMessage()) { failOnErrorMessage(msg); fail("Invalid message."); } @@ -70,21 +70,21 @@ public class RunRankingGameTest extends TestBase { // Game list update (new game) msg = receiveMessage(); - if (!msg.hasGameListNewMessage()) { + if (!msg.hasLobbyMessage() || !msg.getLobbyMessage().hasGameListNewMessage()) { failOnErrorMessage(msg); fail("Invalid message."); } // Join game ack. msg = receiveMessage(); - if (!msg.hasJoinGameAckMessage()) { + if (!msg.hasLobbyMessage() || msg.getLobbyMessage().hasJoinGameAckMessage()) { fail("Could not create game!"); } - int gameId = msg.getJoinGameAckMessage().getGameId(); + int gameId = msg.getLobbyMessage().getJoinGameAckMessage().getGameId(); // Game list update (player joined). msg = receiveMessage(); - if (!msg.hasGameListPlayerJoinedMessage()) { + if (!(msg.hasLobbyMessage() && msg.getLobbyMessage().hasGameListPlayerJoinedMessage())) { failOnErrorMessage(msg); fail("Invalid message."); }