summaryrefslogtreecommitdiffstats
path: root/test/jrummikub
diff options
context:
space:
mode:
Diffstat (limited to 'test/jrummikub')
-rw-r--r--test/jrummikub/control/network/NetworkControlTest.java139
1 files changed, 139 insertions, 0 deletions
diff --git a/test/jrummikub/control/network/NetworkControlTest.java b/test/jrummikub/control/network/NetworkControlTest.java
new file mode 100644
index 0000000..6cbd3d0
--- /dev/null
+++ b/test/jrummikub/control/network/NetworkControlTest.java
@@ -0,0 +1,139 @@
+package jrummikub.control.network;
+
+import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+
+import java.awt.Color;
+import java.util.UUID;
+
+import jrummikub.model.GameSettings;
+import jrummikub.model.PlayerSettings;
+import jrummikub.model.PlayerSettings.Type;
+import jrummikub.util.GameData;
+import jrummikub.util.LoginData;
+import jrummikub.view.MockView;
+import jrummikub.view.ISettingsPanel.SettingsMode;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public class NetworkControlTest {
+ LoginData loginData;
+ MockConnectionControl mockConnection;
+ NetworkControl networkControl;
+ MockView view;
+ UUID id1 = UUID.randomUUID();
+ UUID id2 = UUID.randomUUID();
+ UUID id3 = UUID.randomUUID();
+
+ /** */
+ @Before
+ public void setup() {
+ mockConnection = new MockConnectionControl();
+ mockConnection.nickname = "Karl";
+ view = new MockView();
+ loginData = new LoginData("Karl", "server", "password", "channel");
+ networkControl = new NetworkControl(loginData, mockConnection, view);
+ networkControl.startNetwork();
+ }
+
+ /** */
+ @Test
+ public void connectedTest() {
+ mockConnection.connectedEvent.emit();
+ assertTrue(view.isGameListPanelVisible);
+ assertEquals("channel", view.gameListPanel.channelName);
+ }
+
+ /** */
+ @Test
+ public void offeredGameTest() {
+ mockConnection.connectedEvent.emit();
+ offerTestGame(id1, "Berta");
+
+ assertEquals(1, view.gameListPanel.gameList.size());
+ assertEquals(2, view.gameListPanel.gameList.get(0).getGameSettings()
+ .getPlayerList().size());
+ assertEquals(id1, view.gameListPanel.gameList.get(0).getGameID());
+ assertEquals("Berta", view.gameListPanel.gameList.get(0).getHost());
+ }
+
+ /** */
+ @Test
+ public void offerGameTest() {
+ mockConnection.connectedEvent.emit();
+ view.gameListPanel.openNewGameEvent.emit();
+
+ assertTrue(view.isSettingsPanelVisible);
+ assertEquals(SettingsMode.NETWORK_SETUP,
+ view.settingsPanel.settingsMode);
+
+ view.settingsPanel.addPlayerEvent.emit();
+
+ view.settingsPanel.offerGameEvent.emit();
+
+ assertTrue(view.isSettingsPanelVisible);
+ assertEquals(SettingsMode.NETWORK_OFFER,
+ view.settingsPanel.settingsMode);
+ }
+
+ /** */
+ @Test
+ public void joinGameTest() {
+ mockConnection.connectedEvent.emit();
+ GameData data = offerTestGame(id1, "Berta");
+ view.gameListPanel.joinEvent.emit(data);
+ assertSame(data, mockConnection.joinedGame);
+ mockConnection.gameJoinAckEvent.emit(true);
+ assertTrue(view.isSettingsPanelVisible);
+ assertEquals(SettingsMode.NETWORK_JOIN, view.settingsPanel.settingsMode);
+ }
+
+ /** */
+ @Test
+ public void withdrawnGameTest() {
+ mockConnection.connectedEvent.emit();
+ offerTestGame(id1, "Berta");
+
+ offerTestGame(id2, "Horst");
+
+ assertEquals(2, view.gameListPanel.gameList.size());
+ assertEquals(2, view.gameListPanel.gameList.get(0).getGameSettings()
+ .getPlayerList().size());
+ assertEquals(id1, view.gameListPanel.gameList.get(0).getGameID());
+ assertEquals("Berta", view.gameListPanel.gameList.get(0).getHost());
+ assertEquals(2, view.gameListPanel.gameList.get(1).getGameSettings()
+ .getPlayerList().size());
+ assertEquals(id2, view.gameListPanel.gameList.get(1).getGameID());
+ assertEquals("Horst", view.gameListPanel.gameList.get(1).getHost());
+
+ mockConnection.gameWithdrawalEvent.emit(id1);
+ assertEquals(1, view.gameListPanel.gameList.size());
+ assertEquals(id2, view.gameListPanel.gameList.get(0).getGameID());
+ assertEquals("Horst", view.gameListPanel.gameList.get(0).getHost());
+ }
+
+ /** */
+ @Test
+ public void testCancel(){
+ mockConnection.connectedEvent.emit();
+
+ view.gameListPanel.cancelEvent.emit();
+ assertFalse(view.isGameListPanelVisible);
+ assertFalse(mockConnection.connected);
+ }
+
+ private GameData offerTestGame(UUID id, String host) {
+ GameSettings gsettings = new GameSettings();
+ PlayerSettings psettings = new PlayerSettings(host, Color.BLACK);
+ psettings.setType(Type.HUMAN);
+ gsettings.getPlayerList().add(psettings);
+ PlayerSettings psettings2 = new PlayerSettings("Offen", Color.RED);
+ psettings.setType(Type.VACANT);
+ gsettings.getPlayerList().add(psettings2);
+ GameData gameData = new GameData(id, gsettings, host);
+ mockConnection.gameOfferEvent.emit(gameData);
+ return gameData;
+ }
+
+}