summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mock/jrummikub/control/network/MockConnectionControl.java5
-rw-r--r--mock/jrummikub/view/MockConnectPanel.java5
-rw-r--r--src/jrummikub/control/GameControl.java2
-rw-r--r--src/jrummikub/control/network/NetworkControl.java8
-rw-r--r--src/jrummikub/control/network/NetworkGameControl.java15
-rw-r--r--test/jrummikub/control/network/NetworkControlTest.java70
-rw-r--r--test/jrummikub/control/network/NetworkGameControlTest.java2
-rw-r--r--test/jrummikub/control/network/NetworkRoundControlTest.java31
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<Connection> connections = new ArrayList<Connection>();
- 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);
+ }
}