// NodeUtilTest.java package net.sf.gogui.game; import java.util.regex.Pattern; import net.sf.gogui.go.ConstPointList; import static net.sf.gogui.go.GoColor.BLACK; import static net.sf.gogui.go.GoColor.WHITE; import net.sf.gogui.go.GoPoint; import net.sf.gogui.go.Move; public final class NodeUtilTest 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(NodeUtilTest.class); } public void testBackward() { assertTrue(NodeUtil.backward(m_node10, 2) == m_node1); assertTrue(NodeUtil.backward(m_node3, 10) == m_node0); } public void testCommentContains() { Node node = new Node(); Pattern pattern = Pattern.compile("foo.*bar"); assertFalse(NodeUtil.commentContains(node, pattern)); node.setComment("fooxbar"); assertTrue(NodeUtil.commentContains(node, pattern)); node.setComment("bar\nfooxbar"); assertTrue(NodeUtil.commentContains(node, pattern)); } public void testFindByMoveNumber() { assertTrue(NodeUtil.findByMoveNumber(m_node0, 1) == m_node2); assertTrue(NodeUtil.findByMoveNumber(m_node0, 2) == m_node3); assertTrue(NodeUtil.findByMoveNumber(m_node4, 2) == m_node3); assertTrue(NodeUtil.findByMoveNumber(m_node0, 3) == m_node5); assertNull(NodeUtil.findByMoveNumber(m_node0, 4)); assertTrue(NodeUtil.findByMoveNumber(m_node0, 0) == m_node0); assertNull(NodeUtil.findByMoveNumber(m_node0, -1)); assertTrue(NodeUtil.findByMoveNumber(m_node7, 1) == m_node8); } public void testFindByVariation() { assertTrue(NodeUtil.findByVariation(m_node0, "") == m_node0); assertTrue(NodeUtil.findByVariation(m_node0, "1") == m_node2); assertTrue(NodeUtil.findByVariation(m_node0, "2") == m_node7); assertNull(NodeUtil.findByVariation(m_node0, "3")); assertTrue(NodeUtil.findByVariation(m_node0, "2.1") == m_node8); assertTrue(NodeUtil.findByVariation(m_node0, "2.2") == m_node9); assertNull(NodeUtil.findByVariation(m_node0, "foobar")); assertNull(NodeUtil.findByVariation(m_node0, "123.4")); assertNull(NodeUtil.findByVariation(m_node0, "0")); } public void testGetBackToMainVariation() { assertTrue(NodeUtil.getBackToMainVariation(m_node1) == m_node1); assertTrue(NodeUtil.getBackToMainVariation(m_node5) == m_node5); assertTrue(NodeUtil.getBackToMainVariation(m_node7) == m_node1); assertTrue(NodeUtil.getBackToMainVariation(m_node8) == m_node1); assertTrue(NodeUtil.getBackToMainVariation(m_node9) == m_node1); } public void testGetChildrenMoves() { ConstPointList moves = NodeUtil.getChildrenMoves(m_node7); assertEquals(moves.size(), 3); assertTrue(moves.get(0) == GoPoint.get(0, 0)); assertTrue(moves.get(1) == GoPoint.get(0, 0)); assertTrue(moves.get(2) == GoPoint.get(0, 1)); } public void testGetChildWithMove() { assertTrue(NodeUtil.getChildWithMove(m_node7, Move.get(BLACK, 0, 0)) == m_node8); assertNull(NodeUtil.getChildWithMove(m_node7, Move.get(BLACK, 2, 3))); } public void testGetDepth() { assertEquals(NodeUtil.getDepth(m_node0), 0); assertEquals(NodeUtil.getDepth(m_node2), 2); assertEquals(NodeUtil.getDepth(m_node6), 6); assertEquals(NodeUtil.getDepth(m_node8), 3); } public void testGetLast() { assertTrue(NodeUtil.getLast(m_node1) == m_node6); assertTrue(NodeUtil.getLast(m_node7) == m_node8); assertTrue(NodeUtil.getLast(m_node10) == m_node10); } public void testGetMoveNumber() { assertEquals(NodeUtil.getMoveNumber(m_node0), 0); assertEquals(NodeUtil.getMoveNumber(m_node1), 0); assertEquals(NodeUtil.getMoveNumber(m_node2), 1); assertEquals(NodeUtil.getMoveNumber(m_node3), 2); assertEquals(NodeUtil.getMoveNumber(m_node4), 2); assertEquals(NodeUtil.getMoveNumber(m_node5), 3); assertEquals(NodeUtil.getMoveNumber(m_node6), 3); } public void testGetMovesLeft() { assertEquals(NodeUtil.getMovesLeft(m_node0), 3); assertEquals(NodeUtil.getMovesLeft(m_node1), 3); assertEquals(NodeUtil.getMovesLeft(m_node2), 2); assertEquals(NodeUtil.getMovesLeft(m_node3), 1); assertEquals(NodeUtil.getMovesLeft(m_node4), 1); assertEquals(NodeUtil.getMovesLeft(m_node5), 0); assertEquals(NodeUtil.getMovesLeft(m_node6), 0); assertEquals(NodeUtil.getMovesLeft(m_node7), 1); } public void testSubtreeSize() { assertEquals(12, NodeUtil.subtreeSize(m_node0)); } public void testTruncateChildren() { Node node = new Node(); assertEquals(node.getNumberChildren(), 0); NodeUtil.truncateChildren(node); node.append(new Node()); node.append(new Node()); assertEquals(node.getNumberChildren(), 2); NodeUtil.truncateChildren(node); assertEquals(node.getNumberChildren(), 0); } /** Create a small test tree. <pre> n0 - n1 - n2(B C3) - n3(W F4) - n4 - n5(B G4) - n6 \ n7 - n8(B A1) \ n9(B A1) \ n10(B A2) \ n11(B PASS) </pre> */ protected void setUp() throws Exception { super.setUp(); m_node0 = new Node(); m_node1 = new Node(); m_node0.append(m_node1); m_node2 = new Node(Move.get(BLACK, 2, 2)); m_node1.append(m_node2); m_node3 = new Node(Move.get(WHITE, 5, 3)); m_node2.append(m_node3); m_node4 = new Node(); m_node3.append(m_node4); m_node5 = new Node(Move.get(BLACK, 6, 3)); m_node4.append(m_node5); m_node6 = new Node(); m_node5.append(m_node6); m_node7 = new Node(); m_node1.append(m_node7); m_node8 = new Node(Move.get(BLACK, 0, 0)); m_node7.append(m_node8); m_node9 = new Node(Move.get(BLACK, 0, 0)); m_node7.append(m_node9); m_node10 = new Node(Move.get(WHITE, 0, 1)); m_node7.append(m_node10); m_node11 = new Node(Move.getPass(BLACK)); m_node7.append(m_node11); } private Node m_node0; private Node m_node1; private Node m_node2; private Node m_node3; private Node m_node4; private Node m_node5; private Node m_node6; private Node m_node7; private Node m_node8; private Node m_node9; private Node m_node10; private Node m_node11; }