This repository has been archived on 2025-03-02. You can view files and clone it, but cannot push or open issues or pull requests.
JRummikub/test/jrummikub/model/HandTest.java
Jannis Harder 4a98975b0d Calculate points on hand
git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@264 72836036-5685-4462-b002-a69064685172
2011-05-24 01:51:56 +02:00

129 lines
3.3 KiB
Java

package jrummikub.model;
import static jrummikub.model.StoneColor.*;
import static org.junit.Assert.assertEquals;
import java.util.ArrayList;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
/**
* Test class for {@link Hand}
*/
public class HandTest {
Hand hand;
/** */
@Before
public void setUp() {
hand = new Hand(new GameSettings());
}
/** */
@Test
public void testSimpleDrop() {
Stone stone1 = new Stone(1, RED);
Stone stone2 = new Stone(5, RED);
Stone stone3 = new Stone(2, RED);
hand.drop(stone1, new Position(2, 0));
hand.drop(stone2, new Position(3, 0));
hand.drop(stone3, new Position(2.5f, 0));
assertEquals(new Position(1.5f, 0), hand.getPosition(stone1));
assertEquals(new Position(3.5f, 0), hand.getPosition(stone2));
assertEquals(new Position(2.5f, 0), hand.getPosition(stone3));
}
/** */
@Test
public void testSingleEdgeDrop() {
Stone stone1 = new Stone(2, RED);
Stone stone2 = new Stone(4, RED);
hand.drop(stone1, new Position(0, 0));
hand.drop(stone2, new Position(0.5f, 0));
assertEquals(new Position(0, 0), hand.getPosition(stone1));
assertEquals(new Position(1, 0), hand.getPosition(stone2));
}
/** */
@Test
public void testNearEdgeDrop() {
Stone stone1 = new Stone(2, RED);
Stone stone2 = new Stone(4, RED);
hand.drop(stone1, new Position(0.25f, 0));
hand.drop(stone2, new Position(0.5f, 0));
assertEquals(new Position(0, 0), hand.getPosition(stone1));
assertEquals(new Position(1, 0), hand.getPosition(stone2));
}
/** */
@Test
public void testNearEdgeMiddleDrop() {
Stone stone1 = new Stone(1, RED);
Stone stone2 = new Stone(5, RED);
Stone stone3 = new Stone(2, RED);
hand.drop(stone1, new Position(0.25f, 0));
hand.drop(stone2, new Position(1.25f, 0));
hand.drop(stone3, new Position(0.5f, 0));
assertEquals(new Position(0, 0), hand.getPosition(stone1));
assertEquals(new Position(2, 0), hand.getPosition(stone2));
assertEquals(new Position(1, 0), hand.getPosition(stone3));
}
/** */
@Test
public void testNearRightEdgeDrop() {
Stone stone1 = new Stone(2, BLUE);
Stone stone2 = new Stone(4, BLUE);
hand.drop(stone1, new Position(12.75f, 1));
hand.drop(stone2, new Position(12.5f, 1));
assertEquals(new Position(13, 1), hand.getPosition(stone1));
assertEquals(new Position(12, 1), hand.getPosition(stone2));
}
/** */
@Test
public void testFullWrapDrop() {
List<Stone> rowStones = new ArrayList<Stone>();
for (int i = 0; i < 14; i++) {
Stone stone = new Stone(i % 9, BLUE);
rowStones.add(stone);
hand.drop(stone, new Position(i, 1));
}
Stone newStone = new Stone(RED);
hand.drop(newStone, new Position(12.5f, 1));
for (int i = 0; i < 13; i++) {
assertEquals(new Position(i, 1), hand.getPosition(rowStones.get(i)));
}
assertEquals(new Position(13, 1), hand.getPosition(newStone));
assertEquals(new Position(0, 2), hand.getPosition(rowStones.get(13)));
}
/** */
@Test
public void testCountPoints() {
Stone stone1 = new Stone(2, BLUE);
Stone stone2 = new Stone(4, BLUE);
Stone stone3 = new Stone(RED);
hand.drop(stone1, new Position(0, 0));
hand.drop(stone2, new Position(0, 0));
hand.drop(stone3, new Position(0, 0));
assertEquals(56, hand.getStonePoints());
}
}