Beispiel #1
0
class Just_started_2_player_game(unittest.TestCase):
    def setUp(self):
        self.player1 = "Hans"
        self.player2 = "David"
        self.game = HanabiGame(self.player1)
        self.game.addPlayer(self.player2)
        self.game.start()

    def test_Cannot_setup_anything_anymore(self):
        self.assertRaises(Exception,  self.game._setupFireworksForTest,  ["R1"])
        self.assertRaises(Exception,  self.game._setupHandForTest,  ["R1"])
        self.assertRaises(Exception,  self.game._setupDeckForTest,  ["R1"])

    def test_First_player_takes_the_first_turn(self):
        self.assertEqual(self.game.getActivePlayer() , self.player1)

    def test_Cannot_start_game_again(self):
        self.assertFalse(self.game.canStart())
        self.assertRaises(Exception, self.game.start)

    def test_Cannot_add_players(self):
        self.assertRaises(Exception, self.game.addPlayer, "Arjan")
        
    def test_Players_hold_5_cards(self):
        self.assertEqual(self.game.getNumberOfHandCards(self.player1), 5)
        self.assertEqual(self.game.getNumberOfHandCards(self.player2), 5)

    def test_There_are_3_Thunderstorms_left(self):
        self.assertEqual(self.game.getThunderstormsLeft(), 3);

    def test_There_are_8_hints_left(self):
        self.assertEqual(self.game.getHintsLeft(), 8);
        
    def test_Deck_has_40_cards_left(self):
        self.assertEqual(self.game.getNumberOfCardsInDeck(), 40);
        
    def test_Game_is_on(self):
        self.assertTrue(self.game.isOn())
        
    def test_Game_is_not_over(self):
        self.assertFalse(self.game.isOver())
        
    def test_Score_is_0(self):
        self.assertEqual(self.game.getScore(), 0)
        
    def test_First_player_can_hint_the_other(self):
        self.game.hint(self.player2, "1")
        
    def test_First_player_cannot_hint_himself(self):
        self.assertRaises(Exception, self.game.hint, self.player1, "1")
        
    def test_First_player_can_discard_his_first_card(self):
        self.game.discard(1)

    def test_First_player_cannot_discard_his_sixth_card(self):
        self.assertRaises(Exception,  self.game.discard,  6)

    def test_Players_can_discard_21_times_each(self):
        for i in range(21):
            for player in self.game.getPlayers():
                self.game.discard(1)

    def test_After_discarding_42_cards_Game_is_over(self):
        for i in range(42):
            self.game.discard(1)
        self.assertTrue(self.game.isOver())

    def test_Players_can_hint_8_times_in_a_row(self):
        for i in range(4):
            self.game.hint(self.player2, "R")
            self.game.hint(self.player1, "1")

    def test_Players_cannot_hint_9_times_in_a_row(self):
        for i in range(4):
            self.game.hint(self.player2, "R")
            self.game.hint(self.player1, "1")
        self.assertRaises(Exception, self.game.hint, self.player2, "R")

    def test_First_player_cannot_play_his_sixth_card(self):
        self.assertRaises(Exception,  self.game.play,  6)

    def test_After_first_player_discards_Second_player_takes_his_turn(self):
        self.game.discard(1)
        self.assertEqual(self.game.getActivePlayer(), self.player2)
        
    def test_After_both_players_discard_First_player_takes_his_turn_again(self):
        self.game.discard(1)
        self.game.discard(1)
        self.assertEqual(self.game.getActivePlayer(), self.player1)
        
    def test_After_discarding_10_cards_Deck_has_30_cards_left(self):
        for i in range(10):
            self.game.discard(1)
        self.assertEqual(self.game.getNumberOfCardsInDeck(), 30);

    def test_Peeking_at_hand_of_undifined_player_looks_at_active_player(self):
        for i in range(5):
                self.assertEqual(self.game._peekHandCard(i+1), self.game._peekHandCard(i+1, self.game.getActivePlayer()))