open_pql/functions/
nonintersecting_hand_ranks.rs1use 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}