コード例 #1
0
        public void Execute_can_castle_both_side(Colours colour, bool side)
        {
            int rank = colour == Colours.White ? 1 : 8;

            var king                = new KingEntity(colour);
            var kingStartFile       = King.StartPositionFor(colour).X;
            var kingDestinationFile = side ? ChessFile.G : ChessFile.C;
            var kingStartLoc        = $"{kingStartFile}{rank}".ToBoardLocation();
            var kingDestination     = $"{kingDestinationFile}{rank}".ToBoardLocation();

            var rook                = new RookEntity(colour);
            var rookStartFile       = side ? ChessFile.H : ChessFile.A;
            var rookDestinationFile = side ? ChessFile.F : ChessFile.D;
            var rookStart           = $"{rookStartFile}{rank}".ToBoardLocation();
            var rookDestination     = $"{rookDestinationFile}{rank}".ToBoardLocation();

            var actualKingMove = new BoardMove(kingStartLoc, kingDestination, (int)DefaultActions.MoveOnly);
            var actualRookMove = new BoardMove(rookStart, rookDestination, (int)DefaultActions.MoveOnly);

            SetupLocationReturn(kingStartLoc, king);
            SetupLocationReturn(rookStart, rook);
            SetupMockActionForMoveType((int)DefaultActions.MoveOnly);
            Action.Execute(actualKingMove);

            VerifyActionWasCreated((int)DefaultActions.MoveOnly);
            VerifyActionWasExecuted(actualKingMove);
            VerifyActionWasExecuted(actualRookMove);
        }
コード例 #2
0
        public ChessValidationStepsMocker SetupKingCastleEligibility(bool eligible)
        {
            ChessPieceEntity entity = new KingEntity(Colours.White);

            _castleValidationStepsMock.Setup(m =>
                                             m.IsKingAllowedToCastle(
                                                 It.IsAny <BoardMove>(),
                                                 It.IsAny <IReadOnlyBoardState <ChessPieceEntity> >(),
                                                 out entity))
            .Returns(eligible);
            return(this);
        }