diff options
Diffstat (limited to 'test/jrummikub/control')
-rw-r--r-- | test/jrummikub/control/network/GameJoinControlTest.java | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/test/jrummikub/control/network/GameJoinControlTest.java b/test/jrummikub/control/network/GameJoinControlTest.java index 9e175b1..31f76da 100644 --- a/test/jrummikub/control/network/GameJoinControlTest.java +++ b/test/jrummikub/control/network/GameJoinControlTest.java @@ -1,6 +1,86 @@ package jrummikub.control.network; +import static org.junit.Assert.*; +import static org.junit.Assert.assertSame; + +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.ISettingsPanel.SettingsMode; +import jrummikub.view.MockView; + +import org.junit.Before; +import org.junit.Test; public class GameJoinControlTest { + LoginData loginData; + MockConnectionControl mockConnection; + NetworkControl networkControl; + GameJoinControl joinControl; + 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(); + + mockConnection.connectedEvent.emit(); + } + + /** */ + @Test + public void joinCancelTest() { + GameData data = offerTestGame(id1, "Anne"); + view.gameListPanel.joinEvent.emit(data); + mockConnection.gameJoinAckEvent.emit(true); + assertTrue(view.isSettingsPanelVisible); + assertEquals(SettingsMode.NETWORK_JOIN, view.settingsPanel.settingsMode); + offerJoinedGame(id1, "Anne", "Karl"); + view.settingsPanel.changePlayerColorEvent.emit(1, Color.GRAY); + assertEquals(Type.HUMAN, mockConnection.getCurrentGame().getGameSettings().getPlayerList().get(1).getType()); + assertEquals(Color.GRAY, mockConnection.playerColor); + + view.settingsPanel.backEvent.emit(); + assertTrue(view.isGameListPanelVisible); + } + + 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); + psettings2.setType(Type.VACANT); + gsettings.getPlayerList().add(psettings2); + GameData gameData = new GameData(id, gsettings, host); + mockConnection.gameOfferEvent.emit(gameData); + return gameData; + } + + private GameData offerJoinedGame(UUID id, String host, String player) { + GameSettings gsettings = new GameSettings(); + PlayerSettings psettings = new PlayerSettings(host, Color.BLACK); + psettings.setType(Type.HUMAN); + gsettings.getPlayerList().add(psettings); + PlayerSettings psettings2 = new PlayerSettings(player, Color.RED); + psettings2.setType(Type.NETWORK); + gsettings.getPlayerList().add(psettings2); + GameData gameData = new GameData(id, gsettings, host); + mockConnection.gameOfferEvent.emit(gameData); + return gameData; + } } |