open_pql/functions/
duplicated_hand_ranks.rs

1use super::*;
2
3#[pqlfn]
4pub fn duplicated_hand_ranks(hand: &Hand, _street: PQLStreet) -> PQLRankSet {
5    let c64: Card64 = hand.into();
6    let (_, has2, _, _) = get_card_count(c64.to_u64());
7
8    PQLRankSet::from_u16(has2)
9}
10
11#[cfg(test)]
12mod tests {
13    use super::*;
14    use crate::*;
15
16    #[quickcheck]
17    fn test_duplicated_hand_ranks(hbg: HandBoardGame) -> TestResult {
18        let hand = hbg.hand;
19
20        let duplicated: Rank16 = duplicated_hand_ranks(&hand, hbg.street);
21
22        let rs = hand.into_iter().map(|c| c.rank).collect::<Vec<_>>();
23
24        for r in &rs {
25            if rs.iter().filter(|el| **el == *r).count() > 1 {
26                assert!(duplicated.contains_rank(*r));
27            } else {
28                assert!(!duplicated.contains_rank(*r));
29            }
30        }
31
32        TestResult::passed()
33    }
34}