91 lines
2.5 KiB
Python
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
|
|
|