@Test
    public void readmeRequirement() {
        Map<String, Integer> figureQuantityMap = new HashMap<>();
        figureQuantityMap.put(KING.toString(), 2);
        figureQuantityMap.put(QUEEN.toString(), 2);
        figureQuantityMap.put(BISHOP.toString(), 2);
        figureQuantityMap.put(KNIGHT.toString(), 1);

        int dimension = 7;
        Chessboard chessboard1 = Chessboard.newBuilder(figureQuantityMap)
                                        .withDimension(dimension)
                                        .withKing()
                                        .withQueen()
                                        .withBishop()
                                        .withKnight()
                                        .build();
        Chessboard chessboard2 = Chessboard.newBuilder(figureQuantityMap)
                                        .withDimension(dimension)
                                        .withQueen()
                                        .withBishop()
                                        .withKing()
                                        .withKnight()
                                        .build();
        //todo uncommenting highly affects performance
//        Chessboard chessboard3 = Chessboard.newBuilder(figureQuantityMap).withDimension(dimension).withKnight().withBishop().withKing().withQueen().build();

        Set<String> collect1 = chessboard1.placeFiguresOnEmptyBoard().collect(Collectors.toSet());
        Set<String> collect2 = chessboard2.placeFiguresOnEmptyBoard().collect(Collectors.toSet());
        Set<String> collect = new HashSet<>();
        collect.addAll(collect1);
        collect.addAll(collect2);

        assertThat("all elements are not present on each board",
                collect
                .parallelStream()
                .filter(board -> board.contains(KING.getFigureAsString())
                        && board.contains(QUEEN.getFigureAsString())
                        && board.contains(BISHOP.getFigureAsString())
                        && !board.contains(ROOK.getFigureAsString())
                        && board.contains(KNIGHT.getFigureAsString())
                        && board.contains(FIELD_UNDER_ATTACK_STRING)
                        && leftOnlyFigures(board).length() == 7)
                .map(e -> 1)
                .reduce(0, (x, y) -> x + y), is(3063828));
    }