bang/backend/tests/game_test.py
2023-01-20 20:57:30 +00:00

91 lines
2.5 KiB
Python

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():
g = Game('test')
p1 = Player('p1', 'p1')
g.add_player(p1)
p2 = Player('p2', 'p2')
g.add_player(p2)
p3 = Player('p3', 'p3')
g.add_player(p3)
assert p1.role == None
assert p2.role == None
assert p3.role == None
assert not g.started
g.start_game()
assert g.started
assert p1.role != None
assert p2.role != None
assert p3.role != None
assert len(p1.available_characters) == g.characters_to_distribute
assert len(p2.available_characters) == g.characters_to_distribute
assert len(p3.available_characters) == g.characters_to_distribute
p1.set_character(p1.available_characters[0].name)
assert p1.character != None
p2.set_character(p2.available_characters[0].name)
assert p2.character != None
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():
g = Game('test')
for i in range(9):
p = Player(f'p{i}', f'p{i}')
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():
g = Game('test')
p1 = Player('p1', 'p1')
g.add_player(p1)
p2 = Player('p2', 'p2')
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():
g = Game('test')
for i in range(3):
p = Player(f'p{i}', f'p{i}')
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():
g = Game('test')
for i in range(4):
p = Player(f'p{i}', f'p{i}')
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():
g = Game('test')
for i in range(5):
p = Player(f'p{i}', f'p{i}')
g.add_player(p)
g.start_game()
roles = {p.role.name for p in g.players}
assert len(roles) == 4