summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/jrummikub/model/StoneSet.java18
-rw-r--r--test/jrummikub/model/StoneSetTest.java4
2 files changed, 12 insertions, 10 deletions
diff --git a/src/jrummikub/model/StoneSet.java b/src/jrummikub/model/StoneSet.java
index f10eca0..09eecd5 100644
--- a/src/jrummikub/model/StoneSet.java
+++ b/src/jrummikub/model/StoneSet.java
@@ -91,14 +91,14 @@ public class StoneSet implements Iterable<Stone> {
* Splitting {@link Position}
*/
public Pair<StoneSet, StoneSet> splitAt(int position) {
- // Exception falls falscher index
+ // Exception in case of wrong index
if (position == 0 || position == stones.size()) {
-
- } else {
-
+ throw new IndexOutOfBoundsException();
}
- return null;
-
+ StoneSet firstSet = new StoneSet(stones.subList(0, position));
+ StoneSet secondSet = new StoneSet(stones.subList(position,
+ stones.size()));
+ return new Pair<StoneSet, StoneSet>(firstSet, secondSet);
}
/**
@@ -108,8 +108,10 @@ public class StoneSet implements Iterable<Stone> {
* StoneSet to be joined to active StoneSet
*/
public StoneSet join(StoneSet other) {
- return null;
-
+ List<Stone> joinedList = new ArrayList<Stone>();
+ joinedList.addAll(stones);
+ joinedList.addAll(other.stones);
+ return new StoneSet(joinedList);
}
public int size() {
diff --git a/test/jrummikub/model/StoneSetTest.java b/test/jrummikub/model/StoneSetTest.java
index b2d6a46..1b4e062 100644
--- a/test/jrummikub/model/StoneSetTest.java
+++ b/test/jrummikub/model/StoneSetTest.java
@@ -93,14 +93,14 @@ public class StoneSetTest {
}
// invalid Split
- @Test(expected = AssertionError.class)
+ @Test(expected = IndexOutOfBoundsException.class)
public void testSplitInvalidLow() {
StoneSet testSet = createTestSet();
testSet.splitAt(0);
}
- @Test(expected = AssertionError.class)
+ @Test(expected = IndexOutOfBoundsException.class)
public void testSplitInvalidHigh() {
StoneSet testSet = createTestSet();
testSet.splitAt(3);