ConnectFourState extends TwoDimensionalBoardGameState { @Override public boolean moveSinglePoint(Point goTo) { int pointX = (int) goTo.getX(); int pointY = (int) goTo.getY(); if(boardState[pointX][pointY] != EMPTY || pointY != 0){ return false; }else{ int height = 0; for(int i = 0; i < HEIGHT; i++){ if(boardState[pointX][i] == EMPTY) height = i; } boardState[pointX][height] = nextPlayer; nextPlayer = (nextPlayer + 1) % NUMBER_OF_PLAYERS; return true; } } ConnectFourState();  ConnectFourState(ConnectFourState state);  ConnectFourState(int[][] board, int nextPlay, List<Integer> win); @Override boolean endState(); @SuppressWarnings("unchecked") @Override Set<T> possibleBoardGameStates(T currentState); @SuppressWarnings("unchecked") @Override T copy(); @Override List<Integer> getWinners(); @Override void setupStartingBoard(); @Override int getBoardWidth(); @Override int getBoardHeight(); @Override char[] getPlayerSymbols(); @Override Color[] getPlayerColors(); @Override boolean moveOnePiece(); @Override boolean moveSinglePoint(Point goTo); @Override boolean moveDoublePoint(Point goTo, Point moveTo);  }
@Test public void testMoveSinglePoint() { for(int i = 0; i < start.getBoardWidth(); i++){ for(int j = 0; j < start.getBoardHeight(); j++){ assertTrue(start.moveSinglePoint(new Point(i,0))); } } for(int i = 0; i < start.getBoardWidth(); i++){ assertFalse(start.moveSinglePoint(new Point(i,0))); } }