From f5aa073827980bdae3e530b6ea9d8c17807ad764 Mon Sep 17 00:00:00 2001 From: Jannis Harder Date: Wed, 22 Jun 2011 10:38:10 +0200 Subject: Some missing control tests git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@591 72836036-5685-4462-b002-a69064685172 --- test/jrummikub/control/GameControlTest.java | 80 +++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) (limited to 'test/jrummikub/control/GameControlTest.java') 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 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 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 -- cgit v1.2.3