open_pql/functions/
overpair.rs1use super::*;
2
3#[pqlfn]
4pub fn overpair(hand: &Hand, street: PQLStreet, board: Board) -> PQLBoolean {
5 max_rank(duplicated_hand_ranks(hand, street))
6 .is_some_and(|r| r > max_rank_of_board(street, board))
7}
8
9#[cfg(test)]
10mod tests {
11 use super::*;
12
13 #[quickcheck]
14 fn test_overpair(hbg: HandBoardGame) -> TestResult {
15 let HandBoardGame {
16 hand,
17 board,
18 street,
19 ..
20 } = hbg;
21
22 let pocket_rank =
23 max_rank(duplicated_hand_ranks(hand.as_ref(), street));
24 let board_rank = max_rank(board_ranks(street, board)).unwrap();
25
26 TestResult::from_bool(pocket_rank.map_or_else(
27 || !overpair(hand.as_ref(), street, board),
28 |r| (r > board_rank) == overpair(hand.as_ref(), street, board),
29 ))
30 }
31}