open_pql/functions/
hand_ranks.rs

1use super::*;
2#[pqlfn(arg, rtn, eval)]
3pub fn hand_ranks(hand: &Hand, _street: PQLStreet) -> PQLRankSet {
4    let mut ranks = Rank16::default();
5
6    for c in hand {
7        ranks.set(c.rank);
8    }
9
10    ranks
11}
12
13#[cfg(test)]
14mod tests {
15    use super::*;
16    use crate::*;
17
18    #[quickcheck]
19    fn test_hand_ranks(
20        cards: (Card, Card, Card, Card),
21        street: PQLStreet,
22    ) -> TestResult {
23        let hand = [cards.0, cards.1, cards.2, cards.3];
24
25        let ranks: Rank16 = hand_ranks(&hand, street);
26
27        let rs = Rank16::from(
28            hand.into_iter()
29                .map(|c| c.rank)
30                .collect::<Vec<_>>()
31                .as_ref() as &[Rank],
32        );
33
34        TestResult::from_bool(rs == ranks)
35    }
36}