FutureMoves: add (failing) test for situation encountered during testing

This commit is contained in:
Simon Gardling 2025-02-26 22:47:28 -05:00
parent 4ec9f3cf21
commit e468464956
Signed by: titaniumtown
GPG Key ID: 9AB28AC10ECE533D

View File

@ -637,4 +637,49 @@ mod tests {
vec![(0, vec![0, 2]), (1, vec![1]), (2, vec![3])]
);
}
#[test]
fn best_move_failure() {
let mut futm = FutureMoves::new(Piece::Black, FUTURE_MOVES_CONFIG);
let mut board = Board::new().starting_pos();
// replay of a test I did
// TODO! make this as small of a test as possible
let moves = vec![
(Some((5, 4)), Piece::Black),
(Some((5, 5)), Piece::White),
(Some((5, 6)), Piece::Black),
(Some((6, 4)), Piece::White),
(Some((7, 3)), Piece::Black),
(Some((7, 4)), Piece::White),
(Some((7, 5)), Piece::Black),
(Some((2, 4)), Piece::White),
(Some((1, 4)), Piece::Black),
(Some((1, 5)), Piece::White),
(Some((1, 6)), Piece::Black),
(Some((0, 6)), Piece::White),
(Some((3, 2)), Piece::Black),
(Some((1, 7)), Piece::White),
(None, Piece::Black), // black skips a move
(Some((0, 4)), Piece::White),
(None, Piece::Black), // black skips a move
(Some((4, 2)), Piece::White),
];
for (coords, color) in moves {
if color == futm.agent_color {
// my turn
futm.update_from_board(&board);
let best_move = futm.best_move();
if coords.is_none() {
assert_eq!(best_move, None);
} else {
assert_ne!(best_move, None);
}
}
if let Some((i, j)) = coords {
board.place(i, j, color).unwrap();
}
}
}
}