Fix fen parsing for castling rights

This commit is contained in:
2024-06-29 16:21:39 +03:00
parent 349007a445
commit b46c5874db

View File

@@ -97,9 +97,9 @@ fn castling_ability(castling: &str) -> Result<[Castle; 2], FenError> {
let mut castling_ability: [Castle; 2] = [Castle::None, Castle::None];
let white_king_and_queen = bitflag & 0b11 == 0b11;
let white_king = (bitflag >> 1) & 1 == 1;
let white_queen = bitflag & 1 == 1;
let white_king_and_queen = (bitflag >> 2) & 0b11 == 0b11;
let white_king = (bitflag >> 3) & 1 == 1;
let white_queen = (bitflag >> 2) & 1 == 1;
castling_ability[0] = match (white_king_and_queen, white_king, white_queen) {
(true, _, _) => Castle::Both,
(_, true, _) => Castle::Short,
@@ -107,9 +107,9 @@ fn castling_ability(castling: &str) -> Result<[Castle; 2], FenError> {
_ => Castle::None,
};
let black_king_and_queen = (bitflag >> 2) & 0b11 == 0b11;
let black_king = (bitflag >> 3) & 1 == 1;
let black_queen = (bitflag >> 2) & 1 == 1;
let black_king_and_queen = bitflag & 0b11 == 0b11;
let black_king = (bitflag >> 1) & 1 == 1;
let black_queen = bitflag & 1 == 1;
castling_ability[1] = match (black_king_and_queen, black_king, black_queen) {
(true, _, _) => Castle::Both,
(_, true, _) => Castle::Short,
@@ -197,4 +197,7 @@ mod tests {
fn test_fen_error() -> () {
from_fen(FEN_EXAMPLE[4]).unwrap();
}
//TODO: add more happy path scenarios
//TODO: test each panic e.g. #[should_panic(expected = "less than or equal to 100")]
}