// BoardConstantsTest.java package net.sf.gogui.go; public final class BoardConstantsTest 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(BoardConstantsTest.class); } /** Test BoardConstants.getHandicapStones according to GTP specification. */ public void testGetHandicapStones() { for (int size = 1; size <= 25; ++size) { BoardConstants constants = BoardConstants.get(size); for (int n = 0; n < 20; ++n) { String message = "size=" + size + " n=" + n; ConstPointList list = constants.getHandicapStones(n); if (n == 0) { assertNotNull(message, list); assertTrue(message, list.isEmpty()); } else if (size <= 6 || n == 1 || n > 9) assertNull(message, list); else if (size == 7 || size % 2 == 0) { if (n > 4) assertNull(message, list); else { assertNotNull(message, list); assertEquals(message, n, list.size()); } } else { if (n > 9) assertNull(message, list); else { assertNotNull(message, list); assertEquals(message, n, list.size()); } } if (size == 19 && n >= 2 && n <= 9) { assertTrue(message, list.contains(parsePoint("D4"))); assertTrue(message, list.contains(parsePoint("Q16"))); if (n >= 3) assertTrue(message, list.contains(parsePoint("D16"))); if (n >= 4) assertTrue(message, list.contains(parsePoint("Q4"))); if (n == 5 || n == 7 || n == 9) assertTrue(message, list.contains(parsePoint("K10"))); if (n >= 6) { assertTrue(message, list.contains(parsePoint("D10"))); assertTrue(message, list.contains(parsePoint("Q10"))); } if (n >= 8) { assertTrue(message, list.contains(parsePoint("K4"))); assertTrue(message, list.contains(parsePoint("K16"))); } } } } } private static GoPoint parsePoint(String s) { int boardSize = GoPoint.MAX_SIZE; try { return GoPoint.parsePoint(s, boardSize); } catch (InvalidPointException e) { fail("Invalid point " + s); return null; } } }