Пример #1
0
        public void GetsCorrectAttackSquaresForSingleBlackPawn(Square pawnSquare, ulong expectedAttackSquares)
        {
            // Act
            var attackSquares = PawnMoves.BlackPawnAttacks(pawnSquare);

            // Assert
            Assert.Equal <Bitboard>(expectedAttackSquares, attackSquares);
        }
Пример #2
0
        public void CanGetAllPawnAttacks(ulong pawns, Side side, ulong expectedAttacks)
        {
            // Act
            var attacks = PawnMoves.AllPawnAttacks(pawns, side);

            // Assert
            Assert.Equal <Bitboard>(expectedAttacks, attacks);
        }
Пример #3
0
        public void CreatesBlackDoublePushTargetsCorrectly()
        {
            // Assemble
            Bitboard blackPawns   = 0x00_c7_20_10_08_10_00_00;
            Bitboard whitePieces  = 0x00_00_41_02_00_00_10_00;
            Bitboard emptySquares = ~(blackPawns | whitePieces);

            // Act
            Bitboard doublePushTargets = PawnMoves.PawnDoublePushTargets(blackPawns, emptySquares, Side.Black);

            // Assert
            Assert.Equal <Bitboard>(0x00_00_00_84_00_00_00_00, doublePushTargets);
        }
Пример #4
0
        public void CreatesWhiteDoublePushTargetsCorrectly()
        {
            // Assemble
            Bitboard whitePawns   = 0x00_00_00_08_00_01_F6_00;
            Bitboard blackPieces  = 0x00_00_00_00_11_84_00_00;
            Bitboard emptySquares = ~(whitePawns | blackPieces);

            // Act
            Bitboard doublePushTargets = PawnMoves.PawnDoublePushTargets(whitePawns, emptySquares, Side.White);

            // Assert
            Assert.Equal <Bitboard>(0x00_00_00_00_62_00_00_00, doublePushTargets);
        }
Пример #5
0
        private static Moves Create(PieceEnum piece)
        {
            switch (piece)
            {
            case PieceEnum.Knight:
                return(KnightMoves.Get());

            case PieceEnum.Bishop:
                return(BishopMoves.Get());

            case PieceEnum.Rook:
                return(RookMoves.Get());

            case PieceEnum.Queen:
                return(QueenMoves.Get());

            case PieceEnum.King:
                return(KingMoves.Get());

            case PieceEnum.Pawn:
                return(PawnMoves.Get());
            }
            return(null);
        }
Пример #6
0
 public void ThrowsExceptionIfPawnIsOnFirstOrLastRank(Square pawnSquare)
 {
     // Act & Assert
     Assert.Throws <ArgumentOutOfRangeException>(() => PawnMoves.WhitePawnAttacks(pawnSquare));
     Assert.Throws <ArgumentOutOfRangeException>(() => PawnMoves.BlackPawnAttacks(pawnSquare));
 }