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