add tests for all the base players
This commit is contained in:
parent
7825a7ac85
commit
c3d3cf8171
@ -1079,6 +1079,7 @@ class Player:
|
||||
else:
|
||||
self.hand.append(self.game.deck.draw(True))
|
||||
card.use_card(self)
|
||||
print(f'{self.game.name}: {self.name} responded with {card.name}')
|
||||
self.sio.emit('chat_message', room=self.game.name, data=f'_respond|{self.name}|{card.name}')
|
||||
self.game.deck.scrap(card, True)
|
||||
self.notify_self()
|
||||
|
@ -88,17 +88,236 @@ def test_calamityjanet():
|
||||
g.players[g.turn].play_card(0, g.players[(g.turn+1)%2].name)
|
||||
assert g.players[(g.turn+1)%2].lives == 1
|
||||
|
||||
# TODO: Test ElGringo
|
||||
# TODO: Test JesseJones
|
||||
# TODO: Test Jourdonnais
|
||||
# TODO: Test KitCarlson
|
||||
# TODO: Test LuckyDuke
|
||||
# TODO: Test PaulRegret
|
||||
# TODO: Test PedroRamirez
|
||||
# TODO: Test RoseDoolan
|
||||
# TODO: Test SidKetchum
|
||||
# TODO: Test SlabTheKiller
|
||||
# TODO: Test SuzyLafayette
|
||||
def test_ElGringo():
|
||||
sio = DummySocket()
|
||||
g = Game('test', sio)
|
||||
ps = [Player(f'p{i}', f'p{i}', sio) for i in range(2)]
|
||||
for p in ps:
|
||||
g.add_player(p)
|
||||
g.start_game()
|
||||
test_chars = [Character('test_char', 2), ElGringo()]
|
||||
for p in ps:
|
||||
p.available_characters = [test_chars.pop(0)]
|
||||
p.set_character(p.available_characters[0].name)
|
||||
if isinstance(g.players[g.turn].character, ElGringo):
|
||||
g.players[g.turn].draw('')
|
||||
g.players[g.turn].hand = []
|
||||
g.players[g.turn].end_turn()
|
||||
g.players[(g.turn+1)%2].hand = []
|
||||
g.players[g.turn].draw('')
|
||||
g.players[g.turn].hand = [Bang(0,0), Bang(0,0)]
|
||||
assert len(g.players[(g.turn+1)%2].hand) == 0
|
||||
g.players[g.turn].play_card(0, g.players[(g.turn+1)%2].name)
|
||||
assert len(g.players[(g.turn+1)%2].hand) == 1
|
||||
assert len(g.players[g.turn].hand) == 0
|
||||
|
||||
def test_JesseJones():
|
||||
sio = DummySocket()
|
||||
g = Game('test', sio)
|
||||
ps = [Player(f'p{i}', f'p{i}', sio) for i in range(2)]
|
||||
for p in ps:
|
||||
g.add_player(p)
|
||||
g.start_game()
|
||||
test_chars = [Character('test_char', 2), JesseJones()]
|
||||
for p in ps:
|
||||
p.available_characters = [test_chars.pop(0)]
|
||||
p.set_character(p.available_characters[0].name)
|
||||
if not isinstance(g.players[g.turn].character, JesseJones):
|
||||
g.players[g.turn].draw('')
|
||||
g.players[g.turn].hand = []
|
||||
g.players[g.turn].end_turn()
|
||||
g.players[(g.turn+1)%2].hand = [Bang(0,0)]
|
||||
g.players[g.turn].draw('p1' if g.turn == 0 else 'p0')
|
||||
g.players[g.turn].hand = [Bang(0,0), Bang(0,0)]
|
||||
assert len(g.players[(g.turn+1)%2].hand) == 0
|
||||
assert len(g.players[g.turn].hand) == 2
|
||||
|
||||
def test_Jourdonnais():
|
||||
sio = DummySocket()
|
||||
g = Game('test', sio)
|
||||
ps = [Player(f'p{i}', f'p{i}', sio) for i in range(2)]
|
||||
for p in ps:
|
||||
g.add_player(p)
|
||||
g.start_game()
|
||||
test_chars = [Character('test_char', 2), Jourdonnais()]
|
||||
for p in ps:
|
||||
p.available_characters = [test_chars.pop(0)]
|
||||
p.set_character(p.available_characters[0].name)
|
||||
if isinstance(g.players[g.turn].character, Jourdonnais):
|
||||
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 = [Bang(0,0)]
|
||||
g.players[g.turn].play_card(0, g.players[(g.turn+1)%2].name)
|
||||
assert g.players[(g.turn+1)%2].pending_action == PendingAction.PICK
|
||||
|
||||
def test_KitCarlson():
|
||||
sio = DummySocket()
|
||||
g = Game('test', sio)
|
||||
ps = [Player(f'p{i}', f'p{i}', sio) for i in range(2)]
|
||||
for p in ps:
|
||||
g.add_player(p)
|
||||
g.start_game()
|
||||
test_chars = [Character('test_char', 4), KitCarlson()]
|
||||
for p in ps:
|
||||
p.available_characters = [test_chars.pop(0)]
|
||||
p.set_character(p.available_characters[0].name)
|
||||
if not isinstance(g.players[g.turn].character, KitCarlson):
|
||||
g.players[g.turn].draw('')
|
||||
g.players[g.turn].hand = [Mancato(0,0)]
|
||||
g.players[g.turn].end_turn()
|
||||
g.players[g.turn].draw('')
|
||||
assert g.players[g.turn].pending_action == PendingAction.CHOOSE
|
||||
assert len(g.players[g.turn].available_cards) == 3
|
||||
g.players[g.turn].choose(0)
|
||||
assert len(g.players[g.turn].available_cards) == 2
|
||||
g.players[g.turn].choose(1)
|
||||
assert g.players[g.turn].pending_action == PendingAction.PLAY
|
||||
|
||||
def test_LuckyDuke():
|
||||
sio = DummySocket()
|
||||
g = Game('test', sio)
|
||||
ps = [Player(f'p{i}', f'p{i}', sio) for i in range(2)]
|
||||
for p in ps:
|
||||
g.add_player(p)
|
||||
g.start_game()
|
||||
test_chars = [LuckyDuke(), LuckyDuke()]
|
||||
for p in ps:
|
||||
p.available_characters = [test_chars.pop(0)]
|
||||
p.set_character(p.available_characters[0].name)
|
||||
g.players[0].equipment = [Prigione(0,0)]
|
||||
g.players[1].equipment = [Prigione(0,0)]
|
||||
g.players[g.turn].draw('')
|
||||
g.players[g.turn].hand = []
|
||||
g.players[g.turn].end_turn()
|
||||
assert g.players[g.turn].pending_action == PendingAction.PICK
|
||||
g.deck.cards.insert(0, Bang(Suit.SPADES,0))
|
||||
g.deck.cards.insert(1, Bang(Suit.HEARTS,0))
|
||||
g.players[g.turn].pick()
|
||||
assert g.players[g.turn].pending_action == PendingAction.DRAW
|
||||
|
||||
def test_PaulRegret():
|
||||
sio = DummySocket()
|
||||
g = Game('test', sio)
|
||||
ps = [Player(f'p{i}', f'p{i}', sio) for i in range(2)]
|
||||
for p in ps:
|
||||
g.add_player(p)
|
||||
g.start_game()
|
||||
test_chars = [Character('test_char', 2), PaulRegret()]
|
||||
for p in ps:
|
||||
p.available_characters = [test_chars.pop(0)]
|
||||
p.set_character(p.available_characters[0].name)
|
||||
pls = g.get_visible_players(g.players[0])
|
||||
assert len(pls) == 1
|
||||
assert pls[0]['name'] == g.players[1].name
|
||||
assert pls[0]['dist'] > g.players[0].get_sight()
|
||||
|
||||
def test_PedroRamirez():
|
||||
sio = DummySocket()
|
||||
g = Game('test', sio)
|
||||
ps = [Player(f'p{i}', f'p{i}', sio) for i in range(2)]
|
||||
for p in ps:
|
||||
g.add_player(p)
|
||||
g.start_game()
|
||||
test_chars = [Character('test_char', 4), PedroRamirez()]
|
||||
for p in ps:
|
||||
p.available_characters = [test_chars.pop(0)]
|
||||
p.set_character(p.available_characters[0].name)
|
||||
if not isinstance(g.players[g.turn].character, PedroRamirez):
|
||||
g.players[g.turn].draw('')
|
||||
g.players[g.turn].hand = []
|
||||
g.players[g.turn].end_turn()
|
||||
g.deck.scrap_pile.append(Bang(0,0))
|
||||
g.players[g.turn].hand = []
|
||||
g.players[g.turn].draw('scrap')
|
||||
assert len(g.players[g.turn].hand) == 2
|
||||
assert g.players[g.turn].hand[0].number == 0
|
||||
assert g.players[g.turn].hand[0].suit == 0
|
||||
assert isinstance(g.players[g.turn].hand[0], Bang)
|
||||
|
||||
def test_RoseDoolan():
|
||||
sio = DummySocket()
|
||||
g = Game('test', sio)
|
||||
ps = [Player(f'p{i}', f'p{i}', sio) for i in range(2)]
|
||||
for p in ps:
|
||||
g.add_player(p)
|
||||
g.start_game()
|
||||
test_chars = [Character('test_char', 2), RoseDoolan()]
|
||||
for p in ps:
|
||||
p.available_characters = [test_chars.pop(0)]
|
||||
p.set_character(p.available_characters[0].name)
|
||||
g.players[0].equipment = [Mustang(0,0)]
|
||||
g.players[0].notify_self()
|
||||
pls = g.get_visible_players(g.players[1])
|
||||
print(pls)
|
||||
assert len(pls) == 1
|
||||
assert pls[0]['name'] != g.players[1].name
|
||||
assert pls[0]['dist'] <= g.players[1].get_sight()
|
||||
|
||||
def test_SidKetchum():
|
||||
sio = DummySocket()
|
||||
g = Game('test', sio)
|
||||
ps = [Player(f'p{i}', f'p{i}', sio) for i in range(2)]
|
||||
for p in ps:
|
||||
g.add_player(p)
|
||||
g.start_game()
|
||||
test_chars = [Character('test_char', 4), SidKetchum()]
|
||||
for p in ps:
|
||||
p.available_characters = [test_chars.pop(0)]
|
||||
p.set_character(p.available_characters[0].name)
|
||||
if not isinstance(g.players[g.turn].character, SidKetchum):
|
||||
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].lives = 1
|
||||
g.players[g.turn].scrap(0)
|
||||
assert g.players[g.turn].lives == 1
|
||||
g.players[g.turn].scrap(0)
|
||||
assert g.players[g.turn].lives == 2
|
||||
|
||||
def test_SlabTheKiller():
|
||||
sio = DummySocket()
|
||||
g = Game('test', sio)
|
||||
ps = [Player(f'p{i}', f'p{i}', sio) for i in range(2)]
|
||||
for p in ps:
|
||||
g.add_player(p)
|
||||
g.start_game()
|
||||
test_chars = [Character('test_char', 4), SlabTheKiller()]
|
||||
for p in ps:
|
||||
p.available_characters = [test_chars.pop(0)]
|
||||
p.set_character(p.available_characters[0].name)
|
||||
if not isinstance(g.players[g.turn].character, SlabTheKiller):
|
||||
g.players[g.turn].draw('')
|
||||
g.players[g.turn].hand = [Mancato(0,0)]
|
||||
g.players[g.turn].end_turn()
|
||||
g.players[g.turn].draw('')
|
||||
g.players[g.turn].hand = [Bang(0,0)]
|
||||
g.players[g.turn].play_card(0, g.players[(g.turn+1)%2].name)
|
||||
assert g.players[(g.turn+1)%2].pending_action == PendingAction.RESPOND
|
||||
g.players[(g.turn+1)%2].respond(0)
|
||||
assert g.players[(g.turn+1)%2].pending_action == PendingAction.RESPOND
|
||||
g.players[(g.turn+1)%2].respond(-1)
|
||||
assert g.players[(g.turn+1)%2].pending_action == PendingAction.WAIT
|
||||
assert g.players[(g.turn+1)%2].lives == 3
|
||||
|
||||
def test_SuzyLafayette():
|
||||
sio = DummySocket()
|
||||
g = Game('test', sio)
|
||||
ps = [Player(f'p{i}', f'p{i}', sio) for i in range(2)]
|
||||
for p in ps:
|
||||
g.add_player(p)
|
||||
g.start_game()
|
||||
test_chars = [Character('test_char', 4), SuzyLafayette()]
|
||||
for p in ps:
|
||||
p.available_characters = [test_chars.pop(0)]
|
||||
p.set_character(p.available_characters[0].name)
|
||||
g.players[1].hand = []
|
||||
assert len(g.players[1].hand) == 0
|
||||
g.players[1].notify_self()
|
||||
assert len(g.players[1].hand) == 1
|
||||
g.players[g.turn].end_turn()
|
||||
|
||||
def test_VultureSam():
|
||||
sio = DummySocket()
|
||||
|
Loading…
Reference in New Issue
Block a user