open_pql/functions/
intersecting_hand_ranks.rs

1use 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}