class Player(object): def __init__(self, hand=None, cash=None, holds=None): self.hand = Hand() self.cash = 100 self.holds = [0, 0, 0, 0, 0] def add_card(self, card): for k in range(5): if self.hand[k].get_suite() == -1: self.hand.pop(k) self.hand.insert(k, card) break def hold_card(self, selection): self.holds[selection] = 1 def add_holds(self, holds): self.holds = holds def submit_play(self, temp=None): temp = DiscardPile() for k in range(len(self.holds)): if self.holds[k] == 0: temp.append(self.hand.get_card(k)) self.hand[k] = Card(-1, -1) # self.clear_holds() return temp def get_hand(self): return self.hand def get_holds(self): return self.holds def clear_holds(self): temp = [0, 0, 0, 0, 0] self.holds = list(temp) def print_holds(self): for k in range(5): print self.holds[k]
class HandEvaluator_Tester(unittest.TestCase): def setUp(self, hand=None, eval=None): self.hand = Hand() self.eval = HandEvaluator() def test_hand_fullhouse(self): for k in range(5): self.hand.pop(0) self.hand.append(Card(1, 1)) self.hand.append(Card(2, 1)) self.hand.append(Card(1, 2)) self.hand.append(Card(0, 2)) self.hand.append(Card(3, 1)) start = time.clock() self.assertTrue(self.eval.evaluate_hand(self.hand) == "FullHouse") elapsed_time = time.clock() - start print "Elapsed Time = %f" % elapsed_time def test_hand_straight(self): for k in range(5): self.hand.pop(0) self.hand.append(Card(1, 1)) self.hand.append(Card(2, 2)) self.hand.append(Card(1, 5)) self.hand.append(Card(0, 4)) self.hand.append(Card(3, 3)) self.assertTrue(self.eval.evaluate_hand(self.hand) == "Straight") def test_hand_two_pair(self): for k in range(5): self.hand.pop(0) self.hand.append(Card(1, 2)) self.hand.append(Card(2, 2)) self.hand.append(Card(1, 4)) self.hand.append(Card(0, 4)) self.hand.append(Card(3, 10)) self.assertTrue(self.eval.evaluate_hand(self.hand) == "TwoPair") def test_hand_pair(self): for k in range(5): self.hand.pop(0) self.hand.append(Card(1, 12)) self.hand.append(Card(2, 12)) self.hand.append(Card(1, 6)) self.hand.append(Card(0, 4)) self.hand.append(Card(3, 9)) self.assertTrue(self.eval.evaluate_hand(self.hand) == "Pair") def test_hand_pair_not(self): for k in range(5): self.hand.pop(0) self.hand.append(Card(1, 1)) self.hand.append(Card(2, 2)) self.hand.append(Card(1, 6)) self.hand.append(Card(0, 4)) self.hand.append(Card(3, 10)) self.assertFalse(self.eval.evaluate_hand(self.hand) == "Pair") def test_hand_trips(self): for k in range(5): self.hand.pop(0) self.hand.append(Card(1, 2)) self.hand.append(Card(2, 2)) self.hand.append(Card(1, 2)) self.hand.append(Card(0, 4)) self.hand.append(Card(3, 10)) self.assertTrue(self.eval.evaluate_hand(self.hand) == "Trips") def test_hand_quads(self): for k in range(5): self.hand.pop(0) self.hand.append(Card(1, 2)) self.hand.append(Card(2, 2)) self.hand.append(Card(3, 2)) self.hand.append(Card(0, 2)) self.hand.append(Card(3, 10)) self.assertTrue(self.eval.evaluate_hand(self.hand) == "Quads") def test_hand_flush(self): for k in range(5): self.hand.pop(0) self.hand.append(Card(2, 2)) self.hand.append(Card(2, 4)) self.hand.append(Card(2, 6)) self.hand.append(Card(2, 8)) self.hand.append(Card(2, 10)) self.assertTrue(self.eval.evaluate_hand(self.hand) == "Flush") def test_hand_straight_flush(self): for k in range(5): self.hand.pop(0) self.hand.append(Card(2, 2)) self.hand.append(Card(2, 3)) self.hand.append(Card(2, 4)) self.hand.append(Card(2, 5)) self.hand.append(Card(2, 6)) self.assertTrue(self.eval.evaluate_hand(self.hand) == "StraightFlush") def test_hand_nothing(self): for k in range(5): self.hand.pop(0) self.hand.append(Card(0, 7)) self.hand.append(Card(1, 6)) self.hand.append(Card(2, 3)) self.hand.append(Card(2, 13)) self.hand.append(Card(3, 10)) start = time.clock() self.assertFalse(self.eval.evaluate_hand(self.hand) == "Nothing") elapsed_time = time.clock() - start print "Elapsed Time = %f" % elapsed_time def test_hand_not_straight_flush(self): for k in range(5): self.hand.pop(0) self.hand.append(Card(2, 1)) self.hand.append(Card(2, 10)) self.hand.append(Card(2, 11)) self.hand.append(Card(2, 12)) self.hand.append(Card(2, 13)) self.assertFalse(self.eval.evaluate_hand(self.hand) == "StraightFlush") def test_hand_royal_flush(self): for k in range(5): self.hand.pop(0) self.hand.append(Card(2, 1)) self.hand.append(Card(2, 10)) self.hand.append(Card(2, 11)) self.hand.append(Card(2, 12)) self.hand.append(Card(2, 13)) self.assertTrue(self.eval.evaluate_hand(self.hand) == "RoyalFlush") def test_hand_wheel_straight(self): for k in range(5): self.hand.pop(0) self.hand.append(Card(2, 1)) self.hand.append(Card(3, 10)) self.hand.append(Card(0, 11)) self.hand.append(Card(2, 12)) self.hand.append(Card(1, 13)) self.assertTrue(self.eval.evaluate_hand(self.hand) == "Straight")