git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@337 72836036-5685-4462-b002-a69064685172
271 lines
7.9 KiB
Java
271 lines
7.9 KiB
Java
package jrummikub.control;
|
|
|
|
import static jrummikub.model.StoneColor.*;
|
|
import static org.junit.Assert.*;
|
|
|
|
import java.awt.Color;
|
|
import java.util.Arrays;
|
|
import java.util.HashSet;
|
|
|
|
import jrummikub.control.turn.TurnControlFactory;
|
|
import jrummikub.model.GameSettings;
|
|
import jrummikub.model.StoneColor;
|
|
import jrummikub.util.IListener1;
|
|
import jrummikub.view.ISettingsPanel;
|
|
import jrummikub.view.MockView;
|
|
|
|
import org.junit.Before;
|
|
import org.junit.Test;
|
|
|
|
/** */
|
|
public class SettingsControlTest {
|
|
MockView view = new MockView();
|
|
GameSettings initialSettings = new GameSettings();
|
|
SettingsControl settingsControl = new SettingsControl(view, initialSettings);
|
|
GameSettings gameSettings = null;
|
|
|
|
/** */
|
|
@Before
|
|
public void setup() {
|
|
settingsControl.getStartGameEvent().add(new IListener1<GameSettings>() {
|
|
|
|
@Override
|
|
public void handle(GameSettings value) {
|
|
gameSettings = value;
|
|
}
|
|
});
|
|
|
|
settingsControl.startSettings();
|
|
}
|
|
|
|
/** */
|
|
@Test
|
|
public void initialStateTest() {
|
|
assertSame(ISettingsPanel.SettingsError.NO_ERROR, view.settingsPanel.error);
|
|
view.settingsPanel.startGameEvent.emit();
|
|
assertNotNull(gameSettings);
|
|
assertEquals(2, gameSettings.getPlayerList().size());
|
|
assertFalse(view.settingsPanel.removePlayerButtonsEnabled);
|
|
}
|
|
|
|
/** */
|
|
@Test
|
|
public void addPlayerTest() {
|
|
view.settingsPanel.addPlayerEvent.emit();
|
|
view.settingsPanel.startGameEvent.emit();
|
|
assertNotNull(gameSettings);
|
|
assertEquals(3, gameSettings.getPlayerList().size());
|
|
assertTrue(view.settingsPanel.removePlayerButtonsEnabled);
|
|
}
|
|
|
|
/** */
|
|
@Test
|
|
public void add14PlayerTest() {
|
|
for (int i = 0; i < 14; i++) {
|
|
view.settingsPanel.addPlayerEvent.emit();
|
|
}
|
|
view.settingsPanel.changeStoneSetNumberEvent.emit(8);
|
|
view.settingsPanel.startGameEvent.emit();
|
|
assertNotNull(gameSettings);
|
|
assertEquals(16, gameSettings.getPlayerList().size());
|
|
assertTrue(view.settingsPanel.removePlayerButtonsEnabled);
|
|
assertFalse(view.settingsPanel.addPlayerButtonEnabled);
|
|
}
|
|
|
|
/** */
|
|
@Test
|
|
public void add14RemovePlayerTest() {
|
|
for (int i = 0; i < 14; i++) {
|
|
view.settingsPanel.addPlayerEvent.emit();
|
|
}
|
|
view.settingsPanel.removePlayerEvent.emit(0);
|
|
view.settingsPanel.changeStoneSetNumberEvent.emit(8);
|
|
view.settingsPanel.startGameEvent.emit();
|
|
assertNotNull(gameSettings);
|
|
assertEquals(15, gameSettings.getPlayerList().size());
|
|
assertTrue(view.settingsPanel.removePlayerButtonsEnabled);
|
|
assertTrue(view.settingsPanel.addPlayerButtonEnabled);
|
|
}
|
|
|
|
/** */
|
|
@Test
|
|
public void removePlayerTest() {
|
|
view.settingsPanel.addPlayerEvent.emit();
|
|
view.settingsPanel.removePlayerEvent.emit(0);
|
|
view.settingsPanel.startGameEvent.emit();
|
|
assertNotNull(gameSettings);
|
|
assertEquals(2, gameSettings.getPlayerList().size());
|
|
assertFalse(view.settingsPanel.removePlayerButtonsEnabled);
|
|
}
|
|
|
|
/** */
|
|
@Test
|
|
public void takenColorTest() {
|
|
Color color1 = Color.RED;
|
|
Color color2 = Color.BLUE;
|
|
view.settingsPanel.changePlayerColorEvent.emit(0, color1);
|
|
view.settingsPanel.changePlayerColorEvent.emit(1, color2);
|
|
view.settingsPanel.changePlayerColorEvent.emit(1, color1);
|
|
view.settingsPanel.startGameEvent.emit();
|
|
assertNotNull(gameSettings);
|
|
assertEquals(2, gameSettings.getPlayerList().size());
|
|
assertSame(color2, gameSettings.getPlayerList().get(0).getColor());
|
|
assertSame(color1, gameSettings.getPlayerList().get(1).getColor());
|
|
}
|
|
|
|
/** */
|
|
@Test
|
|
public void unusedColorTest() {
|
|
Color color1 = Color.RED;
|
|
Color color2 = Color.BLUE;
|
|
Color color3 = Color.PINK;
|
|
view.settingsPanel.changePlayerColorEvent.emit(0, color1);
|
|
view.settingsPanel.changePlayerColorEvent.emit(1, color2);
|
|
view.settingsPanel.changePlayerColorEvent.emit(1, color3);
|
|
view.settingsPanel.startGameEvent.emit();
|
|
assertNotNull(gameSettings);
|
|
assertEquals(2, gameSettings.getPlayerList().size());
|
|
assertSame(color1, gameSettings.getPlayerList().get(0).getColor());
|
|
assertSame(color3, gameSettings.getPlayerList().get(1).getColor());
|
|
}
|
|
|
|
/** */
|
|
@Test
|
|
public void takenNameTest() {
|
|
String name1 = "Julia";
|
|
view.settingsPanel.changePlayerNameEvent.emit(0, name1);
|
|
view.settingsPanel.changePlayerNameEvent.emit(1, name1);
|
|
|
|
assertFalse(view.settingsPanel.startButtonEnabled);
|
|
assertSame(ISettingsPanel.SettingsError.DUPLICATE_PLAYER_NAME_ERROR,
|
|
view.settingsPanel.error);
|
|
|
|
view.settingsPanel.startGameEvent.emit();
|
|
assertNull(gameSettings);
|
|
}
|
|
|
|
/** */
|
|
@Test
|
|
public void fixTakenNameTest() {
|
|
String name1 = "Julia";
|
|
view.settingsPanel.changePlayerNameEvent.emit(0, name1);
|
|
view.settingsPanel.changePlayerNameEvent.emit(1, name1);
|
|
|
|
assertFalse(view.settingsPanel.startButtonEnabled);
|
|
assertSame(ISettingsPanel.SettingsError.DUPLICATE_PLAYER_NAME_ERROR,
|
|
view.settingsPanel.error);
|
|
|
|
view.settingsPanel.startGameEvent.emit();
|
|
assertNull(gameSettings);
|
|
|
|
String name2 = "Karl";
|
|
view.settingsPanel.changePlayerNameEvent.emit(1, name2);
|
|
|
|
assertTrue(view.settingsPanel.startButtonEnabled);
|
|
assertSame(ISettingsPanel.SettingsError.NO_ERROR, view.settingsPanel.error);
|
|
|
|
view.settingsPanel.startGameEvent.emit();
|
|
assertNotNull(gameSettings);
|
|
}
|
|
|
|
/** */
|
|
@Test
|
|
public void emptyNameTest() {
|
|
String name1 = "";
|
|
view.settingsPanel.changePlayerNameEvent.emit(0, name1);
|
|
|
|
assertFalse(view.settingsPanel.startButtonEnabled);
|
|
assertSame(ISettingsPanel.SettingsError.NO_PLAYER_NAME_ERROR,
|
|
view.settingsPanel.error);
|
|
|
|
view.settingsPanel.startGameEvent.emit();
|
|
assertNull(gameSettings);
|
|
}
|
|
|
|
/** */
|
|
@Test
|
|
public void initialMeldThresholdTest() {
|
|
assertEquals(initialSettings.getInitialMeldThreshold(),
|
|
view.settingsPanel.initialMeldThreshold);
|
|
|
|
view.settingsPanel.changeInitialMeldThresholdEvent.emit(25);
|
|
view.settingsPanel.startGameEvent.emit();
|
|
assertEquals(25, gameSettings.getInitialMeldThreshold());
|
|
}
|
|
|
|
/** */
|
|
@Test
|
|
public void jokerNumberTest() {
|
|
assertEquals(initialSettings.getJokerNumber(),
|
|
view.settingsPanel.jokerNumber);
|
|
|
|
view.settingsPanel.changeJokerNumberEvent.emit(25);
|
|
view.settingsPanel.startGameEvent.emit();
|
|
assertEquals(25, gameSettings.getJokerNumber());
|
|
}
|
|
|
|
/** */
|
|
@Test
|
|
public void changeStoneSetNumberTest() {
|
|
assertEquals(initialSettings.getStoneSetNumber(),
|
|
view.settingsPanel.stoneSetNumber);
|
|
|
|
view.settingsPanel.changeStoneSetNumberEvent.emit(3);
|
|
view.settingsPanel.startGameEvent.emit();
|
|
assertEquals(3, gameSettings.getStoneSetNumber());
|
|
}
|
|
|
|
/** */
|
|
@Test
|
|
public void changeNumberOfStonesDealtTest() {
|
|
assertEquals(initialSettings.getNumberOfStonesDealt(),
|
|
view.settingsPanel.numberOfStonesDealt);
|
|
|
|
view.settingsPanel.changeNumberOfStonesDealtEvent.emit(15);
|
|
view.settingsPanel.startGameEvent.emit();
|
|
assertEquals(15, gameSettings.getNumberOfStonesDealt());
|
|
}
|
|
|
|
/** */
|
|
@Test
|
|
public void changeHighestValueTest() {
|
|
assertEquals(initialSettings.getHighestValue(),
|
|
view.settingsPanel.highestValue);
|
|
|
|
view.settingsPanel.changeHighestValueEvent.emit(10);
|
|
view.settingsPanel.startGameEvent.emit();
|
|
assertEquals(10, gameSettings.getHighestValue());
|
|
}
|
|
|
|
/** */
|
|
@Test
|
|
public void changeStoneColorsTest() {
|
|
assertEquals(initialSettings.getStoneColors(),
|
|
view.settingsPanel.stoneColors);
|
|
|
|
view.settingsPanel.changeStoneColorsEvent.emit(new HashSet<StoneColor>(Arrays.asList(
|
|
BLUE, RED, BLACK)));
|
|
view.settingsPanel.startGameEvent.emit();
|
|
assertEquals(new HashSet<StoneColor>(Arrays.asList(BLUE, RED, BLACK)),
|
|
gameSettings.getStoneColors());
|
|
}
|
|
|
|
/** */
|
|
@Test
|
|
public void typeChangeTest() {
|
|
view.settingsPanel.changePlayerTypeEvent.emit(0,
|
|
TurnControlFactory.Type.COMPUTER);
|
|
view.settingsPanel.changePlayerTypeEvent.emit(1,
|
|
TurnControlFactory.Type.COMPUTER);
|
|
view.settingsPanel.changePlayerTypeEvent.emit(1,
|
|
TurnControlFactory.Type.HUMAN);
|
|
view.settingsPanel.startGameEvent.emit();
|
|
assertNotNull(gameSettings);
|
|
assertEquals(2, gameSettings.getPlayerList().size());
|
|
assertSame(TurnControlFactory.Type.COMPUTER, gameSettings.getPlayerList()
|
|
.get(0).getTurnControlType());
|
|
assertSame(TurnControlFactory.Type.HUMAN,
|
|
gameSettings.getPlayerList().get(1).getTurnControlType());
|
|
}
|
|
|
|
}
|