diff options
-rw-r--r-- | src/jrummikub/model/StoneSet.java | 35 | ||||
-rw-r--r-- | test/jrummikub/model/StoneSetTest.java | 14 |
2 files changed, 46 insertions, 3 deletions
diff --git a/src/jrummikub/model/StoneSet.java b/src/jrummikub/model/StoneSet.java index d949187..ba96625 100644 --- a/src/jrummikub/model/StoneSet.java +++ b/src/jrummikub/model/StoneSet.java @@ -1,19 +1,24 @@ package jrummikub.model; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; import java.util.List; +import sun.reflect.generics.reflectiveObjects.NotImplementedException; + import jrummikub.util.Pair; /** Class managing {@link Stone}s joined together to form sets */ -public class StoneSet { +public class StoneSet implements Iterable<Stone> { private List<Stone> stones; public StoneSet(Stone stone) { - + stones = Collections.singletonList(stone); } public StoneSet(List<Stone> stones) { - + this.stones = new ArrayList<Stone>(stones); } /** Test for rule conflict within the StoneSet */ @@ -60,4 +65,28 @@ public class StoneSet { return stones.get(i); } + @Override + public Iterator<Stone> iterator() { + final Iterator<Stone> it = stones.iterator(); + + return new Iterator<Stone>(){ + + @Override + public boolean hasNext() { + return it.hasNext(); + } + + @Override + public Stone next() { + return it.next(); + } + + @Override + public void remove() { + // removing stones is impossible + + throw new NotImplementedException(); + }}; + } + } diff --git a/test/jrummikub/model/StoneSetTest.java b/test/jrummikub/model/StoneSetTest.java index c70dc59..259c788 100644 --- a/test/jrummikub/model/StoneSetTest.java +++ b/test/jrummikub/model/StoneSetTest.java @@ -63,4 +63,18 @@ public class StoneSetTest { assertSame(testSet.get(2), joinedSet.get(2)); assertSame(secondSet.get(0), joinedSet.get(3)); } + + //iterator + @Test + public void testIterator() { + StoneSet testSet = createTestSet(); + int i = 0; + + for(Stone stone : testSet) { + assertSame(stone,testSet.get(i)); + i++; + } + + assertEquals(i, testSet.size()); + } } |