// NodeTest.java
package net.sf.gogui.game;
import java.util.Iterator;
import static net.sf.gogui.go.GoColor.BLACK;
import static net.sf.gogui.go.GoColor.WHITE;
import static net.sf.gogui.go.GoColor.EMPTY;
import net.sf.gogui.go.GoPoint;
public final class NodeTest
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(NodeTest.class);
}
public void testChildren()
{
Node root = new Node();
Node node = new Node();
Node child1 = new Node();
Node child2 = new Node();
root.append(node);
node.append(child1);
node.append(child2);
assertEquals(root.getNumberChildren(), 1);
assertEquals(node.getNumberChildren(), 2);
assertEquals(child1.getNumberChildren(), 0);
assertEquals(child2.getNumberChildren(), 0);
assertTrue(root.getChild() == node);
assertTrue(node.getChild() == child1);
assertNull(child1.getChild());
assertNull(child2.getChild());
assertEquals(root.getChildIndex(node), 0);
assertEquals(node.getChildIndex(child1), 0);
assertEquals(node.getChildIndex(child2), 1);
assertNull(root.getFather());
assertTrue(node.getFather() == root);
assertTrue(child1.getFather() == node);
assertTrue(child2.getFather() == node);
}
public void testIsChildOf()
{
Node father = new Node();
Node child1 = new Node();
Node child2 = new Node();
assertFalse(child1.isChildOf(father));
father.append(child1);
assertTrue(child1.isChildOf(father));
father.append(child2);
assertTrue(child2.isChildOf(father));
assertTrue(child2.isChildOf(father));
}
public void testMakeFirstChild()
{
Node father = new Node();
Node child1 = new Node();
Node child2 = new Node();
father.append(child1);
father.append(child2);
father.makeFirstChild(child2);
assertEquals(child2, father.getChild(0));
assertEquals(child1, father.getChild(1));
}
public void testRemoveChild()
{
Node father = new Node();
Node child1 = new Node();
Node child2 = new Node();
Node child3 = new Node();
father.append(child1);
father.removeChild(child1);
assertNull(child1.getFather());
assertEquals(0, father.getNumberChildren());
father.append(child1);
father.append(child2);
father.append(child3);
father.removeChild(child1);
assertEquals(2, father.getNumberChildren());
assertEquals(child2, father.getChild(0));
assertEquals(child3, father.getChild(1));
father.removeChild(child2);
assertNull(child2.getFather());
assertEquals(1, father.getNumberChildren());
assertEquals(child3, father.getChild(0));
father.removeChild(child3);
assertNull(child3.getFather());
assertEquals(0, father.getNumberChildren());
}
public void testSetup()
{
Node node = new Node();
assertEquals(0, node.getSetup(BLACK).size());
assertEquals(0, node.getSetup(EMPTY).size());
assertEquals(0, node.getSetup(WHITE).size());
GoPoint point = GoPoint.get(0, 0);
node.addStone(BLACK, point);
assertEquals(1, node.getSetup(BLACK).size());
assertEquals(point, node.getSetup(BLACK).get(0));
assertEquals(0, node.getSetup(EMPTY).size());
assertEquals(0, node.getSetup(WHITE).size());
node = new Node();
node.addStone(WHITE, point);
assertEquals(1, node.getSetup(WHITE).size());
assertEquals(point, node.getSetup(WHITE).get(0));
assertEquals(0, node.getSetup(EMPTY).size());
assertEquals(0, node.getSetup(BLACK).size());
node = new Node();
node.addStone(EMPTY, point);
assertEquals(1, node.getSetup(EMPTY).size());
assertEquals(point, node.getSetup(EMPTY).get(0));
assertEquals(0, node.getSetup(BLACK).size());
assertEquals(0, node.getSetup(WHITE).size());
GoPoint point2 = GoPoint.get(1, 0);
node.addStone(EMPTY, point2);
assertEquals(2, node.getSetup(EMPTY).size());
assertEquals(point, node.getSetup(EMPTY).get(0));
assertEquals(point2, node.getSetup(EMPTY).get(1));
assertEquals(0, node.getSetup(BLACK).size());
assertEquals(0, node.getSetup(WHITE).size());
}
public void testSortSetup()
{
Node node = new Node();
GoPoint p1 = GoPoint.get(1, 1);
GoPoint p2 = GoPoint.get(2, 2);
GoPoint p3 = GoPoint.get(3, 3);
GoPoint p4 = GoPoint.get(4, 4);
GoPoint p5 = GoPoint.get(5, 5);
GoPoint p6 = GoPoint.get(6, 6);
GoPoint p7 = GoPoint.get(7, 7);
GoPoint p8 = GoPoint.get(8, 8);
GoPoint p9 = GoPoint.get(9, 9);
node.addStone(BLACK, p2);
node.addStone(BLACK, p1);
node.addStone(BLACK, p3);
node.addStone(WHITE, p6);
node.addStone(WHITE, p5);
node.addStone(WHITE, p4);
node.addStone(EMPTY, p7);
node.addStone(EMPTY, p9);
node.addStone(EMPTY, p8);
node.sortSetup();
Iterator<GoPoint> it;
it = node.getSetup(BLACK).iterator();
assertEquals(p1, it.next());
assertEquals(p2, it.next());
assertEquals(p3, it.next());
it = node.getSetup(WHITE).iterator();
assertEquals(p4, it.next());
assertEquals(p5, it.next());
assertEquals(p6, it.next());
it = node.getSetup(EMPTY).iterator();
assertEquals(p7, it.next());
assertEquals(p8, it.next());
assertEquals(p9, it.next());
}
}