[board] Implement a move generator test for a single king
This commit is contained in:
parent
3ba6722697
commit
ac5d8cc9d5
1 changed files with 37 additions and 0 deletions
|
@ -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>>()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue