From 7825a7ac850ff8267a440ac970df28871c6e92e1 Mon Sep 17 00:00:00 2001 From: Alberto Xamin Date: Thu, 19 Aug 2021 11:18:08 +0300 Subject: [PATCH] add some character test --- backend/tests/character_test.py | 148 ++++++++++++++++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 backend/tests/character_test.py diff --git a/backend/tests/character_test.py b/backend/tests/character_test.py new file mode 100644 index 0000000..c3fbefd --- /dev/null +++ b/backend/tests/character_test.py @@ -0,0 +1,148 @@ +from random import randint +from bang.characters import * +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 * + +def test_bartcassidy(): + 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), BartCassidy()] + 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, BartCassidy): + 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)] + 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 + +def test_blackjack(): + sio = DummySocket() + g = Game('test', sio) + ps = [Player(f'p{i}', f'p{i}', sio) for i in range(1)] + for p in ps: + g.add_player(p) + g.start_game() + test_chars = [BlackJack()] + for p in ps: + p.available_characters = [test_chars.pop(0)] + p.set_character(p.available_characters[0].name) + g.players[g.turn].hand = [] + g.deck.cards.insert(1, Bang(Suit.HEARTS, 1)) + g.players[g.turn].draw('') + assert len(g.players[g.turn].hand) == 3 + g.players[g.turn].hand = [] + g.players[g.turn].end_turn() + g.deck.cards.insert(1, Bang(Suit.CLUBS, 1)) + g.players[g.turn].draw('') + assert len(g.players[g.turn].hand) == 2 + g.players[g.turn].hand = [] + g.players[g.turn].end_turn() + g.deck.cards.insert(1, Bang(Suit.DIAMONDS, 1)) + g.players[g.turn].draw('') + assert len(g.players[g.turn].hand) == 3 + g.players[g.turn].hand = [] + g.players[g.turn].end_turn() + g.deck.cards.insert(1, Bang(Suit.SPADES, 1)) + g.players[g.turn].draw('') + assert len(g.players[g.turn].hand) == 2 + g.players[g.turn].hand = [] + g.players[g.turn].end_turn() + +def test_calamityjanet(): + 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), CalamityJanet()] + 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, CalamityJanet): + 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('') + 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) + g.players[g.turn].end_turn() + g.players[g.turn].draw('') + g.players[g.turn].hand = [Mancato(0,0)] + 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_VultureSam(): + 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() + test_chars = [Character('test_char', 4), Character('test_char', 4), VultureSam()] + 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, VultureSam): + g.players[g.turn].draw('') + g.players[g.turn].hand = [Bang(0,0), Bang(0,0), Bang(0,0), Bang(0,0)] + g.players[g.turn].end_turn() + while not isinstance(g.players[g.turn].character, VultureSam): + g.players[g.turn].draw('') + g.players[g.turn].hand = [Bang(0,0), Bang(0,0), Bang(0,0), Bang(0,0)] + g.players[g.turn].lives = 0 + g.players[g.turn].notify_self() + assert len(g.players[2].hand) == 8 + return + +def test_WillyTheKid(): + 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), WillyTheKid()] + 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, WillyTheKid): + 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), Bang(0,0), Bang(0,0)] + g.players[g.turn].play_card(0, g.players[(g.turn+1)%2].name) + assert g.players[(g.turn+1)%2].lives == 3 + g.players[g.turn].play_card(0, g.players[(g.turn+1)%2].name) + assert g.players[(g.turn+1)%2].lives == 2 + g.players[g.turn].play_card(0, g.players[(g.turn+1)%2].name) + assert g.players[(g.turn+1)%2].lives == 1 \ No newline at end of file