use crate::Rank;
#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord)]
pub enum EvalClass {
HighCard {
high_rank: Rank,
},
Pair {
pair: Rank,
},
TwoPair {
first_pair: Rank,
second_pair: Rank,
},
ThreeOfAKind {
trips: Rank,
},
Straight {
high_rank: Rank,
},
Flush {
high_rank: Rank,
},
FullHouse {
trips: Rank,
pair: Rank,
},
FourOfAKind {
quads: Rank,
},
StraightFlush {
high_rank: Rank,
},
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn eval_class_derived_ord_works() {
let class1 = EvalClass::HighCard {
high_rank: Rank::Ace,
};
let class2 = EvalClass::HighCard {
high_rank: Rank::King,
};
assert!(class1 > class2);
let class3 = EvalClass::Pair { pair: Rank::Two };
assert!(class3 > class1);
}
}