diff options
Diffstat (limited to 'test/jrummikub')
-rw-r--r-- | test/jrummikub/control/TurnControlTest.java | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/test/jrummikub/control/TurnControlTest.java b/test/jrummikub/control/TurnControlTest.java index 44b7729..b018182 100644 --- a/test/jrummikub/control/TurnControlTest.java +++ b/test/jrummikub/control/TurnControlTest.java @@ -11,8 +11,10 @@ import static org.junit.Assert.assertTrue; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.HashSet; import java.util.Iterator; import java.util.List; +import java.util.Set; import jrummikub.model.IHand; import jrummikub.model.ITable; @@ -1026,4 +1028,63 @@ public class TurnControlTest { checkHandDisplay(mockHand); } + + @Test + public void testDropHandValid() { + testControl.startTurn(); + + Stone firstStone = new Stone(StoneColor.RED); + Stone secondStone = new Stone(StoneColor.BLACK); + + mockHand.drop(firstStone, new Position(0,0)); + mockHand.drop(secondStone, new Position(1,0)); + + mockView.playerPanel.handPanel.stoneClickEvent.emit(firstStone, true); + mockView.playerPanel.handPanel.stoneClickEvent.emit(secondStone, true); + + mockView.playerPanel.handPanel.clickEvent.emit(new Position(2,0.25f)); + + assertCollection(new ArrayList<Stone>()); + + Set<Stone> expected = new HashSet<Stone>(Arrays.asList(firstStone, secondStone)); + assertEquals(expected, mockHand.pickups); + + Set<Stone> handStones = new HashSet<Stone>(); + for (Pair<Stone, Position> stone : mockHand.stones) { + assertEquals(stone.getSecond(), new Position(2,0)); + handStones.add(stone.getFirst()); + } + assertEquals(expected, handStones); + } + + @Test + public void testDropHandInvalid() { + testControl.startTurn(); + + Stone firstStone = new Stone(StoneColor.RED); + Stone secondStone = new Stone(StoneColor.BLACK); + Stone thirdStone = new Stone(13, StoneColor.BLACK); + + mockHand.drop(firstStone, new Position(0,0)); + mockHand.drop(thirdStone, new Position(1,0)); + + mockView.playerPanel.handPanel.stoneClickEvent.emit(firstStone, true); + mockView.tablePanel.stoneClickEvent.emit(secondStone, true); + mockView.playerPanel.handPanel.stoneClickEvent.emit(thirdStone, true); + + mockView.playerPanel.handPanel.clickEvent.emit(new Position(2,0.25f)); + + assertCollection(Arrays.asList(secondStone)); + + Set<Stone> expected = new HashSet<Stone>(Arrays.asList(firstStone, thirdStone)); + assertEquals(expected, mockHand.pickups); + + Set<Stone> handStones = new HashSet<Stone>(); + for (Pair<Stone, Position> stone : mockHand.stones) { + assertEquals(stone.getSecond(), new Position(2,0)); + handStones.add(stone.getFirst()); + } + assertEquals(expected, handStones); + } + } |