Board implements Cloneable { public int getCellSate(int row, int col) { if (!areValidCoordinates(row, col)) { throw new IllegalArgumentException(row + ", " + col + " are not valid coordinates"); } return board[row][col]; } Board(int rows, int cols);  Board(int[][] board); void setCellState(int row, int col, int state); int getCellSate(int row, int col); boolean areValidCoordinates(int row, int col); int getTotalSize(); int getRows(); int getCols(); boolean isBottomRightAlive(int row, int col); boolean isBottomAlive(int row, int col); boolean isBottomLeftAlive(int row, int col); boolean isRightAlive(int row, int col); boolean isLeftAlive(int row, int col); boolean isTopRightAlive(int row, int col); boolean isTopAlive(int row, int col); boolean isTopLeftAlive(int row, int col); int getAliveNeighbours(int row, int col); @Override Board clone(); @Override String toString();  }
@Test public void generateGame_shouldHaveAllDead() { Board board = new Board(4, 8); for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { Assert.assertEquals("Cell is not dead", CellState.DEAD, board.getCellSate(i, j)); } } }