From f1ecdcbe59cfaaad647cb5a6c50ceb39c9496c8d Mon Sep 17 00:00:00 2001 From: Jannis Harder Date: Mon, 4 Jul 2011 22:26:29 +0200 Subject: More network tests git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@604 72836036-5685-4462-b002-a69064685172 --- .../control/network/MockConnectionControl.java | 5 +- mock/jrummikub/view/MockConnectPanel.java | 5 +- src/jrummikub/control/GameControl.java | 2 +- src/jrummikub/control/network/NetworkControl.java | 8 --- .../control/network/NetworkGameControl.java | 15 +---- .../control/network/NetworkControlTest.java | 70 ++++++++++++++++++++++ .../control/network/NetworkGameControlTest.java | 2 +- .../control/network/NetworkRoundControlTest.java | 31 ++++++++++ 8 files changed, 110 insertions(+), 28 deletions(-) diff --git a/mock/jrummikub/control/network/MockConnectionControl.java b/mock/jrummikub/control/network/MockConnectionControl.java index 33aa4aa..c01ebf2 100644 --- a/mock/jrummikub/control/network/MockConnectionControl.java +++ b/mock/jrummikub/control/network/MockConnectionControl.java @@ -75,6 +75,8 @@ public class MockConnectionControl implements IConnectionControl { public boolean nextPlayer; /** */ public boolean startRoundCalled; + /** */ + public boolean redealCalled; @Override public String getNickname() { @@ -269,7 +271,6 @@ public class MockConnectionControl implements IConnectionControl { @Override public void redeal() { - // TODO Auto-generated method stub - + redealCalled = true; } } diff --git a/mock/jrummikub/view/MockConnectPanel.java b/mock/jrummikub/view/MockConnectPanel.java index 952839c..d06c915 100644 --- a/mock/jrummikub/view/MockConnectPanel.java +++ b/mock/jrummikub/view/MockConnectPanel.java @@ -7,11 +7,12 @@ import jrummikub.util.MockEvent; public class MockConnectPanel implements IConnectPanel { /** */ public MockEvent cancelEvent = new MockEvent(); + /** */ + public LoginError errorMode; @Override public void setMode(LoginError error) { - // TODO Auto-generated method stub - + errorMode = error; } @Override diff --git a/src/jrummikub/control/GameControl.java b/src/jrummikub/control/GameControl.java index 48c1b85..8209a27 100644 --- a/src/jrummikub/control/GameControl.java +++ b/src/jrummikub/control/GameControl.java @@ -30,7 +30,7 @@ public class GameControl { protected GameState gameState; protected List connections = new ArrayList(); - private Event endOfGameEvent = new Event(); + protected Event endOfGameEvent = new Event(); /** * Constructor diff --git a/src/jrummikub/control/network/NetworkControl.java b/src/jrummikub/control/network/NetworkControl.java index bf92ab5..92837bd 100644 --- a/src/jrummikub/control/network/NetworkControl.java +++ b/src/jrummikub/control/network/NetworkControl.java @@ -362,14 +362,6 @@ public class NetworkControl { private void createGameControl(GameSettings settings, boolean host) { gameControl = new NetworkGameControl(settings, saveControl, view, connectionControl, host); - gameControl.getBackEvent().add(new IListener() { - @Override - public void handle() { - view.setBottomPanel(BottomPanelType.START_GAME_PANEL); - abortControls(); - view.showGameListPanel(true); - } - }); gameControl.getEndOfGameEvent().add(new IListener() { @Override public void handle() { diff --git a/src/jrummikub/control/network/NetworkGameControl.java b/src/jrummikub/control/network/NetworkGameControl.java index a277cd3..90dd1b3 100644 --- a/src/jrummikub/control/network/NetworkGameControl.java +++ b/src/jrummikub/control/network/NetworkGameControl.java @@ -7,8 +7,6 @@ import jrummikub.model.GameSettings; import jrummikub.model.IRoundState; import jrummikub.model.PlayerSettings; import jrummikub.model.PlayerSettings.Type; -import jrummikub.util.Event; -import jrummikub.util.IEvent; import jrummikub.util.IListener; import jrummikub.util.IListener1; import jrummikub.view.IView; @@ -20,7 +18,6 @@ import jrummikub.view.IView.BottomPanelType; public class NetworkGameControl extends GameControl { private IConnectionControl connectionControl; private boolean host; - private Event backEvent = new Event(); /** * Creates new network game control @@ -62,16 +59,6 @@ public class NetworkGameControl extends GameControl { })); } - /** - * The back event is emitted when the network game has ended and the player - * wants to return to the game list - * - * @return the event - */ - public IEvent getBackEvent() { - return backEvent; - } - @Override protected void startRound() { connections.add(connectionControl.getRoundStartEvent().add(new IListener() { @@ -109,7 +96,7 @@ public class NetworkGameControl extends GameControl { @Override public void handle() { abortGame(); - backEvent.emit(); + endOfGameEvent.emit(); } })); connections.add(view.getEndProgramEvent().add(new IListener() { diff --git a/test/jrummikub/control/network/NetworkControlTest.java b/test/jrummikub/control/network/NetworkControlTest.java index 6d772ff..f22fd74 100644 --- a/test/jrummikub/control/network/NetworkControlTest.java +++ b/test/jrummikub/control/network/NetworkControlTest.java @@ -10,8 +10,11 @@ import jrummikub.model.GameSettings; import jrummikub.model.PlayerSettings; import jrummikub.model.PlayerSettings.Type; import jrummikub.util.GameData; +import jrummikub.util.IListener; import jrummikub.util.LoginData; import jrummikub.view.ISettingsPanel.SettingsMode; +import jrummikub.view.IView.BottomPanelType; +import jrummikub.view.LoginError; import jrummikub.view.MockView; import org.junit.Before; @@ -28,6 +31,7 @@ public class NetworkControlTest { UUID id1 = UUID.randomUUID(); UUID id2 = UUID.randomUUID(); UUID id3 = UUID.randomUUID(); + boolean backToLoginFired; /** */ @Before @@ -38,6 +42,7 @@ public class NetworkControlTest { loginData = new LoginData("Karl", "server", "password", "channel"); networkControl = new NetworkControl(loginData, mockConnection, new SaveControl(view), view); networkControl.startNetwork(); + backToLoginFired = false; } /** */ @@ -92,6 +97,18 @@ public class NetworkControlTest { assertTrue(view.isSettingsPanelVisible); assertEquals(SettingsMode.NETWORK_JOIN, view.settingsPanel.settingsMode); } + + /** */ + @Test + public void joinGameNackTest() { + mockConnection.connectedEvent.emit(); + GameData data = offerTestGame(id1, "Berta"); + view.gameListPanel.joinEvent.emit(data); + assertSame(data, mockConnection.joinedGame); + mockConnection.gameJoinAckEvent.emit(false); + assertFalse(view.isSettingsPanelVisible); + assertTrue(view.isGameListPanelVisible); + } /** */ @Test @@ -182,5 +199,58 @@ public class NetworkControlTest { view.settingsPanel.startGameEvent.emit(); assertTrue(mockConnection.startRoundCalled); + assertTrue(networkControl.isGameRunning()); + } + + /** */ + @Test + public void connectionLostTest() { + mockConnection.connectedEvent.emit(); + GameData data = offerTestGame(id1, "Berta"); + view.gameListPanel.joinEvent.emit(data); + assertSame(data, mockConnection.joinedGame); + mockConnection.gameJoinAckEvent.emit(true); + + mockConnection.connectionLostEvent.emit(); + assertSame(BottomPanelType.NETWORK_SERVER_CONNECTION_LOST_PANEL, view.bottomPanelType); + } + + /** */ + @Test + public void connectionFailedTest() { + mockConnection.connectionFailedEvent.emit(LoginError.UNKNOWN_ERROR); + assertTrue(view.isConnectPanelVisible); + assertSame(LoginError.UNKNOWN_ERROR, view.connectPanel.errorMode); } + + /** */ + @Test + public void connectionCancelTest() { + networkControl.getBackToLoginEvent().add(new IListener() { + @Override + public void handle() { + backToLoginFired = true; + } + }); + + view.connectPanel.cancelEvent.emit(); + assertTrue(backToLoginFired); + } + + /** */ + @Test + public void backToGameListTest() { + 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); + mockConnection.gameStartEvent.emit(); + + view.newGameEvent.emit(); + assertTrue(view.isGameListPanelVisible); + } + } diff --git a/test/jrummikub/control/network/NetworkGameControlTest.java b/test/jrummikub/control/network/NetworkGameControlTest.java index ea0dabe..c4db9af 100644 --- a/test/jrummikub/control/network/NetworkGameControlTest.java +++ b/test/jrummikub/control/network/NetworkGameControlTest.java @@ -63,7 +63,7 @@ public class NetworkGameControlTest { assertEquals(BottomPanelType.NETWORK_CONNECTION_LOST_PANEL, view.bottomPanelType); - hostControl.getBackEvent().add(new IListener() { + hostControl.getEndOfGameEvent().add(new IListener() { @Override public void handle() { fired = true; diff --git a/test/jrummikub/control/network/NetworkRoundControlTest.java b/test/jrummikub/control/network/NetworkRoundControlTest.java index be5952e..56647ac 100644 --- a/test/jrummikub/control/network/NetworkRoundControlTest.java +++ b/test/jrummikub/control/network/NetworkRoundControlTest.java @@ -221,4 +221,35 @@ public class NetworkRoundControlTest { connectionControl.turnStartEvent.emit(); assertFalse(connectionControl.turnEnded); } + + @Test + public void testRedeal() { + gameSettings.getPlayerList().get(1).setType(Type.COMPUTER); + gameSettings.getPlayerList().get(2).setType(Type.NETWORK); + gameSettings.getPlayerList().get(3).setType(Type.COMPUTER); + + testRoundState = new RoundState(gameSettings, new GameState()); + for (int i = 0; i < 4; ++i) { + IPlayer player = testRoundState.getNthPlayer(i); + + for (int j = 0; j < 6; j++) { + player.getHand().drop(new Stone(1, StoneColor.RED), new Position(0, 0)); + } + } + testRound = new NetworkRoundControl(null, view, connectionControl, true); + + connectionControl.turnStarted = false; + connectionControl.turnEnded = false; + + testRound.startRound(); + + connectionControl.roundStateUpdateEvent.emit(testRoundState); + + + connectionControl.turnStartEvent.emit(); + + view.playerPanel.redealEvent.emit(); + + assertTrue(connectionControl.redealCalled); + } } -- cgit v1.2.3