Test für SettingsControl, 3 neue Klassen, Mocks für SettingPanel, lauter fixes
git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@285 72836036-5685-4462-b002-a69064685172
This commit is contained in:
parent
df79c78dec
commit
531fe57b17
7 changed files with 432 additions and 58 deletions
166
test/jrummikub/control/SettingsControlTest.java
Normal file
166
test/jrummikub/control/SettingsControlTest.java
Normal file
|
@ -0,0 +1,166 @@
|
|||
package jrummikub.control;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import java.awt.Color;
|
||||
|
||||
import jrummikub.model.GameSettings;
|
||||
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();
|
||||
SettingsControl settingsControl = new SettingsControl(view);
|
||||
GameSettings gameSettings = null;
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
settingsControl.getStartGameEvent().add(new IListener1<GameSettings>() {
|
||||
|
||||
@Override
|
||||
public void handle(GameSettings value) {
|
||||
gameSettings = value;
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@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.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.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,
|
||||
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,
|
||||
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,
|
||||
view.settingsPanel.error);
|
||||
|
||||
view.settingsPanel.startGameEvent.emit();
|
||||
assertNull(gameSettings);
|
||||
}
|
||||
|
||||
}
|
Reference in a new issue