diff options
Diffstat (limited to 'test/jrummikub/control')
-rw-r--r-- | test/jrummikub/control/RoundControlTest.java | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/test/jrummikub/control/RoundControlTest.java b/test/jrummikub/control/RoundControlTest.java index dba3ae9..1be11e4 100644 --- a/test/jrummikub/control/RoundControlTest.java +++ b/test/jrummikub/control/RoundControlTest.java @@ -2,6 +2,7 @@ package jrummikub.control; import static jrummikub.model.StoneColor.BLACK; import static jrummikub.model.StoneColor.BLUE; +import static jrummikub.model.StoneColor.ORANGE; import static jrummikub.model.StoneColor.RED; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; @@ -13,15 +14,18 @@ import static org.junit.Assert.assertTrue; import java.util.Arrays; import java.util.HashSet; import java.util.Iterator; +import java.util.List; import java.util.Set; import jrummikub.model.Hand; import jrummikub.model.IHand; +import jrummikub.model.ITable; import jrummikub.model.MockGameState; import jrummikub.model.MockTable; import jrummikub.model.Position; import jrummikub.model.Stone; import jrummikub.model.StoneSet; +import jrummikub.model.Table; import jrummikub.util.Pair; import jrummikub.view.MockView; @@ -276,4 +280,55 @@ public class RoundControlTest { assertTrue(expectedStones.containsAll(stones)); assertTrue(stones.containsAll(expectedStones)); } + + @Test + public void testTableSetDifference() { + ITable oldTable = new Table(); + Stone blueOne = new Stone(1, BLUE); + Stone redOne = new Stone(1, RED); + Stone blackOne = new Stone(1, BLACK); + Stone orangeOne = new Stone(1, ORANGE); + Stone blueTwo = new Stone(2, BLUE); + Stone blueThree = new Stone(3, BLUE); + Stone blueFour = new Stone(4, BLUE); + StoneSet oldSet1 = new StoneSet(Arrays.asList(blueOne, redOne, + blackOne, orangeOne)); + StoneSet oldSet2 = new StoneSet(Arrays.asList(blueTwo, blueThree, + blueFour)); + oldTable.drop(oldSet1, new Position(0, 0)); + oldTable.drop(oldSet2, new Position(0, 0)); + ITable newTable = (Table) oldTable.clone(); + List<StoneSet> newSets = RoundControl.tableSetDifference(oldTable, + newTable); + List<StoneSet> vanishedSets = RoundControl.tableSetDifference(newTable, + oldTable); + + assertTrue(newSets.isEmpty()); + assertTrue(vanishedSets.isEmpty()); + + newTable.pickUp(oldSet2); + newTable.drop(oldSet2.join(new StoneSet(new Stone(5, BLUE))), + new Position(0, 0)); + newSets = RoundControl.tableSetDifference(oldTable, newTable); + vanishedSets = RoundControl.tableSetDifference(newTable, oldTable); + + assertFalse(newSets.isEmpty()); + assertFalse(vanishedSets.isEmpty()); + assertEquals(1, newSets.size()); + assertEquals(1, vanishedSets.size()); + + Stone redTwo = new Stone(2, RED); + Stone redThree = new Stone(3, RED); + Stone redFour = new Stone(4, RED); + StoneSet oldSet3 = new StoneSet( + Arrays.asList(redTwo, redThree, redFour)); + ITable newTable2 = (Table) oldTable.clone(); + newTable2.drop(oldSet3, new Position(0, 0)); + newSets = RoundControl.tableSetDifference(oldTable, newTable2); + vanishedSets = RoundControl.tableSetDifference(newTable2, oldTable); + + assertFalse(newSets.isEmpty()); + assertTrue(vanishedSets.isEmpty()); + assertEquals(1, newSets.size()); + } } |