IsCapture is not set when an en passant move is manually constructed.
This seems to be because the underlying MoveHelper.CreateMoveFromName(...) method doesn't set the captureType for en passant moves.
Here is an example from the test below.
Since EnPassant is true, IsCapture should also be true but it is not.
The result is that a manually created EP Move instance does not match what the move generator produces
because Move.Equals says they are different.
Here is a xUnit test:
[Fact]
public void EnPassantTest()
{
var internalBoard = new ChessChallenge.Chess.Board();
internalBoard.LoadPosition("1q5k/8/8/3pP3/8/6K1/8/8 w - d6 2 4");
var board = new Board(internalBoard);
var moves = board.GetLegalMoves();
// Expect to find e5d6 (EP move)
var expected = new Move("e5d6", board); // BUG: This constructor fails to set captureType correctly
// This fails because "IsCapture" is not set correctly in 'expected'
Assert.Contains(expected, moves);
}
The correctly generated Move from the move generator looks like this:
IsCapture is not set when an en passant move is manually constructed.
This seems to be because the underlying MoveHelper.CreateMoveFromName(...) method doesn't set the captureType for en passant moves.
Here is an example from the test below.
Since EnPassant is true, IsCapture should also be true but it is not.![image](https://github.com/SebLague/Chess-Challenge/assets/2452599/083163cf-7066-4207-b26b-af9040aa70cb)
The result is that a manually created EP Move instance does not match what the move generator produces because Move.Equals says they are different.
Here is a xUnit test:
The correctly generated Move from the move generator looks like this:![image](https://github.com/SebLague/Chess-Challenge/assets/2452599/7351cd02-9aad-4e4e-a2cf-02828b64dee4)
Position used: 1q5k/8/8/3pP3/8/6K1/8/8 w - d6 2 4
cc @SebLague