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 {
|
impl PartialOrd for PokerHand {
|
||||||
fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> {
|
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());
|
return self.hand_type().partial_cmp(&other.hand_type());
|
||||||
}
|
}
|
||||||
let selfmap = self.hash_map();
|
let selfmap = self.hash_map();
|
||||||
@@ -580,4 +580,167 @@ mod tests {
|
|||||||
let hand = PokerHand::new(pair);
|
let hand = PokerHand::new(pair);
|
||||||
assert_eq!(hand.hand_type(), HandType::StraightFlush);
|
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