open_pql/functions/
nonintersecting_hand_ranks.rs

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