From 9fa1943f6dc7ad15464c730f8d5ed6cf2e88c7ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kacper=20Macio=C5=82ek?= Date: Sat, 18 Jan 2025 07:59:08 +0100 Subject: [PATCH] fix: load fen fix --- src/board/mod.rs | 8 +++++--- tests/board_tests.rs | 14 +++++++------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/board/mod.rs b/src/board/mod.rs index 17863a4..bc80d9d 100644 --- a/src/board/mod.rs +++ b/src/board/mod.rs @@ -104,7 +104,7 @@ impl Board { fifty_move_ply_count: 0, current_zobrist: 0, }, - ply: 0, + ply: 1, moves: Vec::new(), zobrist_history: Vec::new(), fen_history: Vec::new(), @@ -180,6 +180,7 @@ impl Board { _ => panic!("Invalid FEN"), }; + self.game_state.castling_rights = 0; if parts[2].contains('K') { self.game_state.castling_rights |= CASTLING_WHITE_KING; } @@ -269,13 +270,14 @@ impl Board { } + if is_king_side { 0 } else { 1 }; let mask = 1 << index; - let king_square = CASTLING_RIGHTS_SQUARES[index][0]; - let rook_square = CASTLING_ROOKS[index]; if self.game_state.castling_rights & mask == 0 { return false; } + let king_square = CASTLING_RIGHTS_SQUARES[index][0]; + let rook_square = CASTLING_ROOKS[index]; + self.is_empty_between(king_square, rook_square) } diff --git a/tests/board_tests.rs b/tests/board_tests.rs index dc7e73f..5344ac4 100644 --- a/tests/board_tests.rs +++ b/tests/board_tests.rs @@ -18,8 +18,8 @@ mod tests { let mut board = Board::new(); board.reset(); assert_eq!(board.turn, Color::White); - assert_eq!(board.halfmove_clock, 0); - assert_eq!(board.fullmove_number, 1); + assert_eq!(board.game_state.fifty_move_ply_count, 0); + assert_eq!(board.ply, 0); assert!(board .pieces .iter() @@ -31,7 +31,7 @@ mod tests { let mut board = Board::new(); board.set_fen("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"); assert_eq!(board.turn, Color::White); - assert_eq!(board.fullmove_number, 1); + assert_eq!(board.ply, 0); assert!(board.pieces[Color::White as usize][Piece::Pawn as usize].is_set(8)); assert!(board.pieces[Color::Black as usize][Piece::Pawn as usize].is_set(48)); } @@ -211,12 +211,12 @@ mod tests { assert_eq!(board.turn, Color::White); - assert_eq!(board.castling_rights, 0b1111); + assert_eq!(board.game_state.castling_rights, 0b1111); - assert_eq!(board.en_passant_square, None); + assert_eq!(board.game_state.en_passant_square, None); - assert_eq!(board.halfmove_clock, 0); - assert_eq!(board.fullmove_number, 1); + assert_eq!(board.game_state.fifty_move_ply_count, 0); + assert_eq!(board.ply, 0); } #[test]