add tests

This commit is contained in:
Alberto Xamin 2023-03-05 16:49:52 +00:00
parent c4d23b6e37
commit 5811821ccf
No known key found for this signature in database
GPG Key ID: 5ABFCD8A22EA6F5D
4 changed files with 100 additions and 3 deletions

View File

@ -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):
"""

View File

@ -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:

View File

@ -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()
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

View File

@ -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