diff options
| author | Micha White <botahamec@outlook.com> | 2023-10-03 22:21:39 -0400 |
|---|---|---|
| committer | Micha White <botahamec@outlook.com> | 2023-10-03 22:21:39 -0400 |
| commit | ea3ec78de3535015c342b8ca34501a796ade1b64 (patch) | |
| tree | 3ced6cc6210b9546467a8caf3876d00e4f570f50 /model/src/possible_moves.rs | |
| parent | 2763381eefa80623af41e7f799dc17f0e38dfcae (diff) | |
Fix `has_jump_at` functions
Diffstat (limited to 'model/src/possible_moves.rs')
| -rw-r--r-- | model/src/possible_moves.rs | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/model/src/possible_moves.rs b/model/src/possible_moves.rs index 9f9f5af..3dbc45b 100644 --- a/model/src/possible_moves.rs +++ b/model/src/possible_moves.rs @@ -647,9 +647,9 @@ impl PossibleMoves { let backward_spaces = backward_left_spaces | backward_right_spaces; let backward_spaces = board.king_bits() & backward_spaces; - (friendly_pieces & (forward_spaces | backward_spaces)) >> value != 0 + ((friendly_pieces & (forward_spaces | backward_spaces)) >> value) & 1 != 0 } else { - (friendly_pieces & forward_spaces) >> value != 0 + ((friendly_pieces & forward_spaces) >> value) & 1 != 0 } } @@ -678,9 +678,9 @@ impl PossibleMoves { let forward_spaces = forward_left_spaces | forward_right_spaces; let forward_spaces = board.king_bits() & forward_spaces; - (friendly_pieces & (forward_spaces | backward_spaces)) >> value != 0 + ((friendly_pieces & (forward_spaces | backward_spaces)) >> value) & 1 != 0 } else { - (friendly_pieces & backward_spaces) >> value != 0 + ((friendly_pieces & backward_spaces) >> value) & 1 != 0 } } @@ -1041,6 +1041,21 @@ mod tests { } #[test] + fn not_has_jump_at_14_when_has_jump_at_20() { + // This bug was caused by me forgetting to `& 1` to the end of the + // `has_jump_at` functions. After playing a jump with one piece, I was + // able to continue jumping with completely different pieces + let board = CheckersBitBoard::new( + 0b11100111001111001111110111111011, + 0b00001100001111001111001111000011, + 0, + PieceColor::Dark, + ); + let possible_moves = PossibleMoves::moves(board); + assert!(!possible_moves.can_jump()) + } + + #[test] fn test_send() { fn assert_send<T: Send>() {} assert_send::<PossibleMoves>(); |
