@Test
  public void testPlainKingMove() {

    final Builder builder = new Builder();
    // Black Layout
    builder.setPiece(new King(Alliance.BLACK, 4, false, false));
    builder.setPiece(new Pawn(Alliance.BLACK, 12));
    // White Layout
    builder.setPiece(new Pawn(Alliance.WHITE, 52));
    builder.setPiece(new King(Alliance.WHITE, 60, false, false));
    builder.setMoveMaker(Alliance.WHITE);
    // Set the current player
    final Board board = builder.build();

    assertEquals(board.whitePlayer().getLegalMoves().size(), 6);
    assertEquals(board.blackPlayer().getLegalMoves().size(), 6);
    assertFalse(board.currentPlayer().isInCheck());
    assertFalse(board.currentPlayer().isInCheckMate());
    assertFalse(board.currentPlayer().getOpponent().isInCheck());
    assertFalse(board.currentPlayer().getOpponent().isInCheckMate());
    assertEquals(board.currentPlayer(), board.whitePlayer());
    assertEquals(board.currentPlayer().getOpponent(), board.blackPlayer());
    assertEquals(new StandardBoardEvaluator().evaluate(board, 0), 0);

    final MoveTransition moveTransition =
        board
            .currentPlayer()
            .makeMove(
                MoveFactory.createMove(
                    board,
                    BoardUtils.getCoordinateAtPosition("e1"),
                    BoardUtils.getCoordinateAtPosition("f1")));

    assertTrue(moveTransition.getMoveStatus().isDone());
    assertEquals(
        moveTransition.getTransitionBoard().whitePlayer().getPlayerKing().getPiecePosition(), 61);
  }
  @Test
  public void testBoardConsistency() {
    final Board board = Board.createStandardBoard();
    assertEquals(board.currentPlayer(), board.whitePlayer());

    final MoveTransition t1 =
        board
            .currentPlayer()
            .makeMove(
                MoveFactory.createMove(
                    board,
                    BoardUtils.getCoordinateAtPosition("e2"),
                    BoardUtils.getCoordinateAtPosition("e4")));
    final MoveTransition t2 =
        t1.getTransitionBoard()
            .currentPlayer()
            .makeMove(
                MoveFactory.createMove(
                    t1.getTransitionBoard(),
                    BoardUtils.getCoordinateAtPosition("e7"),
                    BoardUtils.getCoordinateAtPosition("e5")));

    final MoveTransition t3 =
        t2.getTransitionBoard()
            .currentPlayer()
            .makeMove(
                MoveFactory.createMove(
                    t2.getTransitionBoard(),
                    BoardUtils.getCoordinateAtPosition("g1"),
                    BoardUtils.getCoordinateAtPosition("f3")));
    final MoveTransition t4 =
        t3.getTransitionBoard()
            .currentPlayer()
            .makeMove(
                MoveFactory.createMove(
                    t3.getTransitionBoard(),
                    BoardUtils.getCoordinateAtPosition("d7"),
                    BoardUtils.getCoordinateAtPosition("d5")));

    final MoveTransition t5 =
        t4.getTransitionBoard()
            .currentPlayer()
            .makeMove(
                MoveFactory.createMove(
                    t4.getTransitionBoard(),
                    BoardUtils.getCoordinateAtPosition("e4"),
                    BoardUtils.getCoordinateAtPosition("d5")));
    final MoveTransition t6 =
        t5.getTransitionBoard()
            .currentPlayer()
            .makeMove(
                MoveFactory.createMove(
                    t5.getTransitionBoard(),
                    BoardUtils.getCoordinateAtPosition("d8"),
                    BoardUtils.getCoordinateAtPosition("d5")));

    final MoveTransition t7 =
        t6.getTransitionBoard()
            .currentPlayer()
            .makeMove(
                MoveFactory.createMove(
                    t6.getTransitionBoard(),
                    BoardUtils.getCoordinateAtPosition("f3"),
                    BoardUtils.getCoordinateAtPosition("g5")));
    final MoveTransition t8 =
        t7.getTransitionBoard()
            .currentPlayer()
            .makeMove(
                MoveFactory.createMove(
                    t7.getTransitionBoard(),
                    BoardUtils.getCoordinateAtPosition("f7"),
                    BoardUtils.getCoordinateAtPosition("f6")));

    final MoveTransition t9 =
        t8.getTransitionBoard()
            .currentPlayer()
            .makeMove(
                MoveFactory.createMove(
                    t8.getTransitionBoard(),
                    BoardUtils.getCoordinateAtPosition("d1"),
                    BoardUtils.getCoordinateAtPosition("h5")));
    final MoveTransition t10 =
        t9.getTransitionBoard()
            .currentPlayer()
            .makeMove(
                MoveFactory.createMove(
                    t9.getTransitionBoard(),
                    BoardUtils.getCoordinateAtPosition("g7"),
                    BoardUtils.getCoordinateAtPosition("g6")));

    final MoveTransition t11 =
        t10.getTransitionBoard()
            .currentPlayer()
            .makeMove(
                MoveFactory.createMove(
                    t10.getTransitionBoard(),
                    BoardUtils.getCoordinateAtPosition("h5"),
                    BoardUtils.getCoordinateAtPosition("h4")));
    final MoveTransition t12 =
        t11.getTransitionBoard()
            .currentPlayer()
            .makeMove(
                MoveFactory.createMove(
                    t11.getTransitionBoard(),
                    BoardUtils.getCoordinateAtPosition("f6"),
                    BoardUtils.getCoordinateAtPosition("g5")));

    final MoveTransition t13 =
        t12.getTransitionBoard()
            .currentPlayer()
            .makeMove(
                MoveFactory.createMove(
                    t12.getTransitionBoard(),
                    BoardUtils.getCoordinateAtPosition("h4"),
                    BoardUtils.getCoordinateAtPosition("g5")));
    final MoveTransition t14 =
        t13.getTransitionBoard()
            .currentPlayer()
            .makeMove(
                MoveFactory.createMove(
                    t13.getTransitionBoard(),
                    BoardUtils.getCoordinateAtPosition("d5"),
                    BoardUtils.getCoordinateAtPosition("e4")));

    assertTrue(
        t14.getTransitionBoard().whitePlayer().getActivePieces().size()
            == calculatedActivesFor(t14.getTransitionBoard(), Alliance.WHITE));
    assertTrue(
        t14.getTransitionBoard().blackPlayer().getActivePieces().size()
            == calculatedActivesFor(t14.getTransitionBoard(), Alliance.BLACK));
  }