summaryrefslogtreecommitdiff
path: root/model/src/possible_moves.rs
diff options
context:
space:
mode:
authorMicha White <botahamec@outlook.com>2023-10-03 22:21:39 -0400
committerMicha White <botahamec@outlook.com>2023-10-03 22:21:39 -0400
commitea3ec78de3535015c342b8ca34501a796ade1b64 (patch)
tree3ced6cc6210b9546467a8caf3876d00e4f570f50 /model/src/possible_moves.rs
parent2763381eefa80623af41e7f799dc17f0e38dfcae (diff)
Fix `has_jump_at` functions
Diffstat (limited to 'model/src/possible_moves.rs')
-rw-r--r--model/src/possible_moves.rs23
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>();