summaryrefslogtreecommitdiffstats
path: root/test/jrummikub
diff options
context:
space:
mode:
Diffstat (limited to 'test/jrummikub')
-rw-r--r--test/jrummikub/control/SettingsControlTest.java166
1 files changed, 166 insertions, 0 deletions
diff --git a/test/jrummikub/control/SettingsControlTest.java b/test/jrummikub/control/SettingsControlTest.java
new file mode 100644
index 0000000..f0e4ae0
--- /dev/null
+++ b/test/jrummikub/control/SettingsControlTest.java
@@ -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);
+ }
+
+}