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/SettingsControlTest.java

167 lines
4.9 KiB
Java
Raw Normal View History

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