diff --git a/tests/src/pokerth_test/AllTests.java b/tests/src/pokerth_test/AllTests.java index 3a298011..5dc3bbef 100644 --- a/tests/src/pokerth_test/AllTests.java +++ b/tests/src/pokerth_test/AllTests.java @@ -25,6 +25,7 @@ import org.junit.runners.Suite; @RunWith(Suite.class) @Suite.SuiteClasses( { AnnounceTest.class, + PlayerListTest.class, GuestLoginTest.class, AuthLoginTest.class, PlayerInfoTest.class, diff --git a/tests/src/pokerth_test/AnnounceTest.java b/tests/src/pokerth_test/AnnounceTest.java index 43513eb8..4b56b115 100644 --- a/tests/src/pokerth_test/AnnounceTest.java +++ b/tests/src/pokerth_test/AnnounceTest.java @@ -4,7 +4,6 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.net.Socket; -import java.util.Arrays; import org.junit.Test; @@ -23,7 +22,7 @@ public class AnnounceTest extends TestBase { } @Test - public void testPlayerInfoRequest() throws Exception { + public void testAnnounce() throws Exception { PokerTHMessage msg = receiveMessage(); assertTrue(msg.isAnnounceMessageSelected()); @@ -68,6 +67,7 @@ public class AnnounceTest extends TestBase { for (int i = 0; i < 9; i++) { t[i].close(); + Thread.sleep(1000); // Closing established sessions: counter is decremented. sock.close(); diff --git a/tests/src/pokerth_test/AuthLoginTest.java b/tests/src/pokerth_test/AuthLoginTest.java index c12a4455..65afbc5f 100644 --- a/tests/src/pokerth_test/AuthLoginTest.java +++ b/tests/src/pokerth_test/AuthLoginTest.java @@ -17,15 +17,8 @@ package pokerth_test; -import static org.junit.Assert.*; import org.junit.Test; -import pokerth_protocol.*; -import pokerth_protocol.AnnounceMessage.AnnounceMessageSequenceType.ServerTypeEnumType; -import pokerth_protocol.AuthMessage.AuthMessageChoiceType; -import pokerth_protocol.InitMessage.*; -import pokerth_protocol.InitMessage.InitMessageSequenceType.LoginChoiceType; - public class AuthLoginTest extends TestBase { @Test diff --git a/tests/src/pokerth_test/CreateGameTest.java b/tests/src/pokerth_test/CreateGameTest.java index 740d327e..304f984e 100644 --- a/tests/src/pokerth_test/CreateGameTest.java +++ b/tests/src/pokerth_test/CreateGameTest.java @@ -48,6 +48,12 @@ public class CreateGameTest extends TestBase { false)); PokerTHMessage msg; + msg = receiveMessage(); + if (!msg.isPlayerListMessageSelected()) { + failOnErrorMessage(msg); + fail("Invalid message."); + } + msg = receiveMessage(); if (!msg.isGameListMessageSelected()) { failOnErrorMessage(msg); diff --git a/tests/src/pokerth_test/CreateRankingGameTest.java b/tests/src/pokerth_test/CreateRankingGameTest.java index 88e82acb..0213b21b 100644 --- a/tests/src/pokerth_test/CreateRankingGameTest.java +++ b/tests/src/pokerth_test/CreateRankingGameTest.java @@ -50,9 +50,15 @@ public class CreateRankingGameTest extends TestBase { public void testCreateRankingGameAsGuest() throws Exception { guestInit(); - createRankingGame(""); PokerTHMessage msg; msg = receiveMessage(); + if (!msg.isPlayerListMessageSelected()) { + failOnErrorMessage(msg); + fail("Invalid message."); + } + + createRankingGame(""); + msg = receiveMessage(); if (msg.isJoinGameReplyMessageSelected()) { @@ -71,9 +77,16 @@ public class CreateRankingGameTest extends TestBase { public void testCreateRankingGameNoPasswordAsUser() throws Exception { userInit(); - createRankingGame(""); + // Waiting for player list update. PokerTHMessage msg; msg = receiveMessage(); + if (!msg.isPlayerListMessageSelected()) { + failOnErrorMessage(msg); + fail("Invalid message."); + } + + createRankingGame(""); + msg = receiveMessage(); if (msg.isGameListMessageSelected()) { @@ -93,9 +106,16 @@ public class CreateRankingGameTest extends TestBase { public void testCreateRankingGameWithPasswordAsUser() throws Exception { userInit(); - createRankingGame(GamePassword); + // Waiting for player list update. PokerTHMessage msg; msg = receiveMessage(); + if (!msg.isPlayerListMessageSelected()) { + failOnErrorMessage(msg); + fail("Invalid message."); + } + + createRankingGame(GamePassword); + msg = receiveMessage(); if (msg.isJoinGameReplyMessageSelected()) { diff --git a/tests/src/pokerth_test/PlayerListTest.java b/tests/src/pokerth_test/PlayerListTest.java new file mode 100644 index 00000000..01645635 --- /dev/null +++ b/tests/src/pokerth_test/PlayerListTest.java @@ -0,0 +1,59 @@ +package pokerth_test; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.net.Socket; + +import org.junit.Test; + +import pokerth_protocol.PlayerListMessage; +import pokerth_protocol.PokerTHMessage; +import pokerth_protocol.PlayerListMessage.PlayerListMessageSequenceType.PlayerListNotificationEnumType; + + +public class PlayerListTest extends TestBase { + + @Test + public void testPlayerList() throws Exception { + + long myId = guestInit(); + + // Waiting for player list update. + PokerTHMessage msg; + msg = receiveMessage(); + assertTrue(msg.isPlayerListMessageSelected()); + + // This should be a "player list new" notification with correct player id. + PlayerListMessage listMsg = msg.getPlayerListMessage(); + assertEquals(myId, listMsg.getValue().getPlayerId().getValue().longValue()); + assertEquals(PlayerListNotificationEnumType.EnumType.playerListNew, listMsg.getValue().getPlayerListNotification().getValue()); + + Socket s[] = new Socket[9]; + long playerId[] = new long[9]; + for (int i = 0; i < 9; i++) { + s[i] = new Socket("localhost", 7234); + String username = "test" + (i+1); + String password = username; + playerId[i] = userInit(s[i], username, password); + + msg = receiveMessage(); + assertTrue(msg.isPlayerListMessageSelected()); + listMsg = msg.getPlayerListMessage(); + // Id should be different from first id. + assertTrue(myId != playerId[i]); + // This should be a "player list new" notification with correct player id. + assertEquals(playerId[i], listMsg.getValue().getPlayerId().getValue().longValue()); + assertEquals(PlayerListNotificationEnumType.EnumType.playerListNew, listMsg.getValue().getPlayerListNotification().getValue()); + + s[i].close(); + + // After the connection is closed, a "player list left" notification should be received. + msg = receiveMessage(); + assertTrue(msg.isPlayerListMessageSelected()); + listMsg = msg.getPlayerListMessage(); + assertEquals(playerId[i], listMsg.getValue().getPlayerId().getValue().longValue()); + assertEquals(PlayerListNotificationEnumType.EnumType.playerListLeft, listMsg.getValue().getPlayerListNotification().getValue()); + } + } +} diff --git a/tests/src/pokerth_test/RunNormalGameTest.java b/tests/src/pokerth_test/RunNormalGameTest.java index 51560e41..bf216090 100644 --- a/tests/src/pokerth_test/RunNormalGameTest.java +++ b/tests/src/pokerth_test/RunNormalGameTest.java @@ -53,6 +53,13 @@ public class RunNormalGameTest extends TestBase { PokerTHMessage msg; + // Waiting for player list update. + msg = receiveMessage(); + if (!msg.isPlayerListMessageSelected()) { + failOnErrorMessage(msg); + fail("Invalid message."); + } + // Game list update (new game) msg = receiveMessage(); if (!msg.isGameListMessageSelected()) { diff --git a/tests/src/pokerth_test/RunRankingGameTest.java b/tests/src/pokerth_test/RunRankingGameTest.java index af68342a..95e8e338 100644 --- a/tests/src/pokerth_test/RunRankingGameTest.java +++ b/tests/src/pokerth_test/RunRankingGameTest.java @@ -87,6 +87,14 @@ public class RunRankingGameTest extends TestBase { long firstPlayerId = userInit(); + // Waiting for player list update. + PokerTHMessage msg; + msg = receiveMessage(); + if (!msg.isPlayerListMessageSelected()) { + failOnErrorMessage(msg); + fail("Invalid message."); + } + Collection l = new ArrayList(); String gameName = AuthUser + " run ranking game"; NetGameInfo gameInfo = createGameInfo(5, EndRaiseModeEnumType.EnumType.doubleBlinds, 0, 50, gameName, l, 10, 0, 11, 10000); @@ -98,8 +106,6 @@ public class RunRankingGameTest extends TestBase { "", false)); - PokerTHMessage msg; - // Game list update (new game) msg = receiveMessage(); if (!msg.isGameListMessageSelected()) { @@ -135,6 +141,14 @@ public class RunRankingGameTest extends TestBase { String username = "test" + (i+1); String password = username; playerId[i] = userInit(s[i], username, password); + // Waiting for player list update. + do { + msg = receiveMessage(s[i]); + } while (msg.isGameListMessageSelected() || msg.isGamePlayerMessageSelected()); + if (!msg.isPlayerListMessageSelected()) { + failOnErrorMessage(msg); + fail("Invalid message."); + } sendMessage(joinGameRequestMsg(gameId, "", false), s[i]); do { msg = receiveMessage(s[i]); diff --git a/tests/src/pokerth_test/StartNormalGameTest.java b/tests/src/pokerth_test/StartNormalGameTest.java index 4daba42d..7d2c773e 100644 --- a/tests/src/pokerth_test/StartNormalGameTest.java +++ b/tests/src/pokerth_test/StartNormalGameTest.java @@ -46,6 +46,13 @@ public class StartNormalGameTest extends TestBase { false)); PokerTHMessage msg; + // Waiting for player list update. + msg = receiveMessage(); + if (!msg.isPlayerListMessageSelected()) { + failOnErrorMessage(msg); + fail("Invalid message."); + } + msg = receiveMessage(); if (!msg.isGameListMessageSelected()) { failOnErrorMessage(msg); diff --git a/tests/src/pokerth_test/TestBase.java b/tests/src/pokerth_test/TestBase.java index 67cb8757..d0eb15c4 100644 --- a/tests/src/pokerth_test/TestBase.java +++ b/tests/src/pokerth_test/TestBase.java @@ -117,12 +117,6 @@ public abstract class TestBase { failOnErrorMessage(msg); fail("Invalid message."); } - // Waiting for player list update. - msg = receiveMessage(s); - if (!msg.isPlayerListMessageSelected()) { - failOnErrorMessage(msg); - fail("Invalid message."); - } return playerId; } @@ -197,14 +191,6 @@ public abstract class TestBase { failOnErrorMessage(msg); fail("Invalid message."); } - // Waiting for player list update. - do { - msg = receiveMessage(s); - } while (msg.isGameListMessageSelected() || msg.isGamePlayerMessageSelected()); - if (!msg.isPlayerListMessageSelected()) { - failOnErrorMessage(msg); - fail("Invalid message."); - } return playerId; }