package jrummikub.control.network; import static org.junit.Assert.*; 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; /** * Test class for game join control */ 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(); view = new MockView(); loginData = new LoginData("Karl", "server", "password", "channel"); networkControl = new NetworkControl(loginData, mockConnection, null, 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); } /** */ @Test public void gameWithdrawnTest() { 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"); mockConnection.gameWithdrawalEvent.emit(id1); assertTrue(view.isGameListPanelVisible); } /** */ @Test public void participantLeftTest() { 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"); mockConnection.participantLeftEvent.emit("Anne"); 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.NETWORK); gsettings.getPlayerList().add(psettings); PlayerSettings psettings2 = new PlayerSettings(player, Color.RED); psettings2.setType(Type.HUMAN); gsettings.getPlayerList().add(psettings2); GameData gameData = new GameData(id, gsettings, host); mockConnection.gameOfferEvent.emit(gameData); return gameData; } }