summaryrefslogtreecommitdiffstats
path: root/test/jrummikub
diff options
context:
space:
mode:
Diffstat (limited to 'test/jrummikub')
-rw-r--r--test/jrummikub/control/GameControlTest.java100
1 files changed, 100 insertions, 0 deletions
diff --git a/test/jrummikub/control/GameControlTest.java b/test/jrummikub/control/GameControlTest.java
new file mode 100644
index 0000000..706928c
--- /dev/null
+++ b/test/jrummikub/control/GameControlTest.java
@@ -0,0 +1,100 @@
+package jrummikub.control;
+
+import static jrummikub.model.StoneColor.RED;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
+import java.awt.Color;
+
+import jrummikub.model.GameSettings;
+import jrummikub.model.IHand;
+import jrummikub.model.PlayerSettings;
+import jrummikub.model.Position;
+import jrummikub.model.Stone;
+import jrummikub.util.Pair;
+import jrummikub.view.MockView;
+
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Tests for the game control
+ */
+public class GameControlTest {
+ private GameControl gameControl;
+ private GameSettings gameSettings;
+ private MockView view;
+
+ /** */
+ @Before
+ public void setUp() {
+ view = new MockView();
+ gameSettings = new GameSettings();
+ gameSettings.getPlayerList().add(
+ new PlayerSettings("Foo", new Color(1.0f, 0, 0)));
+ gameSettings.getPlayerList().add(
+ new PlayerSettings("Bar", new Color(0, 1.0f, 0)));
+ gameControl = new GameControl(gameSettings, view);
+ }
+
+ /** */
+ @Test
+ public void testStartFirstRound() {
+ gameControl.startGame();
+ assertTrue(view.displayStartTurnPanel);
+ }
+
+ /** */
+ @Test
+ public void testEndOfRound() {
+ gameControl.startGame();
+ // Manipulate first players 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();
+ assertTrue(view.displayWinPanel);
+
+ view.newRoundEvent.emit();
+ assertTrue(view.displayStartTurnPanel);
+ }
+
+ /** */
+ @Test
+ public void testRedealing() {
+ gameControl.startGame();
+ view.startTurnEvent.emit();
+ PlayerSettings firstPlayer = gameControl.roundControl.roundState
+ .getActivePlayer().getPlayerSettings();
+ view.playerPanel.endTurnEvent.emit();
+ view.startTurnEvent.emit();
+ view.playerPanel.redealEvent.emit();
+ assertTrue(view.displayStartTurnPanel);
+ view.startTurnEvent.emit();
+ assertSame(firstPlayer, gameControl.roundControl.roundState
+ .getActivePlayer().getPlayerSettings());
+
+ }
+}