Exemple #1
0
class CardGame:
    def __init__(self, name1="player-1", name2="player-2", num_cards=10):
        """מקבלת כמה קלפים לחלק לכל שחקן, מגדירה 2 שחקנים, יוצרת חפיסה ומתחילה משחק חדש"""
        if type(num_cards) == int:  # נכנסת רק כאשר המספר הוא שלם ותקין
            if 1 <= num_cards:  # בודקת שכמות הקלפים היא תיקנית ולא פחות מ1
                if num_cards > 26:  # אם כמות הקלפים לחלוקה גדול מ26 היא תחלק רק 26 קלפים ותעדכן את המשתמש
                    print("only 26 cards dealt")
                    num_cards = 26
                self.num_cards = num_cards
                self.player_1 = Player(name1, self.num_cards)
                self.player_2 = Player(name2, self.num_cards)
                self.deck_cards = DeckOfCards()
                self.new_game()
            else:
                exit("ERROR!")  # אם הכמות היא פחות מ1 תדפיס שגיאה
        else:
            exit("ERROR!")  # אם המספר אינו תיקני

    def get_winner(self):
        """מחזירה את השם של השחקן עם הרשימה הקצרה ביותר או אם הם שווים אז none"""
        if len(self.player_1.player_deck) < len(self.player_2.player_deck):
            return self.player_1.name
        elif len(self.player_1.player_deck) == len(self.player_2.player_deck):
            return None
        else:
            return self.player_2.name

    def new_game(self):
        """מערבבת את החפיסה השלימה ומחלקת קלפים לשני השחקנים, במידה והפונקציה הופעלה במהלך המשחק היא תציג שגיאה"""
        if len(self.deck_cards.show()) == 52:
            self.deck_cards.shuffle()
            self.player_1.set_hand(self.deck_cards)
            self.player_2.set_hand(self.deck_cards)
        else:
            exit("Error!")
class TestDeckOfCard(TestCase):
    def setUp(self):
        self.tester = DeckOfCards()

    def test_sum_cards(self):
        """בודקת האם בחפיסה חדשה שנוצרת יש 52 קלפים"""
        deck1 = DeckOfCards()
        self.assertEqual(len(deck1.cards), 52)

    def test_shuffle(self):
        """בודקת האם החפיסה לפני הערבוב שווה לחפיסה חדשה, ובודקת האם החפיסה אחרי הערבוב לא שווה לחפיסה חדשה לפני ערבוב"""
        deck1 = DeckOfCards()
        self.assertEqual(deck1.cards, self.tester.show())
        self.tester.shuffle()
        self.assertNotEqual(deck1.cards, self.tester.show())

    @patch("games_cards.DeckOfCards.DeckOfCards.random_for_deal_one",
           return_value=1)
    def test_deal_one1(self, mock_rand):
        """בודקת אם הפונקציה מחזירה לי בהגרלה את אינדקס 1 האם זה באמת אותו קלף"""
        c = self.tester.cards[1]
        b = self.tester.deal_one()
        print(c, b)
        self.assertEqual(b, c)

    def test_deal_one2(self):
        """בודקת לי האם הקלף שהוצאתי כבר לא נמצא בחפיסה"""
        a = self.tester.deal_one()
        self.assertNotIn(a, self.tester.show())

    def test_deal_one3(self):
        """בודק לי האם החפיסה ירדה בכמות באחד אחרי שהוצאתי קלף"""
        len1 = len(self.tester.show())
        self.tester.deal_one()
        len2 = len(self.tester.show())
        self.assertEqual(len1 - 1, len2)

    def test_show(self):
        """בודקת האם הקלף הספיציפי נמצא בתוך חפיסת הקלפים"""
        self.card1 = Card(1, 1)
        self.assertIn(self.card1, self.tester.show())
 def test_show(self):
     """checks the method are really shows the full deck"""
     deck = DeckOfCards()
     self.assertEqual(deck.show(), deck.list_cards)