From 5811821ccf3f45d657fbf9a26b81aabb434a8df8 Mon Sep 17 00:00:00 2001 From: Alberto Xamin Date: Sun, 5 Mar 2023 16:49:52 +0000 Subject: [PATCH] add tests --- .../expansions/wild_west_show/card_events.py | 2 +- backend/bang/game.py | 3 +- backend/tests/__init__.py | 38 +++++++++++- backend/tests/wild_west_show_events_test.py | 60 +++++++++++++++++++ 4 files changed, 100 insertions(+), 3 deletions(-) create mode 100644 backend/tests/wild_west_show_events_test.py diff --git a/backend/bang/expansions/wild_west_show/card_events.py b/backend/bang/expansions/wild_west_show/card_events.py index 59009d8..016bdba 100644 --- a/backend/bang/expansions/wild_west_show/card_events.py +++ b/backend/bang/expansions/wild_west_show/card_events.py @@ -63,7 +63,7 @@ class Sacagaway(CardEvent): Tutti i giocatori giocano a carte scoperte (tranne il ruolo!). """ def __init__(self): - super().__init__("Sacagaway", "🏇") + super().__init__("Sacagaway", "🌄") class WildWestShow(CardEvent): """ diff --git a/backend/bang/game.py b/backend/bang/game.py index 9032ddf..452aa50 100644 --- a/backend/bang/game.py +++ b/backend/bang/game.py @@ -614,7 +614,8 @@ class Game: c = self.deck.pick_and_scrap() G.sio.emit('chat_message', room=self.name, data=f'_flipped|Helena Zontero|{c.name}|{c.num_suit()}') if c.check_suit(self, [cs.Suit.HEARTS, cs.Suit.DIAMONDS]): - pls = (p for p in self.players if not isinstance(p.role, roles.Sheriff)) + G.sio.emit('chat_message', room=self.name, data=f'_swapped_roles|Helena Zontero|{c.name}|{c.num_suit()}') + pls = [p for p in self.players if not isinstance(p.role, roles.Sheriff)] newroles = [p.role for p in pls] random.shuffle(newroles) for p in pls: diff --git a/backend/tests/__init__.py b/backend/tests/__init__.py index e79239c..fe53a50 100644 --- a/backend/tests/__init__.py +++ b/backend/tests/__init__.py @@ -1,3 +1,39 @@ +import pytest +from bang.characters import Character +from bang.game import Game +from bang.players import Player from tests.dummy_socket import DummySocket from globals import G -G.sio = DummySocket() \ No newline at end of file +G.sio = DummySocket() + + +def started_game(expansions, players=4): + g = Game('test') + g.expansions = expansions + ps = [Player(f'p{i}', f'p{i}') for i in range(players)] + for p in ps: + g.add_player(p) + g.start_game() + for p in ps: + p.available_characters = [Character('test_char', 4)] + p.set_character(p.available_characters[0].name) + return g + + +def set_events(g: Game, event_cards): + g.deck.event_cards = event_cards + + +def current_player(g: Game): + return g.players[g.turn] + + +def next_player(g: Game): + return g.players[(g.turn + 1) % len(g.players)] + + +def current_player_with_cards(g: Game, cards): + p = current_player(g) + p.draw('') + p.hand = cards + return p \ No newline at end of file diff --git a/backend/tests/wild_west_show_events_test.py b/backend/tests/wild_west_show_events_test.py new file mode 100644 index 0000000..3a7e4ba --- /dev/null +++ b/backend/tests/wild_west_show_events_test.py @@ -0,0 +1,60 @@ + +from tests import started_game, set_events, current_player, next_player, current_player_with_cards + +from bang.expansions.wild_west_show.card_events import * +from bang.cards import Card, Suit + + +# test Camposanto +def test_camposanto(): + g = started_game(['wild_west_show'], 4) + set_events(g, [Camposanto()]) + current_player_with_cards(g, []).end_turn() + p = current_player_with_cards(g, []) + p.lives = 0 + p.notify_self() + p1 = current_player_with_cards(g, []) + p1.lives = 0 + p1.notify_self() + current_player_with_cards(g, []).end_turn() + current_player_with_cards(g, []).end_turn() + assert p.is_my_turn + assert p.lives == 1 + current_player_with_cards(g, []).end_turn() + assert p1.is_my_turn + assert p1.lives == 1 + + +# test DarlingValentine +def test_darling_valentine(): + g = started_game(['wild_west_show'], 4) + set_events(g, [DarlingValentine()]) + p = next_player(g) + hand = p.hand.copy() + current_player_with_cards(g, []).end_turn() + assert hand != current_player(g).hand + + +# test DorothyRage + +# test HelenaZontero +def test_helena_zontero(): + g = started_game(['wild_west_show'], 6) + set_events(g, [None, HelenaZontero()]) + roles = [p.role.name for p in g.players] + for i in range(5): + current_player_with_cards(g, []).end_turn() + g.deck.cards = [Card(Suit.HEARTS, 'card', 0)]*5 + current_player_with_cards(g, []).end_turn() + roles2 = [p.role.name for p in g.players] + assert roles != roles2 + +# test LadyRosaDelTexas + +# test MissSusanna + +# test RegolamentoDiConti + +# test Sacagaway + +# test WildWestShow \ No newline at end of file