Board implements Serializable { public short getChainNextPoint(short p) { return points[p].chainNextPoint; } Board(int width); void addObserver(BoardObserver observer); void clear(); void clearPreservingInitialStones(); void copyDataFrom(Board that); short getChainNextPoint(short p); short getChainRoot(short p); Color getColorAt(short p); StoneColor getColorToPlay(); CoordinateSystem getCoordinateSystem(); long getFancyHash(); long getHash(); ShortSet getLiberties(short p); int getNeighborsOfColor(short p, Color color); short getPasses(); int getTurn(); ShortSet getVacantPoints(); boolean hasMaxNeighborsForColor(StoneColor color, short p); boolean isLegal(short p); void pass(); void placeInitialStone(StoneColor color, short p); Legality play(short p); Legality play(String move); Legality playFast(short p); void setColorToPlay(StoneColor stoneColor); void setPasses(short passes); void setUpHandicap(int handicapSize); void setUpProblem(String[] diagram, StoneColor colorToPlay); @Override String toString(); void removeStones(ShortSet ourDead);  }
@Test public void testGetChainNextPoint() { String[] diagram = { ".....", ".....", "#....", "#....", "#....", }; board.setUpProblem(diagram, WHITE); ShortSet stones = new ShortSet(coords.getFirstPointBeyondBoard()); short p = at("a1"); short q = p; do { stones.add(q); q = board.getChainNextPoint(q); } while (q != p); assertEquals(3, stones.size()); assertTrue(stones.contains(at("a1"))); assertTrue(stones.contains(at("a2"))); assertTrue(stones.contains(at("a3"))); }