### Question:
SkippedPlayerCellTypesFinder extends AbstractGameRules { public List<Integer> findPossibleCellTypes(Game game, long playerId) { validPlayersCount(game); List<Integer> possibleCellTypes = new ArrayList<>(GameOptions.ALL_CELL_TYPES); removePlayersCellTypes(game, possibleCellTypes); Set<Integer> opponentPossibleConquerTypes = getOpponentPossibleConquerTypes(game, playerId); if (opponentPossibleConquerTypes.size() == 1) { possibleCellTypes.removeAll(opponentPossibleConquerTypes); } return possibleCellTypes; }  List<Integer> findPossibleCellTypes(Game game, long playerId);  }### Answer:
@Test public void whenOpponentHasOnlyOnePossibleMove() { List<Integer> possibleCellTypes = skippedPlayerCellTypesFinder .findPossibleCellTypes(game, FIRST_PLAYER_ID); assertThat(possibleCellTypes.size()).isEqualTo(GameOptions.CELL_TYPES_COUNT - 3); assertThat(possibleCellTypes).doesNotContain(1, 2, 5); }
@Test public void whenOpponentHasTwoPossibleMoves() { freeAnotherElseCell(); List<Integer> possibleCellTypes = skippedPlayerCellTypesFinder .findPossibleCellTypes(game, FIRST_PLAYER_ID); assertThat(possibleCellTypes.size()).isEqualTo(GameOptions.CELL_TYPES_COUNT - 2); assertThat(possibleCellTypes).doesNotContain(1, 2); }
@Test(expected = UnsupportedOperationException.class) public void whenThereAreMoreThenTwoPlayers() { game.getPlayers().add(new Player()); skippedPlayerCellTypesFinder.findPossibleCellTypes(game, FIRST_PLAYER_ID); }