summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mock/jrummikub/model/MockHand.java5
-rw-r--r--src/jrummikub/model/Hand.java6
-rw-r--r--src/jrummikub/model/IHand.java9
-rw-r--r--test/jrummikub/model/HandTest.java23
4 files changed, 41 insertions, 2 deletions
diff --git a/mock/jrummikub/model/MockHand.java b/mock/jrummikub/model/MockHand.java
index c3caf42..25e2edc 100644
--- a/mock/jrummikub/model/MockHand.java
+++ b/mock/jrummikub/model/MockHand.java
@@ -86,4 +86,9 @@ public class MockHand implements IHand {
public boolean isInitialMeldPossible() {
return false;
}
+
+ @Override
+ public int getIdenticalStoneCount() {
+ return 0;
+ }
}
diff --git a/src/jrummikub/model/Hand.java b/src/jrummikub/model/Hand.java
index f415620..7294ced 100644
--- a/src/jrummikub/model/Hand.java
+++ b/src/jrummikub/model/Hand.java
@@ -261,4 +261,10 @@ public class Hand extends StoneTray<Stone> implements IHand {
}
return false;
}
+
+ @Override
+ public int getIdenticalStoneCount() {
+ // TODO Auto-generated method stub
+ return 0;
+ }
}
diff --git a/src/jrummikub/model/IHand.java b/src/jrummikub/model/IHand.java
index afe5c12..5ac7537 100644
--- a/src/jrummikub/model/IHand.java
+++ b/src/jrummikub/model/IHand.java
@@ -34,5 +34,12 @@ public interface IHand extends IStoneTray<Stone> {
*
* @return true if an initial meld is possible
*/
- public abstract boolean isInitialMeldPossible();
+ public boolean isInitialMeldPossible();
+
+ /**
+ * Counts the pairs of identical stones
+ *
+ * @return number of identical stone pairs
+ */
+ public int getIdenticalStoneCount();
}
diff --git a/test/jrummikub/model/HandTest.java b/test/jrummikub/model/HandTest.java
index 5396bd8..abfa9ee 100644
--- a/test/jrummikub/model/HandTest.java
+++ b/test/jrummikub/model/HandTest.java
@@ -132,11 +132,15 @@ public class HandTest {
assertEquals(56, hand.getStonePoints());
}
- private void testInitialMeld(boolean possible, List<Stone> handStones) {
+ private void dropStoneList(List<Stone> handStones) {
hand = new Hand(new GameSettings());
for (Stone stone : handStones) {
hand.drop(stone, new Position(0, 0));
}
+ }
+
+ private void testInitialMeld(boolean possible, List<Stone> handStones) {
+ dropStoneList(handStones);
assertTrue(possible == hand.isInitialMeldPossible());
}
@@ -240,4 +244,21 @@ public class HandTest {
new Stone(11, BLUE), new Stone(RED)));
}
+ /** */
+ @Test
+ public void testCountIdenticalStones() {
+ dropStoneList(Arrays.asList(new Stone(1, RED), new Stone(2, RED), new Stone(1, BLUE)));
+ assertEquals(0, hand.getIdenticalStoneCount());
+ dropStoneList(Arrays.asList(new Stone(1, RED), new Stone(1, RED), new Stone(1, BLUE)));
+ assertEquals(1, hand.getIdenticalStoneCount());
+ dropStoneList(Arrays.asList(new Stone(1, RED), new Stone(1, RED), new Stone(1, BLUE), new Stone(1, BLUE)));
+ assertEquals(2, hand.getIdenticalStoneCount());
+ dropStoneList(Arrays.asList(new Stone(1, RED), new Stone(1, RED), new Stone(1, RED)));
+ assertEquals(1, hand.getIdenticalStoneCount());
+ dropStoneList(Arrays.asList(new Stone(1, RED), new Stone(1, RED), new Stone(1, RED), new Stone(1, RED)));
+ assertEquals(2, hand.getIdenticalStoneCount());
+ dropStoneList(Arrays.asList(new Stone(RED), new Stone(RED)));
+ assertEquals(0, hand.getIdenticalStoneCount());
+
+ }
}