This repository has been archived on 2025-03-02. You can view files and clone it, but cannot push or open issues or pull requests.
JRummikub/test/jrummikub/control/network/GameJoinControlTest.java
Jannis Harder f6a94e553f One class left to test completely
git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@605 72836036-5685-4462-b002-a69064685172
2011-07-04 23:29:05 +02:00

116 lines
3.6 KiB
Java

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;
}
}