open_pql/functions/
intersecting_hand_ranks.rs1use super::*;
2#[pqlfn(arg, rtn, eval)]
3pub fn intersecting_hand_ranks(
4 hand: &Hand,
5 street: PQLStreet,
6 board: Board,
7) -> PQLRankSet {
8 let ranks_hand: Rank16 = hand_ranks(hand, street);
9 let ranks_board: Rank16 = board_ranks(street, board);
10
11 ranks_hand & ranks_board
12}
13
14#[cfg(test)]
15mod tests {
16 use super::*;
17 use crate::*;
18
19 #[quickcheck]
20 fn test_intersecting_hand_ranks(
21 cards: (Card, Card, Card, Card),
22 board: Board,
23 street: PQLStreet,
24 ) -> TestResult {
25 let hand = [cards.0, cards.1, cards.2, cards.3];
26
27 let res = intersecting_hand_ranks(&hand, street, board);
28
29 let ranks_hand: Rank16 = hand_ranks(&hand, street);
30 let ranks_board: Rank16 = board_ranks(street, board);
31
32 let intersection = ranks_hand & ranks_board;
33
34 TestResult::from_bool(intersection == res)
35 }
36}