Add more tests
This commit is contained in:
165
src/hand.rs
165
src/hand.rs
@@ -47,7 +47,7 @@ impl fmt::Display for PokerHand {
|
||||
|
||||
impl PartialOrd for PokerHand {
|
||||
fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> {
|
||||
if self.hand_type() > other.hand_type() {
|
||||
if self.hand_type() != other.hand_type() {
|
||||
return self.hand_type().partial_cmp(&other.hand_type());
|
||||
}
|
||||
let selfmap = self.hash_map();
|
||||
@@ -580,4 +580,167 @@ mod tests {
|
||||
let hand = PokerHand::new(pair);
|
||||
assert_eq!(hand.hand_type(), HandType::StraightFlush);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn comp_test1() {
|
||||
// Hand 1
|
||||
let card1 = PlayingCard {
|
||||
suit: CardSuit::Diamonds,
|
||||
value: CardValue::Jack,
|
||||
};
|
||||
let card2 = PlayingCard {
|
||||
suit: CardSuit::Diamonds,
|
||||
value: CardValue::Jack,
|
||||
};
|
||||
let card3 = PlayingCard {
|
||||
suit: CardSuit::Diamonds,
|
||||
value: CardValue::Nine,
|
||||
};
|
||||
let card4 = PlayingCard {
|
||||
suit: CardSuit::Diamonds,
|
||||
value: CardValue::Ace,
|
||||
};
|
||||
let card5 = PlayingCard {
|
||||
suit: CardSuit::Diamonds,
|
||||
value: CardValue::Eight,
|
||||
};
|
||||
|
||||
// Hand 2
|
||||
let card6 = PlayingCard {
|
||||
suit: CardSuit::Diamonds,
|
||||
value: CardValue::Queen,
|
||||
};
|
||||
let card7 = PlayingCard {
|
||||
suit: CardSuit::Clubs,
|
||||
value: CardValue::Ten,
|
||||
};
|
||||
let card8 = PlayingCard {
|
||||
suit: CardSuit::Diamonds,
|
||||
value: CardValue::Queen,
|
||||
};
|
||||
let card9 = PlayingCard {
|
||||
suit: CardSuit::Diamonds,
|
||||
value: CardValue::Two,
|
||||
};
|
||||
let card10 = PlayingCard {
|
||||
suit: CardSuit::Diamonds,
|
||||
value: CardValue::Eight,
|
||||
};
|
||||
|
||||
let cardset1 = vec![card1, card2, card3, card4, card5];
|
||||
let cardset2 = vec![card6, card7, card8, card9, card10];
|
||||
let flush = PokerHand::new(cardset1);
|
||||
let onepair = PokerHand::new(cardset2);
|
||||
assert!(flush > onepair);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn straight_flush_ord_test() {
|
||||
// Hand 1
|
||||
let card1 = PlayingCard {
|
||||
suit: CardSuit::Clubs,
|
||||
value: CardValue::Jack,
|
||||
};
|
||||
let card2 = PlayingCard {
|
||||
suit: CardSuit::Diamonds,
|
||||
value: CardValue::Ten,
|
||||
};
|
||||
let card3 = PlayingCard {
|
||||
suit: CardSuit::Diamonds,
|
||||
value: CardValue::Nine,
|
||||
};
|
||||
let card4 = PlayingCard {
|
||||
suit: CardSuit::Diamonds,
|
||||
value: CardValue::Eight,
|
||||
};
|
||||
let card5 = PlayingCard {
|
||||
suit: CardSuit::Diamonds,
|
||||
value: CardValue::Seven,
|
||||
};
|
||||
|
||||
// Hand 2
|
||||
let card6 = PlayingCard {
|
||||
suit: CardSuit::Diamonds,
|
||||
value: CardValue::Queen,
|
||||
};
|
||||
let card7 = PlayingCard {
|
||||
suit: CardSuit::Clubs,
|
||||
value: CardValue::Jack,
|
||||
};
|
||||
let card8 = PlayingCard {
|
||||
suit: CardSuit::Diamonds,
|
||||
value: CardValue::Ten,
|
||||
};
|
||||
let card9 = PlayingCard {
|
||||
suit: CardSuit::Diamonds,
|
||||
value: CardValue::Nine,
|
||||
};
|
||||
let card10 = PlayingCard {
|
||||
suit: CardSuit::Diamonds,
|
||||
value: CardValue::Eight,
|
||||
};
|
||||
|
||||
let cardset1 = vec![card1, card2, card3, card4, card5];
|
||||
let cardset2 = vec![card6, card7, card8, card9, card10];
|
||||
let hand1 = PokerHand::new(cardset1);
|
||||
let hand2 = PokerHand::new(cardset2);
|
||||
assert!(hand1 < hand2);
|
||||
assert!(hand1 >= hand1);
|
||||
assert!(hand2 <= hand2);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn four_kind_ord_test() {
|
||||
// Hand 1
|
||||
let card1 = PlayingCard {
|
||||
suit: CardSuit::Clubs,
|
||||
value: CardValue::Jack,
|
||||
};
|
||||
let card2 = PlayingCard {
|
||||
suit: CardSuit::Hearts,
|
||||
value: CardValue::Jack,
|
||||
};
|
||||
let card3 = PlayingCard {
|
||||
suit: CardSuit::Diamonds,
|
||||
value: CardValue::Jack,
|
||||
};
|
||||
let card4 = PlayingCard {
|
||||
suit: CardSuit::Spades,
|
||||
value: CardValue::Jack,
|
||||
};
|
||||
let card5 = PlayingCard {
|
||||
suit: CardSuit::Diamonds,
|
||||
value: CardValue::Seven,
|
||||
};
|
||||
|
||||
// Hand 2
|
||||
let card6 = PlayingCard {
|
||||
suit: CardSuit::Spades,
|
||||
value: CardValue::Queen,
|
||||
};
|
||||
let card7 = PlayingCard {
|
||||
suit: CardSuit::Hearts,
|
||||
value: CardValue::Queen,
|
||||
};
|
||||
let card8 = PlayingCard {
|
||||
suit: CardSuit::Clubs,
|
||||
value: CardValue::Queen,
|
||||
};
|
||||
let card9 = PlayingCard {
|
||||
suit: CardSuit::Diamonds,
|
||||
value: CardValue::Queen,
|
||||
};
|
||||
let card10 = PlayingCard {
|
||||
suit: CardSuit::Diamonds,
|
||||
value: CardValue::Eight,
|
||||
};
|
||||
|
||||
let cardset1 = vec![card1, card2, card3, card4, card5];
|
||||
let cardset2 = vec![card6, card7, card8, card9, card10];
|
||||
let hand1 = PokerHand::new(cardset1);
|
||||
let hand2 = PokerHand::new(cardset2);
|
||||
assert!(hand1 < hand2);
|
||||
assert!(hand1 >= hand1);
|
||||
assert!(hand2 <= hand2);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user