add tests to future_moves
This commit is contained in:
parent
4de62a2d0f
commit
38ada710d9
@ -759,4 +759,61 @@ mod tests {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn derive_board() {
|
||||||
|
let mut futm = FutureMoves::new(Piece::White, FUTURE_MOVES_CONFIG);
|
||||||
|
|
||||||
|
let mut b = Board::new().starting_pos();
|
||||||
|
let _ = b.place((2, 3).into(), Piece::Black);
|
||||||
|
|
||||||
|
futm.arena.push(Move::new(
|
||||||
|
Some((2, 3).into()),
|
||||||
|
b,
|
||||||
|
Piece::Black,
|
||||||
|
Piece::White,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
// I can't actually reproduce the issue I got, this is my best attempt
|
||||||
|
// Can't get it to fail!
|
||||||
|
#[test]
|
||||||
|
fn corr_moves() {
|
||||||
|
let mut board = Board::new();
|
||||||
|
board.place_unchecked((5, 4).into(), Piece::Black);
|
||||||
|
board.place_unchecked((4, 4).into(), Piece::Black);
|
||||||
|
board.place_unchecked((4, 3).into(), Piece::Black);
|
||||||
|
|
||||||
|
board.place_unchecked((3, 5).into(), Piece::White);
|
||||||
|
board.place_unchecked((3, 4).into(), Piece::Black);
|
||||||
|
board.place_unchecked((3, 3).into(), Piece::White);
|
||||||
|
|
||||||
|
board.place_unchecked((2, 4).into(), Piece::Black);
|
||||||
|
|
||||||
|
let move_log = vec![
|
||||||
|
(Some((4, 6)), Piece::Black),
|
||||||
|
(Some((5, 5)), Piece::White),
|
||||||
|
// (Some((3, 1)), Piece::Black), // invalid move
|
||||||
|
];
|
||||||
|
for (m, c) in move_log {
|
||||||
|
if let Some(m) = m {
|
||||||
|
board.place(m.into(), c).expect("invalid move");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut futm = FutureMoves::new(Piece::White, FUTURE_MOVES_CONFIG);
|
||||||
|
futm.update_from_board(&board);
|
||||||
|
futm.extend_layers();
|
||||||
|
let best_move = futm.best_move();
|
||||||
|
|
||||||
|
if let Some(best_move) = best_move {
|
||||||
|
assert!(
|
||||||
|
board
|
||||||
|
.possible_moves(futm.agent_color)
|
||||||
|
.find(|x| Some(x) == best_move.as_ref())
|
||||||
|
.is_some(),
|
||||||
|
"futm played an invalid move"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user