[board] Implement a move generator test for a single king

This commit is contained in:
Eryn Wells 2024-01-17 08:44:51 -08:00
parent 3ba6722697
commit ac5d8cc9d5

View file

@ -40,3 +40,40 @@ impl<'a> Moves<'a> {
.cloned()
}
}
#[cfg(test)]
mod tests {
use crate::{piece, position, r#move::AlgebraicMoveFormatter, Move, MoveBuilder, Square};
use std::collections::HashSet;
#[test]
fn one_king() {
let pos = position![
White King on D3,
Black King on H6,
];
let expected_moves = HashSet::from_iter([
MoveBuilder::new(piece!(White King), Square::D3, Square::D4).build(),
MoveBuilder::new(piece!(White King), Square::D3, Square::E4).build(),
MoveBuilder::new(piece!(White King), Square::D3, Square::E3).build(),
MoveBuilder::new(piece!(White King), Square::D3, Square::E2).build(),
MoveBuilder::new(piece!(White King), Square::D3, Square::D2).build(),
MoveBuilder::new(piece!(White King), Square::D3, Square::C2).build(),
MoveBuilder::new(piece!(White King), Square::D3, Square::C3).build(),
MoveBuilder::new(piece!(White King), Square::D3, Square::C4).build(),
]);
let generated_moves: HashSet<Move> = pos.moves().iter().collect();
assert_eq!(
generated_moves,
expected_moves,
"{:?}",
generated_moves
.symmetric_difference(&expected_moves)
.map(|m| format!("{}", AlgebraicMoveFormatter::new(&m, &pos)))
.collect::<Vec<String>>()
);
}
}