100 lines
3.5 KiB
Python
100 lines
3.5 KiB
Python
from bang.characters import Character
|
|
from backend.bang.cards import Bang, Barile, Suit, Volcanic
|
|
from tests.dummy_socket import DummySocket
|
|
from bang.deck import Deck
|
|
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)
|
|
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)
|
|
barrel_guy = g.players[g.turn]
|
|
barrel_guy.character = Character('test_char', 2)
|
|
barrel_guy.draw('')
|
|
barrel_guy.hand = [Barile(0,0)]
|
|
barrel_guy.play_card(0)
|
|
assert isinstance(barrel_guy.equipment[0], Barile)
|
|
barrel_guy.end_turn()
|
|
barrel_guy.character = Character('test_char', 2)
|
|
g.players[g.turn].draw('')
|
|
g.players[g.turn].hand = [Volcanic(0,0), Bang(0,0), Bang(0,0)]
|
|
g.players[g.turn].play_card(0)
|
|
g.players[g.turn].play_card(0, barrel_guy.name)
|
|
assert g.players[g.turn].pending_action == PendingAction.WAIT
|
|
assert barrel_guy.pending_action == PendingAction.PICK
|
|
g.deck.cards[0] = Bang(Suit.HEARTS, 5)
|
|
barrel_guy.pick()
|
|
assert barrel_guy.pending_action == PendingAction.WAIT
|
|
assert barrel_guy.lives == barrel_guy.max_lives
|
|
assert g.players[g.turn].pending_action == PendingAction.PLAY
|
|
g.players[g.turn].play_card(0, barrel_guy.name)
|
|
g.deck.cards[0] = Bang(Suit.SPADES, 5)
|
|
barrel_guy.pick()
|
|
assert barrel_guy.pending_action == PendingAction.WAIT
|
|
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 |