From 7b80311556c1a98167b09541af0daf0afdab989e Mon Sep 17 00:00:00 2001 From: Ida Massow Date: Sat, 30 Apr 2011 21:17:14 +0200 Subject: StoneTrayTest fertig git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@33 72836036-5685-4462-b002-a69064685172 --- src/jrummikub/model/StoneTray.java | 20 ++++- test/jrummikub/model/StoneTrayTest.java | 148 ++++++++++++++++++++++++++++++++ 2 files changed, 167 insertions(+), 1 deletion(-) diff --git a/src/jrummikub/model/StoneTray.java b/src/jrummikub/model/StoneTray.java index 4a22870..6691a45 100644 --- a/src/jrummikub/model/StoneTray.java +++ b/src/jrummikub/model/StoneTray.java @@ -1,7 +1,12 @@ package jrummikub.model; +import java.util.Iterator; +import java.util.List; + +import jrummikub.util.Pair; + /** A StoneTray is a collection of positioned objects (for example {@link Stone}s or {@link StoneSet}s. */ -public abstract class StoneTray { +public class StoneTray implements Iterable> { protected List objects; protected List positions; @@ -27,5 +32,18 @@ public abstract class StoneTray { public void drop(E object, Position position) { } + + + public Position getPosition (E object) { + + + } + + + @Override + public Iterator> iterator() { + // TODO Auto-generated method stub + return null; + } } diff --git a/test/jrummikub/model/StoneTrayTest.java b/test/jrummikub/model/StoneTrayTest.java index df9aaa9..1f3be3e 100644 --- a/test/jrummikub/model/StoneTrayTest.java +++ b/test/jrummikub/model/StoneTrayTest.java @@ -1,6 +1,154 @@ package jrummikub.model; +import java.util.ArrayList; +import java.util.List; + +import jrummikub.util.Pair; +import static jrummikub.model.StoneColor.*; + +import org.junit.*; +import static org.junit.Assert.*; public class StoneTrayTest { + class Thing implements Sizeable { + private float width; + private float height; + + public Thing(float width, float height) { + this.width = width; + this.height = height; + } + + @Override + public float getWidth() { + return width; + } + + @Override + public float getHeight() { + return height; + } + } + + private StoneTray testTray; + + @Before + public void createTray() { + testTray = new StoneTray(); + } + + @Test + public void testRightDrop() { + Thing firstThing = new Thing(3, 4); + testTray.drop(firstThing, new Position(5, 23)); + Thing secondThing = new Thing(5, 8); + testTray.drop(secondThing, new Position(42, 8.5f)); + Position firstPosition = testTray.getPosition(firstThing); + Position secondPosition = testTray.getPosition(secondThing); + assertEquals(5, firstPosition.getX(), 0.00001); + assertEquals(23, firstPosition.getY(), 0.00001); + assertEquals(42, secondPosition.getX(), 0.00001); + assertEquals(8.5, secondPosition.getY(), 0.00001); + } + + // Leftshift + @Test + public void testLeftDrop() { + Thing firstThing = new Thing(5, 5); + testTray.drop(firstThing, new Position(0, 0)); + Thing secondThing = new Thing(3, 3); + testTray.drop(secondThing, new Position(4, 1)); + Position firstPosition = testTray.getPosition(firstThing); + Position secondPosition = testTray.getPosition(secondThing); + assertEquals(-1, firstPosition.getX(), 0.00001); + assertEquals(0, firstPosition.getY(), 0.00001); + assertEquals(4, secondPosition.getX(), 0.00001); + assertEquals(1, secondPosition.getY(), 0.00001); + } + + // Rightshift + @Test + public void testRightDrop() { + Thing firstThing = new Thing(5, 5); + testTray.drop(firstThing, new Position(0, 0)); + Thing secondThing = new Thing(3, 3); + testTray.drop(secondThing, new Position(-2, 1)); + Position firstPosition = testTray.getPosition(firstThing); + Position secondPosition = testTray.getPosition(secondThing); + assertEquals(1, firstPosition.getX(), 0.00001); + assertEquals(0, firstPosition.getY(), 0.00001); + assertEquals(-2, secondPosition.getX(), 0.00001); + assertEquals(1, secondPosition.getY(), 0.00001); + } + + // Upshift + @Test + public void testUpDrop() { + Thing firstThing = new Thing(5, 5); + testTray.drop(firstThing, new Position(0, 0)); + Thing secondThing = new Thing(3, 3); + testTray.drop(secondThing, new Position(1, 4)); + Position firstPosition = testTray.getPosition(firstThing); + Position secondPosition = testTray.getPosition(secondThing); + assertEquals(0, firstPosition.getX(), 0.00001); + assertEquals(-1, firstPosition.getY(), 0.00001); + assertEquals(1, secondPosition.getX(), 0.00001); + assertEquals(4, secondPosition.getY(), 0.00001); + } + + // Downshift + @Test + public void testDownDrop() { + Thing firstThing = new Thing(5, 5); + testTray.drop(firstThing, new Position(0, 0)); + Thing secondThing = new Thing(3, 3); + testTray.drop(secondThing, new Position(1, -2)); + Position firstPosition = testTray.getPosition(firstThing); + Position secondPosition = testTray.getPosition(secondThing); + assertEquals(0, firstPosition.getX(), 0.00001); + assertEquals(1, firstPosition.getY(), 0.00001); + assertEquals(1, secondPosition.getX(), 0.00001); + assertEquals(-2, secondPosition.getY(), 0.00001); + } + + @Test + public void testWrongPickUp() { + Thing firstThing = new Thing(5, 5); + testTray.drop(firstThing, new Position(0, 0)); + Position testPosition = new Position(-2, -2); + assertNull(testTray.pickUp(testPosition)); + } + + @Test + public void testRightPickUp() { + Thing firstThing = new Thing(5, 5); + testTray.drop(firstThing, new Position(0, 0)); + Thing secondThing = new Thing(3, 3); + testTray.drop(secondThing, new Position(-5, -5)); + Position testPosition = new Position(3, 3); + assertSame(testTray.pickUp(testPosition), firstThing); + assertNull(testTray.pickUp(testPosition)); + } + @Test + public void testIterate() { + List testThings = new ArrayList(); + List testPositions = new ArrayList(); + for (int i = 0; i < 4; i++) { + Thing newThing = new Thing(1, 1); + Position newPosition = new Position(i, i); + testThings.add(newThing); + testPositions.add(newPosition); + testTray.drop(newThing, newPosition); + } + for (Pair i : testTray) { + int index = testThings.indexOf(i.getFirst()); + assertFalse(index == -1); + assertEquals(i.getSecond(), testPositions.get(index)); + testThings.remove(index); + testPositions.remove(index); + } + assertTrue(testThings.isEmpty()); + assertTrue(testPositions.isEmpty()); + } } -- cgit v1.2.3