diff options
Diffstat (limited to 'test/jrummikub')
-rw-r--r-- | test/jrummikub/control/SettingsControlTest.java | 166 |
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); + } + +} |