More work on java tests.

This commit is contained in:
lotodore
2015-01-18 01:34:38 +01:00
parent eedd86e150
commit 046a2fbdc3
5 changed files with 232 additions and 146 deletions
@@ -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());
+78 -48
View File
@@ -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++) {
@@ -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();
@@ -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<PlayerResult> 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<PlayerResult> result = msg.getGameMessage().getGameEngineMessage().getEndOfHandShowCardsMessage().getPlayerResultsList();
assertFalse(result.isEmpty());
long maxPlayerMoney = 0;
for (Iterator<PlayerResult> 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.");
}
@@ -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.");
}