// GoPointTest.java
package net.sf.gogui.go;
public final class GoPointTest
extends junit.framework.TestCase
{
public static void main(String args[])
{
junit.textui.TestRunner.run(suite());
}
public static junit.framework.Test suite()
{
return new junit.framework.TestSuite(GoPointTest.class);
}
public void testCompareTo()
{
assertEquals(0, getPoint(5, 5).compareTo(getPoint(5, 5)));
assertEquals(-1, getPoint(5, 5).compareTo(getPoint(6, 5)));
assertEquals(-1, getPoint(5, 5).compareTo(getPoint(5, 6)));
assertEquals(1, getPoint(5, 5).compareTo(getPoint(4, 5)));
assertEquals(1, getPoint(5, 5).compareTo(getPoint(5, 4)));
}
public void testDirection()
{
checkPoint(getPoint(5, 5).up(11), 5, 6);
checkPoint(getPoint(5, 5).down(), 5, 4);
checkPoint(getPoint(5, 5).left(), 4, 5);
checkPoint(getPoint(5, 5).right(13), 6, 5);
checkPoint(getPoint(6, 0).down(), 6, 0);
checkPoint(getPoint(6, 9).up(9), 6, 9);
checkPoint(getPoint(0, 21).left(), 0, 21);
checkPoint(getPoint(19, 5).right(19), 19, 5);
}
public void testIsOnBoard()
{
assertTrue(getPoint(0, 0).isOnBoard(9));
assertTrue(getPoint(18, 18).isOnBoard(19));
assertTrue(getPoint(0, 18).isOnBoard(19));
assertTrue(getPoint(18, 0).isOnBoard(19));
assertFalse(getPoint(19, 19).isOnBoard(19));
assertFalse(getPoint(0, 19).isOnBoard(19));
assertFalse(getPoint(19, 0).isOnBoard(19));
}
public void testParse() throws InvalidPointException
{
checkPoint(GoPoint.parsePoint("A1", 19), 0, 0);
checkPoint(GoPoint.parsePoint(" T19 ", 19), 18, 18);
checkPoint(GoPoint.parsePoint("J3 ", 19), 8, 2);
checkPoint(GoPoint.parsePoint("b17", 19), 1, 16);
assertNull(GoPoint.parsePoint("PASS", 19));
assertNull(GoPoint.parsePoint("pass", 19));
checkInvalid("11", 19);
checkInvalid("19Z", 19);
checkInvalid("A100", 25);
checkInvalid("C10", 9);
PointList points = GoPoint.parsePointList(" R15 PASS T19 ", 19);
assertEquals(points.size(), 3);
checkPoint(points.get(0), 16, 14);
assertNull(points.get(1));
checkPoint(points.get(2), 18, 18);
}
public void testToString()
{
assertEquals(GoPoint.toString((GoPoint)null), "PASS");
assertEquals(GoPoint.toString(getPoint(0, 0)), "A1");
assertEquals(getPoint(7, 4).toString(), "H5");
assertEquals(getPoint(8, 4).toString(), "J5");
assertEquals(getPoint(18, 18).toString(), "T19");
assertEquals(getPoint(9, 20).toString(), "K21");
assertEquals(getPoint(9, 20).toString(), "K21");
assertEquals(GoPoint.toString((PointList)null), "(null)");
PointList v = new PointList();
assertEquals(GoPoint.toString(v), "");
v.add(getPoint(0, 0));
assertEquals(GoPoint.toString(v), "A1");
v.add(getPoint(3, 4));
assertEquals(GoPoint.toString(v), "A1 D5");
v.add(getPoint(0, 18));
assertEquals(GoPoint.toString(v), "A1 D5 A19");
}
public void testUnique()
{
checkPoint(getPoint(5, 5), 5, 5);
checkPoint(getPoint(23, 23), 23, 23);
}
private static GoPoint getPoint(int x, int y)
{
return GoPoint.get(x, y);
}
private static void checkInvalid(String string, int boardSize)
{
try
{
GoPoint.parsePoint(string, boardSize);
fail();
}
catch (InvalidPointException e)
{
}
}
private static void checkPoint(GoPoint point, int x, int y)
{
assertSame(point, GoPoint.get(x, y));
assertEquals(point.getX(), x);
assertEquals(point.getY(), y);
}
}