def testCardsRed(self): cards = Cards() cards.add_card(Card(RED, 4)) cards.add_card(Card(RED, 5)) cards.add_card(Card(RED, 6)) self.assertEqual(3, len(cards)) self.assertEqual(str(cards), "Cards(3)")
def testCardsYellow(self): cards = Cards() cards.add_card(Card(YELLOW, 4)) cards.add_card(Card(YELLOW, 5)) cards.add_card(Card(YELLOW, 6)) self.assertEqual(3, len(cards)) self.assertEqual(str(cards), "Cards(3)")
def testCardsGreen(self): cards = Cards() cards.add_card(Card(GREEN, 4)) cards.add_card(Card(GREEN, 5)) cards.add_card(Card(GREEN, 6)) self.assertEqual(3, len(cards)) self.assertEqual(str(cards), "Cards(3)")
def test_can_be_played_effects(self): # test a draw two draw_two = Card(constants.CARD_DRAW_TWO, constants.CARD_BLUE) another_draw_two = Card(constants.CARD_DRAW_TWO, constants.CARD_PURPLE) draw_two.actions.append(action.Action(draw_two,"",[action.PlusTwo])) another_draw_two.actions.append(action.Action(another_draw_two,"",[action.PlusTwo])) ctx = {constants.CONTEXT.TOP_CARD: draw_two, constants.CONTEXT.CURRENT_EFFECT: constants.CONTEXT.EFFECTS.DRAW_TWO, constants.CONTEXT.CURRENT_EFFECT_VALUE: 2} self.assertFalse(MelbourneRules.can_be_played(Card(constants.CARD_EIGHT, constants.CARD_RED), ctx)) self.assertFalse(MelbourneRules.can_be_played(Card(constants.CARD_EIGHT, constants.CARD_BLUE), ctx)) self.assertTrue(MelbourneRules.can_be_played(another_draw_two, ctx))
def testCardsRed2(self): card_list = [ Card(RED, 4), Card(RED, 5), Card(RED, 6), Card(RED, 7), ] cards = Cards() cards.add_cards(card_list) self.assertEqual(4, len(cards)) self.assertEqual(str(cards), "Cards(4)")
def testCardsYellow2(self): card_list = [ Card(YELLOW, 4), Card(YELLOW, 5), Card(YELLOW, 6), Card(YELLOW, "A"), ] cards = Cards() cards.add_cards(card_list) self.assertEqual(4, len(cards)) self.assertEqual(str(cards), "Cards(4)")
def testCardsMixed1(self): card_list = [ Card(RED, 4), Card(YELLOW, 5), Card(GREEN, 6), ] cards = Cards() cards.add_cards(card_list) self.assertEqual(3, len(cards)) self.assertNotEqual(1, len(cards))
def testHandRed(self): hand = Hand("Player Red") hand.add_card(Card(RED, 4)) hand.add_card(Card(RED, 5)) hand.add_card(Card(RED, 6)) self.assertEqual(45, hand.score) self.assertEqual(3, len(hand)) self.assertEqual(str(hand), 'Hand(name="Player Red", cards=3, score=45)') self.assertEqual(repr(hand), 'Hand(name="Player Red", cards=3, score=45)')
def testHandYellow(self): hand = Hand("Player Yellow") hand.add_card(Card(YELLOW, 4)) hand.add_card(Card(YELLOW, 5)) hand.add_card(Card(YELLOW, 6)) self.assertEqual(30, hand.score) self.assertEqual(3, len(hand)) self.assertEqual(str(hand), 'Hand(name="Player Yellow", cards=3, score=30)') self.assertEqual(repr(hand), 'Hand(name="Player Yellow", cards=3, score=30)')
def testHandGreen(self): hand = Hand("Player Green") hand.add_card(Card(GREEN, 4)) hand.add_card(Card(GREEN, 5)) hand.add_card(Card(GREEN, 6)) self.assertEqual(15, hand.score) self.assertEqual(3, len(hand)) self.assertEqual(str(hand), 'Hand(name="Player Green", cards=3, score=15)') self.assertEqual(repr(hand), 'Hand(name="Player Green", cards=3, score=15)')
def testHandYellow2(self): cards = [ Card(YELLOW, 4), Card(YELLOW, 5), Card(YELLOW, 6), ] hand = Hand() hand.add_cards(cards) self.assertEqual(30, hand.score) self.assertEqual(3, len(hand)) self.assertEqual(str(hand), 'Hand(name="", cards=3, score=30)') self.assertEqual(repr(hand), 'Hand(name="", cards=3, score=30)')
def testHandGreen2(self): cards = [ Card(GREEN, 4), Card(GREEN, 5), Card(GREEN, 6), ] hand = Hand() hand.add_cards(cards) self.assertEqual(15, hand.score) self.assertEqual(3, len(hand)) self.assertEqual(str(hand), 'Hand(name="", cards=3, score=15)') self.assertEqual(repr(hand), 'Hand(name="", cards=3, score=15)')
def testHandRed2(self): cards = [ Card(RED, 4), Card(RED, 5), Card(RED, 6), ] hand = Hand() hand.add_cards(cards) self.assertEqual(45, hand.score) self.assertEqual(3, len(hand)) self.assertEqual(str(hand), 'Hand(name="", cards=3, score=45)') self.assertEqual(repr(hand), 'Hand(name="", cards=3, score=45)')
def testHandMixed1(self): cards = [ Card(RED, 4), Card(YELLOW, 5), Card(GREEN, 6), ] hand = Hand() hand.add_cards(cards) self.assertEqual(28, hand.score) self.assertEqual(3, len(hand)) self.assertNotEqual(99, hand.score) self.assertNotEqual(1, len(hand))
def testCardYellowAce(self): card = Card(YELLOW, 14) self.assertEqual(card.color, YELLOW) self.assertEqual(card.color.color, "yellow") self.assertEqual(card.value, 14) self.assertEqual(card.color.point_multiplier, 2) self.assertEqual(str(card), "yellow(A)") self.assertEqual(card.point_value, 28)
def testCardRedNumber(self): card = Card(RED, 8) self.assertEqual(card.color, RED) self.assertEqual(card.color.color, "red") self.assertEqual(card.value, 8) self.assertEqual(card.color.point_multiplier, 3) self.assertEqual(str(card), "red(8)") self.assertEqual(card.point_value, 24)
def testCardRedJack(self): card = Card(RED, 11) self.assertEqual(card.color, RED) self.assertEqual(card.color.color, "red") self.assertEqual(card.value, 11) self.assertEqual(card.color.point_multiplier, 3) self.assertEqual(str(card), "red(J)") self.assertEqual(card.point_value, 33)
def testCardRedQueen(self): card = Card(RED, 12) self.assertEqual(card.color, RED) self.assertEqual(card.color.color, "red") self.assertEqual(card.value, 12) self.assertEqual(card.color.point_multiplier, 3) self.assertEqual(str(card), "red(Q)") self.assertEqual(card.point_value, 36)
def testCardRedKing(self): card = Card(RED, 13) self.assertEqual(card.color, RED) self.assertEqual(card.color.color, "red") self.assertEqual(card.value, 13) self.assertEqual(card.color.point_multiplier, 3) self.assertEqual(str(card), "red(K)") self.assertEqual(card.point_value, 39)
def testCardRedAce(self): card = Card(RED, 14) self.assertEqual(card.color, RED) self.assertEqual(card.color.color, "red") self.assertEqual(card.value, 14) self.assertEqual(card.color.point_multiplier, 3) self.assertEqual(str(card), "red(A)") self.assertEqual(card.point_value, 42)
def testCardGreen(self): card = Card(GREEN, 2) self.assertEqual(card.color, GREEN) self.assertEqual(card.color.color, "green") self.assertEqual(card.value, 2) self.assertEqual(str(card), "green(2)") self.assertEqual(repr(card), "green(2) multiplier=1") self.assertEqual(card.color.point_multiplier, 1) self.assertEqual(card.point_value, 2)
def GET_SIMPLE_CARDS(): output = [] for c in constants.CARD_COLORS: for v in constants.CARD_VALUES: card = Card(v, c) # add the play card action to each card card.actions.append(Action(card, "Play Card", [PlayCard])) output.append(card) return output
def testCardsReport(self): card_list = [ Card(RED, 3), Card(YELLOW, 3), Card(GREEN, 4), ] cards = Cards() cards.add_cards(card_list) master_text = """\ 1) red(3) 9 points 2) yellow(3) 6 points 3) green(4) 4 points""" report_text = cards.report_cards() self.assertEqual(report_text, master_text)
def testHandsDifferentNumCards(self): cards = [ Card(RED, 2), Card(YELLOW, 4), Card(GREEN, 3), Card(GREEN, "J"), ] hand1 = Hand() hand1.add_cards(cards) self.assertEqual(28, hand1.score) self.assertEqual(4, len(hand1)) self.assertNotEqual(99, hand1.score) self.assertNotEqual(1, len(hand1)) cards = [ Card(RED, 3), Card(YELLOW, 3), Card(GREEN, 4), ] hand2 = Hand() hand2.add_cards(cards) self.assertEqual(19, hand2.score) self.assertEqual(3, len(hand2)) self.assertNotEqual(99, hand2.score) self.assertNotEqual(1, len(hand2)) ################################################## self.assertFalse(hand1.same_number_of_cards(hand2)) self.assertFalse(hand2.same_number_of_cards(hand1)) with self.assertRaises(ValueError): self.assertTrue(hand1 == hand2) with self.assertRaises(ValueError): self.assertTrue(hand1 != hand2) with self.assertRaises(ValueError): self.assertNotEqual(hand1, hand2) with self.assertRaises(ValueError): self.assertFalse(hand1 == hand2) with self.assertRaises(ValueError): self.assertTrue(hand1 != hand2) with self.assertRaises(ValueError): self.assertFalse(hand1.is_tie(hand2)) with self.assertRaises(ValueError): self.assertFalse(hand1.is_winner(hand2)) with self.assertRaises(ValueError): self.assertTrue(hand1.is_loser(hand2))
def testHandReport(self): cards = [ Card(RED, 3), Card(YELLOW, 3), Card(GREEN, 4), ] hand = Hand("Player") hand.add_cards(cards) master_text = """ Hand: "Player" cards=3, total points=19 1) red(3) 9 points 2) yellow(3) 6 points 3) green(4) 4 points""" report_text = hand.report_hand() self.assertEqual(report_text, master_text)
def GET_ACTION_CARDS(): output = [] for col in constants.CARD_COLORS: # reverse card = Card(constants.CARD_REVERSE, col) card.actions.append(Action(card, "Reverse", [PlayCard, Reverse])) output.append(card) # skip card = Card(constants.CARD_SKIP, col) card.actions.append(Action(card, "Skip", [PlayCard, Skip])) output.append(card) # draw two card = Card(constants.CARD_DRAW_TWO, col) card.actions.append(Action(card, "Draw two", [PlayCard, PlusTwo])) output.append(card) # wild card card = Card(constants.CARD_WILD, constants.CARD_BLACK) card.actions.append( Action(card, "Change to Blue", [PlayCard, ChangeSuitBlue])) card.actions.append( Action(card, "Change to Red", [PlayCard, ChangeSuitRed])) card.actions.append( Action(card, "Change to Yellow", [PlayCard, ChangeSuitYellow])) card.actions.append( Action(card, "Change to Purple", [PlayCard, ChangeSuitPurple])) output.append(card) # draw four card = Card(constants.CARD_DRAW_FOUR, constants.CARD_BLACK) card.actions.append( Action(card, "Draw four Blue", [PlayCard, ChangeSuitBlue, PlusFour])) card.actions.append( Action(card, "Draw four Red", [PlayCard, ChangeSuitRed, PlusFour])) card.actions.append( Action(card, "Draw four Yellow", [PlayCard, ChangeSuitYellow, PlusFour])) card.actions.append( Action(card, "Draw four Purple", [PlayCard, ChangeSuitPurple, PlusFour])) output.append(card) return output
def testCardsGreen2(self): card_list = [ Card(GREEN, 4), Card(GREEN, 5), Card(GREEN, 6), Card(GREEN, "J"), Card(GREEN, "Q"), Card(GREEN, "K"), ] cards = Cards() cards.add_cards(card_list) self.assertEqual(6, len(cards)) self.assertEqual(str(cards), "Cards(6)")
def testCardStringValue(self): card = Card(YELLOW, "5") self.assertEqual(card.color, YELLOW) self.assertEqual(card.color.color, "yellow") self.assertEqual(card.value, 5) self.assertEqual(card.color.point_multiplier, 2) self.assertEqual(str(card), "yellow(5)") self.assertEqual(card.point_value, 10) card = Card(YELLOW, "10") self.assertEqual(card.color, YELLOW) self.assertEqual(card.color.color, "yellow") self.assertEqual(card.value, 10) self.assertEqual(card.color.point_multiplier, 2) self.assertEqual(str(card), "yellow(10)") self.assertEqual(card.point_value, 20) card = Card(YELLOW, "J") self.assertEqual(card.color, YELLOW) self.assertEqual(card.color.color, "yellow") self.assertEqual(card.value, 11) self.assertEqual(card.color.point_multiplier, 2) self.assertEqual(str(card), "yellow(J)") self.assertEqual(card.point_value, 22) card = Card(YELLOW, "Q") self.assertEqual(card.color, YELLOW) self.assertEqual(card.color.color, "yellow") self.assertEqual(card.value, 12) self.assertEqual(card.color.point_multiplier, 2) self.assertEqual(str(card), "yellow(Q)") self.assertEqual(card.point_value, 24) card = Card(YELLOW, "K") self.assertEqual(card.color, YELLOW) self.assertEqual(card.color.color, "yellow") self.assertEqual(card.value, 13) self.assertEqual(card.color.point_multiplier, 2) self.assertEqual(str(card), "yellow(K)") self.assertEqual(card.point_value, 26) card = Card(YELLOW, "A") self.assertEqual(card.color, YELLOW) self.assertEqual(card.color.color, "yellow") self.assertEqual(card.value, 14) self.assertEqual(card.color.point_multiplier, 2) self.assertEqual(str(card), "yellow(A)") self.assertEqual(card.point_value, 28)
def testHandsEqual(self): cards = [ Card(RED, 2), Card(YELLOW, 4), Card(GREEN, 2), ] hand1 = Hand() hand1.add_cards(cards) self.assertEqual(16, hand1.score) self.assertEqual(3, len(hand1)) self.assertNotEqual(99, hand1.score) self.assertNotEqual(1, len(hand1)) cards = [ Card(RED, 3), Card(YELLOW, 3), Card(GREEN, 1), ] hand2 = Hand() hand2.add_cards(cards) self.assertEqual(16, hand2.score) self.assertEqual(3, len(hand2)) self.assertNotEqual(99, hand2.score) self.assertNotEqual(1, len(hand2)) ################################################## self.assertEqual(hand1, hand2) self.assertTrue(hand1 == hand2) self.assertFalse(hand1 != hand2) self.assertTrue(hand1.is_tie(hand2)) self.assertFalse(hand1.is_winner(hand2)) self.assertFalse(hand1.is_loser(hand2)) self.assertTrue(hand1.same_number_of_cards(hand2)) self.assertTrue(hand2.same_number_of_cards(hand1)) ## hands are a tie hands = [hand1, hand2] n, winners = Hand.determine_winner(hands) self.assertEqual(2, n) self.assertEqual(hands, winners)
def testCardsMixed2(self): card_list = [ Card(YELLOW, 4), Card(GREEN, 5), Card(RED, 6), ] cards = Cards() cards.add_cards(card_list) self.assertEqual(3, len(cards)) self.assertNotEqual(1, len(cards)) self.assertEqual(cards.cards, card_list) sorted_cards = [ Card(RED, 6), Card(YELLOW, 4), Card(GREEN, 5), ] cards.sort_by_points() self.assertEqual(cards.cards, sorted_cards)