diff --git a/backend/tests/cards_test.py b/backend/tests/cards_test.py index 0a0f3b1..0fc2b9a 100644 --- a/backend/tests/cards_test.py +++ b/backend/tests/cards_test.py @@ -6,6 +6,7 @@ from bang.game import Game from bang.players import Player, PendingAction from bang.cards import * +# test card Barile def test_barile(): sio = DummySocket() g = Game('test', sio) @@ -41,3 +42,59 @@ def test_barile(): assert barrel_guy.lives == barrel_guy.max_lives - 1 assert g.players[g.turn].pending_action == PendingAction.PLAY +#test card Volcanic +def test_volcanic(): + sio = DummySocket() + g = Game('test', sio) + ps = [Player(f'p{i}', f'p{i}', sio) for i in range(3)] + for p in ps: + g.add_player(p) + g.start_game() + for p in ps: + p.set_character(p.available_characters[0].name) + p.character = Character('test_char', 3) + p.hand = [] + volcanic_guy = g.players[g.turn] + volcanic_guy.draw('') + volcanic_guy.hand = [Volcanic(0,0), Bang(0,0), Bang(0,0)] + volcanic_guy.play_card(0) + assert isinstance(volcanic_guy.equipment[0], Volcanic) + volcanic_guy.play_card(0, g.players[(g.turn+1)%3].name) + assert len(volcanic_guy.hand) == 1 + volcanic_guy.play_card(0, g.players[(g.turn+1)%3].name) + assert len(volcanic_guy.hand) == 0 + +# test card Dinamite +def test_dinamite(): + sio = DummySocket() + g = Game('test', sio) + ps = [Player(f'p{i}', f'p{i}', sio) for i in range(3)] + for p in ps: + g.add_player(p) + g.start_game() + for p in ps: + p.set_character(p.available_characters[0].name) + p.character = Character('test_char', 4) + p.hand = [] + dinamite_guy = g.players[g.turn] + dinamite_guy.draw('') + dinamite_guy.hand = [Dinamite(0,0)] + dinamite_guy.play_card(0) + assert isinstance(dinamite_guy.equipment[0], Dinamite) + dinamite_guy.end_turn() + g.players[g.turn].draw('') + g.players[g.turn].hand = [] + g.players[g.turn].end_turn() + g.players[g.turn].draw('') + g.players[g.turn].hand = [] + g.players[g.turn].end_turn() + g.deck.cards.insert(0, Dinamite(Suit.HEARTS, 5)) + dinamite_guy.pick() + assert len(dinamite_guy.equipment) == 0 + dinamite_guy.draw('') + dinamite_guy.end_turn() + assert len(g.players[g.turn].equipment) == 1 + g.deck.cards.insert(0, Dinamite(Suit.SPADES, 5)) + g.players[g.turn].pick() + assert len(g.players[g.turn].equipment) == 0 + assert g.players[g.turn].lives == 1 \ No newline at end of file diff --git a/backend/tests/game_test.py b/backend/tests/game_test.py index e908c15..57cdd0e 100644 --- a/backend/tests/game_test.py +++ b/backend/tests/game_test.py @@ -2,8 +2,10 @@ from tests.dummy_socket import DummySocket from bang.deck import Deck from bang.game import Game from bang.players import Player, PendingAction +from bang.roles import * from bang.cards import * +# test that game can start def test_game_start(): sio = DummySocket() g = Game('test', sio) @@ -32,3 +34,58 @@ def test_game_start(): p3.set_character(p3.available_characters[0].name) assert p3.character != None assert g.players[g.turn].pending_action == PendingAction.DRAW + +# test that dodge_city is added to games with more than 8 players +def test_dodge_city(): + sio = DummySocket() + g = Game('test', sio) + for i in range(9): + p = Player(f'p{i}', f'p{i}', sio) + g.add_player(p) + assert 'dodge_city' in g.expansions + +# test that a game with 2 players has only renegade as role +def test_renegade_only(): + sio = DummySocket() + g = Game('test', sio) + p1 = Player('p1', 'p1', sio) + g.add_player(p1) + p2 = Player('p2', 'p2', sio) + g.add_player(p2) + g.start_game() + assert isinstance(g.players[0].role, Renegade) + assert isinstance(g.players[1].role, Renegade) + +# test that a game with 3 player has Renegade, Vice and Outlaw as roles +def test_renegade_vice_outlaw(): + sio = DummySocket() + g = Game('test', sio) + for i in range(3): + p = Player(f'p{i}', f'p{i}', sio) + g.add_player(p) + g.start_game() + roles = {p.role.name for p in g.players} + assert len(roles) == 3 + +# test that a game with 4 players has all roles except the deputy +def test_4_players_roles(): + sio = DummySocket() + g = Game('test', sio) + for i in range(4): + p = Player(f'p{i}', f'p{i}', sio) + g.add_player(p) + g.start_game() + roles = {p.role.name for p in g.players} + assert len(roles) == 3 + +# test that a game with 5 players has all roles +def test_5_players_roles(): + sio = DummySocket() + g = Game('test', sio) + for i in range(5): + p = Player(f'p{i}', f'p{i}', sio) + g.add_player(p) + g.start_game() + roles = {p.role.name for p in g.players} + assert len(roles) == 4 +