summaryrefslogtreecommitdiffstats
path: root/test/jrummikub/control/GameControlTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'test/jrummikub/control/GameControlTest.java')
-rw-r--r--test/jrummikub/control/GameControlTest.java80
1 files changed, 80 insertions, 0 deletions
diff --git a/test/jrummikub/control/GameControlTest.java b/test/jrummikub/control/GameControlTest.java
index a9273ef..68dda26 100644
--- a/test/jrummikub/control/GameControlTest.java
+++ b/test/jrummikub/control/GameControlTest.java
@@ -10,6 +10,7 @@ import jrummikub.model.IHand;
import jrummikub.model.PlayerSettings;
import jrummikub.model.Position;
import jrummikub.model.Stone;
+import jrummikub.util.IListener;
import jrummikub.util.Pair;
import jrummikub.view.IView.BottomPanelType;
import jrummikub.view.MockView;
@@ -24,6 +25,7 @@ public class GameControlTest {
private GameControl gameControl;
private GameSettings gameSettings;
private MockView view;
+ protected boolean gameEnded;
/** */
@Before
@@ -81,6 +83,84 @@ public class GameControlTest {
view.newRoundEvent.emit();
assertSame(BottomPanelType.START_TURN_PANEL, view.bottomPanelType);
}
+
+ @Test
+ public void testNewGame() {
+ gameControl.getEndOfGameEvent().add(new IListener() {
+ @Override
+ public void handle() {
+ gameEnded = true;
+ }
+ });
+
+ gameEnded = false;
+
+ gameControl.startGame();
+ // Manipulate first player's hand, to allow player1 to win
+ IHand playerHand = gameControl.roundControl.roundState.getActivePlayer().getHand();
+ for (Pair<Stone, Position> entry : playerHand.clone()) {
+ playerHand.pickUp(entry.getFirst());
+ }
+ Stone stone1 = new Stone(9, RED);
+ Stone stone2 = new Stone(10, RED);
+ Stone stone3 = new Stone(11, RED);
+ playerHand.drop(stone1, new Position(0, 0));
+ playerHand.drop(stone2, new Position(0, 0));
+ playerHand.drop(stone3, new Position(0, 0));
+ // Done setting up first players hand
+
+ view.startTurnEvent.emit();
+
+ view.playerPanel.endTurnEvent.emit();
+ view.startTurnEvent.emit();
+ view.playerPanel.endTurnEvent.emit();
+ view.startTurnEvent.emit();
+
+ view.handPanel.stoneClickEvent.emit(stone1, false);
+ view.handPanel.stoneClickEvent.emit(stone2, true);
+ view.handPanel.stoneClickEvent.emit(stone3, true);
+
+ view.tablePanel.clickEvent.emit(new Position(0, 0));
+ view.playerPanel.endTurnEvent.emit();
+
+ assertSame(BottomPanelType.WIN_PANEL, view.bottomPanelType);
+
+
+ assertFalse(gameEnded);
+ view.newGameEvent.emit();
+ assertTrue(gameEnded);
+ }
+
+ @Test
+ public void testAborting() {
+ gameControl.startGame();
+
+ // Manipulate first player's hand, to allow player1 to win
+ IHand playerHand = gameControl.roundControl.roundState.getActivePlayer().getHand();
+ for (Pair<Stone, Position> entry : playerHand.clone()) {
+ playerHand.pickUp(entry.getFirst());
+ }
+ Stone stone1 = new Stone(9, RED);
+ Stone stone2 = new Stone(10, RED);
+ Stone stone3 = new Stone(11, RED);
+ playerHand.drop(stone1, new Position(0, 0));
+ playerHand.drop(stone2, new Position(0, 0));
+ playerHand.drop(stone3, new Position(0, 0));
+ // Done setting up first players hand
+
+ view.startTurnEvent.emit();
+
+ view.playerPanel.endTurnEvent.emit();
+ view.startTurnEvent.emit();
+ view.playerPanel.endTurnEvent.emit();
+ view.startTurnEvent.emit();
+
+ view.handPanel.stoneClickEvent.emit(stone1, false);
+ view.handPanel.stoneClickEvent.emit(stone2, true);
+ gameControl.abortGame();
+ assertTrue(view.handPanel.stoneClickEvent.listeners.isEmpty());
+ assertTrue(view.playerPanel.endTurnEvent.listeners.isEmpty());
+ }
/** */
@Test