def test_ace_low_straight_flush(self): ''' rankHandHi should return a StraightFlush object if Ace to 5 all of one suit. ''' known_values = (( [self.deck.deck[12], self.deck.deck[3]], # Hand fully participates in the straight flush. [self.deck.deck[0], self.deck.deck[45], self.deck.deck[27], self.deck.deck[1], self.deck.deck[2]], HandRanks.StraightFlush([self.deck.deck[12], self.deck.deck[0], self.deck.deck[1], self.deck.deck[2], self.deck.deck[3]])), ( [self.deck.deck[12], self.deck.deck[3]], # Hand does not participate in the straight flush. [self.deck.deck[25], self.deck.deck[13], self.deck.deck[15], self.deck.deck[16], self.deck.deck[14]], HandRanks.StraightFlush([self.deck.deck[25], self.deck.deck[13], self.deck.deck[14], self.deck.deck[15], self.deck.deck[16]])), ( [self.deck.deck[38], self.deck.deck[18]], # One card from hand participates in the straight flush. [self.deck.deck[26], self.deck.deck[28], self.deck.deck[27], self.deck.deck[51], self.deck.deck[29]], HandRanks.StraightFlush([self.deck.deck[38], self.deck.deck[26], self.deck.deck[27], self.deck.deck[28], self.deck.deck[29]])) ) for hand, board, ranking in known_values: result = HandRanking.rankHandHi(hand, board) self.assertIsInstance(result, HandRanks.StraightFlush) # Verify that this is a straight flush that was returned. self.assertEqual(result, ranking)
def test_quads(self): ''' rankHandHi should return a Quads object with appropriate input.''' # Test three possible combinations of cases. known_values = (( [self.deck.deck[12], self.deck.deck[38]], # Full participation of hand in result case. [self.deck.deck[10], self.deck.deck[26], self.deck.deck[51], self.deck.deck[25], self.deck.deck[50]], HandRanks.Quads([self.deck.deck[12], self.deck.deck[25], self.deck.deck[38], self.deck.deck[51], self.deck.deck[50]])), ( [self.deck.deck[6], self.deck.deck[47]], # Case where hand does not participate. [self.deck.deck[7], self.deck.deck[20], self.deck.deck[33], self.deck.deck[11], self.deck.deck[46]], HandRanks.Quads([self.deck.deck[7], self.deck.deck[29], self.deck.deck[33], self.deck.deck[46], self.deck.deck[11]])), ( [self.deck.deck[4], self.deck.deck[26]], # One card from hand participates. [self.deck.deck[17], self.deck.deck[30], self.deck.deck[22], self.deck.deck[25], self.deck.deck[43]], HandRanks.Quads([self.deck.deck[4], self.deck.deck[17], self.deck.deck[30], self.deck.deck[43], self.deck.deck[25]])) ) for hand, board, ranking in known_values: result = HandRanking.rankHandHi(hand, board) self.assertIsInstance(result, HandRanks.Quads) # Verify that the correct object was returned. self.assertEqual(result, ranking)
def test_straight_flush(self): ''' rankHandHi should return a StraightFlush object with appropriate input.''' # Test royal flush case, two intermediate cases, but not the ace-low case. known_values = (( [self.deck.deck[8], self.deck.deck[9]], # Royal Flush case, full participation. [self.deck.deck[10], self.deck.deck[11], self.deck.deck[12], self.deck.deck[25], self.deck.deck[38]], HandRanks.StraightFlush([self.deck.deck[8], self.deck.deck[9], self.deck.deck[10], self.deck.deck[11], self.deck.deck[12]])), ( [self.deck.deck[6], self.deck.deck[47]], # Hand does not participate in the straight flush. [self.deck.deck[27], self.deck.deck[30], self.deck.deck[31], self.deck.deck[29], self.deck.deck[28]], HandRanks.StraightFlush([self.deck.deck[27], self.deck.deck[28], self.deck.deck[29], self.deck.deck[30], self.deck.deck[31]])), ( [self.deck.deck[49], self.deck.deck[25]], # One card from hand participates in the straight flush. [self.deck.deck[47], self.deck.deck[48], self.deck.deck[45], self.deck.deck[32], self.deck.deck[46]], HandRanks.StraightFlush([self.deck.deck[45], self.deck.deck[46], self.deck.deck[47], self.deck.deck[48], self.deck.deck[49]])) ) for hand, board, ranking in known_values: result = HandRanking.rankHandHi(hand, board) self.assertIsInstance(result, HandRanks.StraightFlush) # Verify that this is a straight flush that was returned. self.assertEqual(result, ranking)
def test_ace_low_straight(self): ''' rankHandHi should return an ace-low Straight object with appropriate input.''' # Test three possible combinations of cases of non-ace-low straights. known_values = (( [self.deck.deck[51], self.deck.deck[28]], # Full participation of hand in result case. [self.deck.deck[0], self.deck.deck[1], self.deck.deck[3], self.deck.deck[15], self.deck.deck[44]], HandRanks.Straight([self.deck.deck[51], self.deck.deck[0], self.deck.deck[1], self.deck.deck[28], self.deck.deck[3]])), ( [self.deck.deck[46], self.deck.deck[48]], # Case where hand does not participate. [self.deck.deck[26], self.deck.deck[2], self.deck.deck[27], self.deck.deck[25], self.deck.deck[42]], HandRanks.Straight([self.deck.deck[25], self.deck.deck[26], self.deck.deck[2], self.deck.deck[27], self.deck.deck[42]])), ( [self.deck.deck[3], self.deck.deck[33]], # One card from hand participates. [self.deck.deck[0], self.deck.deck[51], self.deck.deck[40], self.deck.deck[28], self.deck.deck[23]], HandRanks.Straight([self.deck.deck[51], self.deck.deck[0], self.deck.deck[40], self.deck.deck[28], self.deck.deck[3]])) ) for hand, board, ranking in known_values: result = HandRanking.rankHandHi(hand, board) self.assertIsInstance(result, HandRanks.Straight) # Verify that the correct object was returned. self.assertEqual(result, ranking)
def test_full_house(self): ''' rankHandHi should return a FullHouse object with appropriate input.''' # Test three possible combinations of cases, plus a double-trip scenario. known_values = (( [self.deck.deck[6], self.deck.deck[19]], # Full participation of hand in result case. [self.deck.deck[10], self.deck.deck[32], self.deck.deck[51], self.deck.deck[23], self.deck.deck[50]], HandRanks.FullHouse([self.deck.deck[6], self.deck.deck[19], self.deck.deck[32], self.deck.deck[10], self.deck.deck[23]])), ( [self.deck.deck[6], self.deck.deck[47]], # Case where hand does not participate. [self.deck.deck[25], self.deck.deck[51], self.deck.deck[12], self.deck.deck[50], self.deck.deck[24]], HandRanks.FullHouse([self.deck.deck[12], self.deck.deck[25], self.deck.deck[51], self.deck.deck[24], self.deck.deck[50]])), ( [self.deck.deck[4], self.deck.deck[26]], # One card from hand participates. [self.deck.deck[17], self.deck.deck[30], self.deck.deck[50], self.deck.deck[24], self.deck.deck[5]], HandRanks.FullHouse([self.deck.deck[4], self.deck.deck[17], self.deck.deck[30], self.deck.deck[24], self.deck.deck[50]])), ( [self.deck.deck[2], self.deck.deck[15]], # Test the double triple case. [self.deck.deck[28], self.deck.deck[51], self.deck.deck[25], self.deck.deck[12], self.deck.deck[24]], HandRanks.FullHouse([self.deck.deck[12], self.deck.deck[25], self.deck.deck[51], self.deck.deck[2], self.deck.deck[15]])) ) for hand, board, ranking in known_values: result = HandRanking.rankHandHi(hand, board) self.assertIsInstance(result, HandRanks.FullHouse) # Verify that the correct object was returned. self.assertEqual(result, ranking)
def test_flush(self): ''' rankHandHi should return a Flush object with appropriate input.''' # Test three possible combinations of cases, plus a 6-card, and 7-card flush scenario. known_values = (( [self.deck.deck[2], self.deck.deck[5]], # Full participation of hand in result case. [self.deck.deck[6], self.deck.deck[32], self.deck.deck[51], self.deck.deck[8], self.deck.deck[12]], HandRanks.Flush([self.deck.deck[2], self.deck.deck[5], self.deck.deck[6], self.deck.deck[8], self.deck.deck[12]])), ( [self.deck.deck[3], self.deck.deck[47]], # Case where hand does not participate. [self.deck.deck[18], self.deck.deck[17], self.deck.deck[20], self.deck.deck[21], self.deck.deck[13]], HandRanks.Flush([self.deck.deck[13], self.deck.deck[17], self.deck.deck[18], self.deck.deck[20], self.deck.deck[21]])), ( [self.deck.deck[4], self.deck.deck[32]], # One card from hand participates. [self.deck.deck[33], self.deck.deck[38], self.deck.deck[29], self.deck.deck[27], self.deck.deck[5]], HandRanks.Flush([self.deck.deck[27], self.deck.deck[29], self.deck.deck[32], self.deck.deck[33], self.deck.deck[38]])), ( [self.deck.deck[8], self.deck.deck[15]], # Test the 6-card flush case. [self.deck.deck[4], self.deck.deck[5], self.deck.deck[2], self.deck.deck[10], self.deck.deck[11]], HandRanks.Flush([self.deck.deck[4], self.deck.deck[5], self.deck.deck[8], self.deck.deck[10], self.deck.deck[11]])), ( [self.deck.deck[39], self.deck.deck[50]], # Test the 7-card flush case. [self.deck.deck[42], self.deck.deck[44], self.deck.deck[48], self.deck.deck[51], self.deck.deck[43]], HandRanks.Flush([self.deck.deck[43], self.deck.deck[44], self.deck.deck[48], self.deck.deck[50], self.deck.deck[51]]))) for hand, board, ranking in known_values: result = HandRanking.rankHandHi(hand, board) self.assertIsInstance(result, HandRanks.Flush) # Verify that the correct object was returned. self.assertEqual(result, ranking)
def getEquivHandRanking(self, hand): hr = HandRanking.HandRanking(hand) ranking = hr.analyzeRank() return ranking