summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mock/jrummikub/view/MockSettingsPanel.java9
-rw-r--r--mock/jrummikub/view/MockView.java12
-rw-r--r--src/jrummikub/control/ApplicationControl.java2
-rw-r--r--test/jrummikub/control/ApplicationControlTest.java136
-rw-r--r--test/jrummikub/control/SaveControlTest.java1
-rw-r--r--test/jrummikub/control/SettingsControlTest.java192
6 files changed, 321 insertions, 31 deletions
diff --git a/mock/jrummikub/view/MockSettingsPanel.java b/mock/jrummikub/view/MockSettingsPanel.java
index 7bed40f..0e7dbf8 100644
--- a/mock/jrummikub/view/MockSettingsPanel.java
+++ b/mock/jrummikub/view/MockSettingsPanel.java
@@ -77,6 +77,12 @@ public class MockSettingsPanel implements ISettingsPanel {
/** */
public int highestValue;
/** */
+ public int totalTime;
+ /** */
+ public boolean noLimits;
+ /** */
+ public boolean seeHandSize;
+ /** */
public Set<StoneColor> stoneColors;
/** */
public MockEvent backEvent = new MockEvent();
@@ -159,6 +165,9 @@ public class MockSettingsPanel implements ISettingsPanel {
stoneSetNumber = gameSettings.getStoneSetNumber();
numberOfStonesDealt = gameSettings.getNumberOfStonesDealt();
highestValue = gameSettings.getHighestValue();
+ totalTime = gameSettings.getTotalTime();
+ noLimits = gameSettings.isNoLimits();
+ seeHandSize = gameSettings.getSeeHandSize();
stoneColors = new HashSet<StoneColor>(gameSettings.getStoneColors());
}
diff --git a/mock/jrummikub/view/MockView.java b/mock/jrummikub/view/MockView.java
index 8dc261b..e664c67 100644
--- a/mock/jrummikub/view/MockView.java
+++ b/mock/jrummikub/view/MockView.java
@@ -49,6 +49,12 @@ public class MockView implements IView {
public boolean isConnectPanelVisible = false;
/** */
public boolean pauseModeEnabled = false;
+ /** */
+ public boolean isPaused = false;
+ /** */
+ public boolean savingEnabled = false;
+ /** */
+ public boolean loadingError = false;
/** */
public Collection<Stone> selectedStones;
@@ -290,14 +296,12 @@ public class MockView implements IView {
@Override
public void showLoadingError() {
- // TODO Auto-generated method stub
-
+ loadingError = true;
}
@Override
public void enableSave(boolean enable) {
- // TODO Auto-generated method stub
-
+ savingEnabled = enable;
}
@Override
diff --git a/src/jrummikub/control/ApplicationControl.java b/src/jrummikub/control/ApplicationControl.java
index 25de8c9..04f18ac 100644
--- a/src/jrummikub/control/ApplicationControl.java
+++ b/src/jrummikub/control/ApplicationControl.java
@@ -102,7 +102,7 @@ public class ApplicationControl {
abortControls();
createLoginControl(true);
} else {
- view.getQuitWarningPanel().setMode(QuitMode.QUIT_PROCESS);
+ view.getQuitWarningPanel().setMode(QuitMode.QUIT_GAME);
view.showQuitWarningPanel(true);
tempConnection = view.getQuitWarningPanel().getQuitEvent()
.add(new IListener() {
diff --git a/test/jrummikub/control/ApplicationControlTest.java b/test/jrummikub/control/ApplicationControlTest.java
new file mode 100644
index 0000000..88f365a
--- /dev/null
+++ b/test/jrummikub/control/ApplicationControlTest.java
@@ -0,0 +1,136 @@
+package jrummikub.control;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import jrummikub.util.LoginData;
+import jrummikub.view.IQuitWarningPanel.QuitMode;
+import jrummikub.view.MockView;
+
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Tests for the testable parts of the application control
+ */
+public class ApplicationControlTest {
+ ApplicationControl testAppControl;
+ MockView view;
+
+ /** */
+ @Before
+ public void setup() {
+ view = new MockView();
+ }
+
+ /** */
+ @Test
+ public void enableSaving() {
+ assertFalse(view.savingEnabled);
+ testAppControl = new ApplicationControl(view);
+ testAppControl.startApplication();
+ assertTrue(view.isSettingsPanelVisible);
+ view.settingsPanel.startGameEvent.emit();
+ assertFalse(view.isSettingsPanelVisible);
+ assertTrue(view.savingEnabled);
+ }
+
+ /** */
+ @Test
+ public void pauseTest() {
+ testAppControl = new ApplicationControl(view);
+ testAppControl.startApplication();
+ view.settingsPanel.startGameEvent.emit();
+ view.getPlayerPanel().pauseEvent.emit();
+ // assertTrue(view.isPaused);
+ }
+
+ /** */
+ @Test
+ public void networkTest() {
+ testAppControl = new ApplicationControl(view);
+ testAppControl.startApplication();
+
+ view.networkGameEvent.emit();
+ assertTrue(view.isLoginPanelVisible);
+ }
+
+ /** */
+ @Test
+ public void networkFromRunningGameTest() {
+ testAppControl = new ApplicationControl(view);
+ testAppControl.startApplication();
+ view.settingsPanel.startGameEvent.emit();
+
+ view.networkGameEvent.emit();
+ assertTrue(view.isQuitWarningPanelVisible);
+ assertSame(QuitMode.QUIT_GAME, view.getQuitWarningPanel().getQuitMode());
+ view.getQuitWarningPanel().quitEvent.emit();
+ assertTrue(view.isLoginPanelVisible);
+ }
+
+ /** */
+ @Test
+ public void newGameFromNetworkTest() {
+ testAppControl = new ApplicationControl(view);
+ testAppControl.startApplication();
+
+ view.networkGameEvent.emit();
+ assertTrue(view.isLoginPanelVisible);
+
+ LoginData data = new LoginData("Horst", "server", "horstspw", "channel");
+ view.loginPanel.loginEvent.emit(data);
+ assertTrue(view.isConnectPanelVisible);
+ view.menuNewGameEvent.emit();
+ assertTrue(view.isQuitWarningPanelVisible);
+ assertSame(QuitMode.QUIT_GAME, view.getQuitWarningPanel().getQuitMode());
+ view.getQuitWarningPanel().quitEvent.emit();
+
+ assertFalse(view.isConnectPanelVisible);
+ assertTrue(view.isSettingsPanelVisible);
+ }
+
+ /** */
+ @Test
+ public void loadTest() {
+ testAppControl = new ApplicationControl(view);
+ testAppControl.startApplication();
+
+ view.loadEvent.emit();
+ assertFalse(view.isQuitWarningPanelVisible);
+ }
+
+ /** */
+ @Test
+ public void loadFromRunningGameTest() {
+ testAppControl = new ApplicationControl(view);
+ testAppControl.startApplication();
+ view.settingsPanel.startGameEvent.emit();
+
+ view.loadEvent.emit();
+ assertTrue(view.isQuitWarningPanelVisible);
+ assertSame(QuitMode.QUIT_GAME, view.getQuitWarningPanel().getQuitMode());
+ view.getQuitWarningPanel().quitEvent.emit();
+ // TODO asserte was
+ }
+
+ /** */
+ @Test
+ public void newGameFromRunningGameTest() {
+ testAppControl = new ApplicationControl(view);
+ testAppControl.startApplication();
+ view.settingsPanel.startGameEvent.emit();
+
+ view.menuNewGameEvent.emit();
+ assertTrue(view.isQuitWarningPanelVisible);
+ assertSame(QuitMode.QUIT_GAME, view.getQuitWarningPanel().getQuitMode());
+ view.getQuitWarningPanel().cancelEvent.emit();
+ assertFalse(view.isQuitWarningPanelVisible);
+
+ view.menuNewGameEvent.emit();
+ assertTrue(view.isQuitWarningPanelVisible);
+ assertSame(QuitMode.QUIT_GAME, view.getQuitWarningPanel().getQuitMode());
+ view.getQuitWarningPanel().quitEvent.emit();
+ assertTrue(view.isSettingsPanelVisible);
+ }
+}
diff --git a/test/jrummikub/control/SaveControlTest.java b/test/jrummikub/control/SaveControlTest.java
index bcdd16a..58f3c98 100644
--- a/test/jrummikub/control/SaveControlTest.java
+++ b/test/jrummikub/control/SaveControlTest.java
@@ -66,6 +66,7 @@ public class SaveControlTest {
view.loadEvent.emit();
view.getQuitWarningPanel().quitEvent.emit();
+
view.loadFileEvent.emit(file);
file.delete();
}
diff --git a/test/jrummikub/control/SettingsControlTest.java b/test/jrummikub/control/SettingsControlTest.java
index cb527d2..72ac1b6 100644
--- a/test/jrummikub/control/SettingsControlTest.java
+++ b/test/jrummikub/control/SettingsControlTest.java
@@ -28,7 +28,6 @@ public class SettingsControlTest {
@Before
public void setup() {
settingsControl.getStartGameEvent().add(new IListener1<GameSettings>() {
-
@Override
public void handle(GameSettings value) {
gameSettings = value;
@@ -41,29 +40,30 @@ public class SettingsControlTest {
/** */
@Test
public void initialStateTest() {
- assertSame(ISettingsPanel.SettingsError.NO_ERROR, view.settingsPanel.error);
+ assertSame(ISettingsPanel.SettingsError.NO_ERROR,
+ view.settingsPanel.error);
+ for (Boolean enabled : view.settingsPanel.removePlayerButtonsEnabled) {
+ assertFalse(enabled);
+ }
+
view.settingsPanel.startGameEvent.emit();
assertNotNull(gameSettings);
assertEquals(2, gameSettings.getPlayerList().size());
assertEquals(2, view.settingsPanel.removePlayerButtonsEnabled.size());
-
- for (Boolean enabled : view.settingsPanel.removePlayerButtonsEnabled) {
- assertFalse(enabled);
- }
}
/** */
@Test
public void addPlayerTest() {
view.settingsPanel.addPlayerEvent.emit();
+ for (Boolean enabled : view.settingsPanel.removePlayerButtonsEnabled) {
+ assertTrue(enabled);
+ }
+
view.settingsPanel.startGameEvent.emit();
assertNotNull(gameSettings);
assertEquals(3, gameSettings.getPlayerList().size());
assertEquals(3, view.settingsPanel.removePlayerButtonsEnabled.size());
-
- for (Boolean enabled : view.settingsPanel.removePlayerButtonsEnabled) {
- assertTrue(enabled);
- }
}
/** */
@@ -73,15 +73,15 @@ public class SettingsControlTest {
view.settingsPanel.addPlayerEvent.emit();
}
view.settingsPanel.changeStoneSetNumberEvent.emit(8);
+ for (Boolean enabled : view.settingsPanel.removePlayerButtonsEnabled) {
+ assertTrue(enabled);
+ }
+ assertFalse(view.settingsPanel.addPlayerButtonEnabled);
+
view.settingsPanel.startGameEvent.emit();
assertNotNull(gameSettings);
assertEquals(16, gameSettings.getPlayerList().size());
assertEquals(16, view.settingsPanel.removePlayerButtonsEnabled.size());
- assertFalse(view.settingsPanel.addPlayerButtonEnabled);
-
- for (Boolean enabled : view.settingsPanel.removePlayerButtonsEnabled) {
- assertTrue(enabled);
- }
}
/** */
@@ -92,16 +92,15 @@ public class SettingsControlTest {
}
view.settingsPanel.removePlayerEvent.emit(0);
view.settingsPanel.changeStoneSetNumberEvent.emit(8);
+ for (Boolean enabled : view.settingsPanel.removePlayerButtonsEnabled) {
+ assertTrue(enabled);
+ }
+ assertTrue(view.settingsPanel.addPlayerButtonEnabled);
+
view.settingsPanel.startGameEvent.emit();
assertNotNull(gameSettings);
assertEquals(15, gameSettings.getPlayerList().size());
assertEquals(15, view.settingsPanel.removePlayerButtonsEnabled.size());
-
- assertTrue(view.settingsPanel.addPlayerButtonEnabled);
-
- for (Boolean enabled : view.settingsPanel.removePlayerButtonsEnabled) {
- assertTrue(enabled);
- }
}
/** */
@@ -109,14 +108,15 @@ public class SettingsControlTest {
public void removePlayerTest() {
view.settingsPanel.addPlayerEvent.emit();
view.settingsPanel.removePlayerEvent.emit(0);
+ for (Boolean enabled : view.settingsPanel.removePlayerButtonsEnabled) {
+ assertFalse(enabled);
+ }
+
view.settingsPanel.startGameEvent.emit();
+
assertNotNull(gameSettings);
assertEquals(2, gameSettings.getPlayerList().size());
assertEquals(2, view.settingsPanel.removePlayerButtonsEnabled.size());
-
- for (Boolean enabled : view.settingsPanel.removePlayerButtonsEnabled) {
- assertFalse(enabled);
- }
}
/** */
@@ -183,7 +183,8 @@ public class SettingsControlTest {
view.settingsPanel.changePlayerNameEvent.emit(1, name2);
assertTrue(view.settingsPanel.startButtonEnabled);
- assertSame(ISettingsPanel.SettingsError.NO_ERROR, view.settingsPanel.error);
+ assertSame(ISettingsPanel.SettingsError.NO_ERROR,
+ view.settingsPanel.error);
view.settingsPanel.startGameEvent.emit();
assertNotNull(gameSettings);
@@ -216,6 +217,20 @@ public class SettingsControlTest {
/** */
@Test
+ public void initialMeldWarningTest() {
+ assertEquals(initialSettings.getInitialMeldThreshold(),
+ view.settingsPanel.initialMeldThreshold);
+ view.settingsPanel.changeInitialMeldThresholdEvent.emit(900);
+ assertTrue(view.settingsPanel.startButtonEnabled);
+ assertSame(ISettingsPanel.SettingsError.TOO_HIGH_THRESHOLD_WARNING,
+ view.settingsPanel.error);
+
+ view.settingsPanel.startGameEvent.emit();
+ assertNotNull(gameSettings);
+ }
+
+ /** */
+ @Test
public void jokerNumberTest() {
assertEquals(initialSettings.getJokerNumber(),
view.settingsPanel.jokerNumber);
@@ -257,6 +272,39 @@ public class SettingsControlTest {
view.settingsPanel.startGameEvent.emit();
assertEquals(10, gameSettings.getHighestValue());
}
+
+ /** */
+ @Test
+ public void changeTurnTimeTest() {
+ assertEquals(initialSettings.getTotalTime(),
+ view.settingsPanel.totalTime);
+
+ view.settingsPanel.changeTimeEvent.emit(50);
+ view.settingsPanel.startGameEvent.emit();
+ assertEquals(50, gameSettings.getTotalTime());
+ }
+
+ /** */
+ @Test
+ public void changeNoLimitsTest() {
+ assertEquals(initialSettings.isNoLimits(),
+ view.settingsPanel.noLimits);
+
+ view.settingsPanel.changeNoLimitsEvent.emit(true);
+ view.settingsPanel.startGameEvent.emit();
+ assertEquals(true, gameSettings.isNoLimits());
+ }
+
+ /** */
+ @Test
+ public void changeSeeHandsTest() {
+ assertEquals(initialSettings.getSeeHandSize(),
+ view.settingsPanel.seeHandSize);
+
+ view.settingsPanel.changeSeeHandSizeEvent.emit(true);
+ view.settingsPanel.startGameEvent.emit();
+ assertEquals(true, gameSettings.getSeeHandSize());
+ }
/** */
@Test
@@ -270,6 +318,98 @@ public class SettingsControlTest {
assertEquals(new HashSet<StoneColor>(Arrays.asList(BLUE, RED, BLACK)),
gameSettings.getStoneColors());
}
+
+ /** */
+ @Test
+ public void notEnoghColorsErrorTest() {
+ assertEquals(initialSettings.getStoneColors(),
+ view.settingsPanel.stoneColors);
+
+ view.settingsPanel.changeStoneColorsEvent.emit(new HashSet<StoneColor>(
+ Arrays.asList(BLUE, RED)));
+ assertFalse(view.settingsPanel.startButtonEnabled);
+ assertSame(ISettingsPanel.SettingsError.NOT_ENOUGH_COLORS_ERROR,
+ view.settingsPanel.error);
+
+ view.settingsPanel.startGameEvent.emit();
+ assertNull(gameSettings);
+ }
+
+ /** */
+ @Test
+ public void childrenVariantTest(){
+ assertEquals(initialSettings.getInitialMeldThreshold(), view.settingsPanel.initialMeldThreshold);
+ assertEquals(initialSettings.getStoneSetNumber(), view.settingsPanel.stoneSetNumber);
+ assertEquals(initialSettings.getHighestValue(), view.settingsPanel.highestValue);
+ assertEquals(initialSettings.getNumberOfStonesDealt(), view.settingsPanel.numberOfStonesDealt);
+ assertEquals(initialSettings.getJokerNumber(), view.settingsPanel.jokerNumber);
+ assertEquals(initialSettings.getTotalTime(), view.settingsPanel.totalTime);
+ assertEquals(initialSettings.isNoLimits(), view.settingsPanel.noLimits);
+
+ view.settingsPanel.setVariantChildrenEvent.emit();
+
+ assertEquals(20, view.settingsPanel.initialMeldThreshold);
+ assertEquals(initialSettings.getStoneSetNumber(), view.settingsPanel.stoneSetNumber);
+ assertEquals(10, view.settingsPanel.highestValue);
+ assertEquals(initialSettings.getNumberOfStonesDealt(), view.settingsPanel.numberOfStonesDealt);
+ assertEquals(6, view.settingsPanel.jokerNumber);
+ assertEquals(120, view.settingsPanel.totalTime);
+ assertEquals(initialSettings.isNoLimits(), view.settingsPanel.noLimits);
+
+ view.settingsPanel.startGameEvent.emit();
+ assertNotNull(gameSettings);
+
+ assertEquals(20, gameSettings.getInitialMeldThreshold());
+ assertEquals(initialSettings.getStoneSetNumber(), gameSettings.getStoneSetNumber());
+ assertEquals(10, view.settingsPanel.highestValue);
+ assertEquals(initialSettings.getNumberOfStonesDealt(),gameSettings.getNumberOfStonesDealt());
+ assertEquals(6,gameSettings.getJokerNumber());
+ assertEquals(120, gameSettings.getTotalTime());
+ assertEquals(initialSettings.isNoLimits(), gameSettings.isNoLimits());
+ }
+
+ /** */
+ @Test
+ public void defaultVariantTest(){
+ assertEquals(initialSettings.getInitialMeldThreshold(), view.settingsPanel.initialMeldThreshold);
+ assertEquals(initialSettings.getStoneSetNumber(), view.settingsPanel.stoneSetNumber);
+ assertEquals(initialSettings.getHighestValue(), view.settingsPanel.highestValue);
+ assertEquals(initialSettings.getNumberOfStonesDealt(), view.settingsPanel.numberOfStonesDealt);
+ assertEquals(initialSettings.getJokerNumber(), view.settingsPanel.jokerNumber);
+ assertEquals(initialSettings.getTotalTime(), view.settingsPanel.totalTime);
+ assertEquals(initialSettings.isNoLimits(), view.settingsPanel.noLimits);
+
+ view.settingsPanel.setVariantChildrenEvent.emit();
+
+ assertEquals(20, view.settingsPanel.initialMeldThreshold);
+ assertEquals(initialSettings.getStoneSetNumber(), view.settingsPanel.stoneSetNumber);
+ assertEquals(10, view.settingsPanel.highestValue);
+ assertEquals(initialSettings.getNumberOfStonesDealt(), view.settingsPanel.numberOfStonesDealt);
+ assertEquals(6, view.settingsPanel.jokerNumber);
+ assertEquals(120, view.settingsPanel.totalTime);
+ assertEquals(initialSettings.isNoLimits(), view.settingsPanel.noLimits);
+
+ view.settingsPanel.setVariantDefaultEvent.emit();
+
+ assertEquals(initialSettings.getInitialMeldThreshold(), view.settingsPanel.initialMeldThreshold);
+ assertEquals(initialSettings.getStoneSetNumber(), view.settingsPanel.stoneSetNumber);
+ assertEquals(initialSettings.getHighestValue(), view.settingsPanel.highestValue);
+ assertEquals(initialSettings.getNumberOfStonesDealt(), view.settingsPanel.numberOfStonesDealt);
+ assertEquals(initialSettings.getJokerNumber(), view.settingsPanel.jokerNumber);
+ assertEquals(initialSettings.getTotalTime(), view.settingsPanel.totalTime);
+ assertEquals(initialSettings.isNoLimits(), view.settingsPanel.noLimits);
+
+ view.settingsPanel.startGameEvent.emit();
+ assertNotNull(gameSettings);
+
+ assertEquals(initialSettings.getInitialMeldThreshold(), gameSettings.getInitialMeldThreshold());
+ assertEquals(initialSettings.getStoneSetNumber(), gameSettings.getStoneSetNumber());
+ assertEquals(initialSettings.getHighestValue(), gameSettings.getHighestValue());
+ assertEquals(initialSettings.getNumberOfStonesDealt(), gameSettings.getNumberOfStonesDealt());
+ assertEquals(initialSettings.getJokerNumber(), gameSettings.getJokerNumber());
+ assertEquals(initialSettings.getTotalTime(),gameSettings.getTotalTime());
+ assertEquals(initialSettings.isNoLimits(), gameSettings.isNoLimits());
+ }
/** */
@Test