open_pql/functions/
pocket_pair.rs

1use super::*;
2
3#[pqlfn(arg, rtn, eval)]
4pub fn pocket_pair(hand: &Hand) -> PQLBoolean {
5    !duplicated_hand_ranks(hand, PQLStreet::Flop).is_empty()
6}
7
8#[cfg(test)]
9mod tests {
10    use super::*;
11
12    #[quickcheck]
13    fn test_pocket_pair(cards: CardN<4>) -> TestResult {
14        let hand: [_; 4] = cards.into();
15
16        let mut rs = hand.into_iter().map(|c| c.rank).collect::<Vec<_>>();
17
18        rs.sort();
19        rs.dedup();
20
21        let pocket = rs.len() < 4;
22
23        TestResult::from_bool(pocket == pocket_pair(&hand))
24    }
25}