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