diff options
Diffstat (limited to 'test/jrummikub/control/network/NetworkControlTest.java')
-rw-r--r-- | test/jrummikub/control/network/NetworkControlTest.java | 70 |
1 files changed, 70 insertions, 0 deletions
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); + } + } |