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); }
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); }
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); }