[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()
|
.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