Esempio n. 1
0
        public void AddPieceTest()
        {
            var pieceValue = new PieceValue();
            var board      = new Board();
            var position   = new Position(board, pieceValue);

            position.AddPiece(Pieces.WhiteKing, Squares.a7);
            var pieces = position.Pieces();
            var square = pieces.Lsb();

            Assert.Equal(Squares.a7, square.Value);

            var piece = position.GetPiece(square);

            Assert.Equal(Pieces.WhiteKing, piece.Value);

            // test overload
            pieces = position.Pieces(piece);
            Assert.False((pieces & square).IsEmpty);

            // Test piece type overload

            board    = new Board();
            position = new Position(board, pieceValue);

            position.AddPiece(PieceTypes.Knight.MakePiece(Player.Black), Squares.d5);
            pieces = position.Pieces();
            square = pieces.Lsb();
            Assert.Equal(Squares.d5, square.Value);

            piece = position.GetPiece(square);
            Assert.Equal(Pieces.BlackKnight, piece.Value);
        }
Esempio n. 2
0
        public void AddPieceTest()
        {
            var position = new Position();

            position.AddPiece(EPieces.WhiteKing, ESquare.a7);
            var pieces = position.Pieces();
            var square = pieces.Lsb();

            Assert.Equal(ESquare.a7, square.Value);

            var piece = position.GetPiece(square);

            Assert.Equal(EPieces.WhiteKing, piece.Value);

            // Test piece type overload

            position = new Position();

            position.AddPiece(EPieceType.Knight, ESquare.d5, PlayerExtensions.Black);
            pieces = position.Pieces();
            square = pieces.Lsb();
            Assert.Equal(ESquare.d5, square.Value);

            piece = position.GetPiece(square);
            Assert.Equal(EPieces.BlackKnight, piece.Value);
        }
Esempio n. 3
0
        public void PinnedPiecesTest()
        {
            var cb = new Position(null);

            cb.AddPiece(EPieces.WhiteKing, ESquare.a6);
            cb.AddPiece(EPieces.WhiteBishop, ESquare.d5);

            cb.AddPiece(EPieces.BlackKing, ESquare.b3);
            cb.AddPiece(EPieces.BlackPawn, ESquare.c4); // this is a pinned pieces

            var b = cb.GetPinnedPieces(ESquare.b3, PlayerExtensions.Black);

            // b must contain one square at this point
            var pinnedCount = b.Count;

            Assert.Equal(1, pinnedCount);

            // test it's the correct square
            var pinnedSquare = b.Lsb();

            Assert.Equal(ESquare.c4, pinnedSquare.Value);
        }