diff options
Diffstat (limited to 'test/jrummikub/control')
-rw-r--r-- | test/jrummikub/control/TurnControlTest.java | 91 |
1 files changed, 80 insertions, 11 deletions
diff --git a/test/jrummikub/control/TurnControlTest.java b/test/jrummikub/control/TurnControlTest.java index 288214e..840e83f 100644 --- a/test/jrummikub/control/TurnControlTest.java +++ b/test/jrummikub/control/TurnControlTest.java @@ -1,20 +1,20 @@ package jrummikub.control; -import java.util.Collection; +import static org.junit.Assert.*; + +import java.util.List; +import java.util.ArrayList; +import java.util.Arrays; import jrummikub.model.Stone; +import jrummikub.model.StoneColor; import jrummikub.util.Event; import jrummikub.util.IEvent; import jrummikub.util.IListener; -import jrummikub.view.IHandPanel; -import jrummikub.view.IPlayerPanel; -import jrummikub.view.ITablePanel; -import jrummikub.view.IView; import jrummikub.view.MockView; import org.junit.Before; import org.junit.Test; -import static org.junit.Assert.*; public class TurnControlTest { @@ -53,7 +53,8 @@ public class TurnControlTest { public void viewEndOfTurn() { eventFired = false; mockTimer.timerRunning = true; - TurnControl testControl = new TurnControl(null, null, mockView, mockTimer); + TurnControl testControl = new TurnControl(null, null, mockView, + mockTimer); testControl.getEndOfTurnEvent().add(new IListener() { @@ -64,16 +65,17 @@ public class TurnControlTest { }); mockView.playerPanel.endTurnEvent.emit(); - + assertTrue(eventFired); assertFalse(mockTimer.timerRunning); } - + @Test public void timerEndOfTurn() { eventFired = false; mockTimer.timerRunning = true; - TurnControl testControl = new TurnControl(null, null, mockView, mockTimer); + TurnControl testControl = new TurnControl(null, null, mockView, + mockTimer); testControl.getEndOfTurnEvent().add(new IListener() { @@ -84,8 +86,75 @@ public class TurnControlTest { }); mockTimer.timeRunOutEvent.emit(); - + assertTrue(eventFired); assertFalse(mockTimer.timerRunning); } + + @Test + public void selectStoneInHand() { + TurnControl testControl = new TurnControl(null, null, mockView, + mockTimer); + + Stone firstStone = new Stone(StoneColor.RED); + + // Select first stone + mockView.playerPanel.handPanel.stoneClickEvent.emit(firstStone, false); + + assertCollection(Arrays.asList(firstStone)); + + // Select second stone + Stone secondStone = new Stone(StoneColor.BLACK); + mockView.playerPanel.handPanel.stoneClickEvent.emit(secondStone, false); + + assertCollection(Arrays.asList(secondStone)); + + } + + @Test + public void collectStoneInHand() { + TurnControl testControl = new TurnControl(null, null, mockView, + mockTimer); + + Stone firstStone = new Stone(StoneColor.RED); + + // Select first stone + mockView.playerPanel.handPanel.stoneClickEvent.emit(firstStone, true); + + assertCollection(Arrays.asList(firstStone)); + + // Select second stone + Stone secondStone = new Stone(StoneColor.BLACK); + mockView.playerPanel.handPanel.stoneClickEvent.emit(secondStone, true); + + assertCollection(Arrays.asList(firstStone, secondStone)); + + // De-select first stone + mockView.playerPanel.handPanel.stoneClickEvent.emit(firstStone, true); + + assertCollection(Arrays.asList(secondStone)); + } + + @Test + public void deselectStoneInCollection() { + TurnControl testControl = new TurnControl(null, null, mockView, + mockTimer); + Stone firstStone = new Stone(StoneColor.RED); + Stone secondStone = new Stone(StoneColor.BLACK); + + mockView.playerPanel.handPanel.stoneClickEvent.emit(firstStone, true); + mockView.playerPanel.handPanel.stoneClickEvent.emit(secondStone, true); + + mockView.tablePanel.stoneCollectionPanel.stoneClickEvent.emit( + firstStone, true); + + assertCollection(Arrays.asList(secondStone)); + } + + private void assertCollection(List<Stone> expected) { + ArrayList<Stone> selectedStones = new ArrayList<Stone>( + mockView.selectedStones); + ArrayList<Stone> expectedStones = new ArrayList<Stone>(expected); + assertEquals(selectedStones, expectedStones); + } } |