def test_passing_to_next_step_passes_automatic_steps(): global messages messages = [] new_game = Game() new_game.bus.subscribe('step_started', on_step_started) cards_a = [Land("Some card", "green")] * 20 deck_a = Deck("deck a", cards_a) bernardo = Player(name="Bernardo", deck=deck_a) cards_b = [Land("Some card", "black")] * 20 deck_b = Deck("deck a", cards_b) john = Player(name="John", deck=deck_b) new_game.add_player(bernardo) new_game.add_player(john) new_game.initialize() new_game.move_to_next_step() assert 'declare_attackers_step_started' in messages
def test_can_pass_to_next_phase(): global messages messages = [] new_game = Game() new_game.bus.subscribe('phase_started', on_phase_started) cards_a = [Land("Some card", "green")] * 20 deck_a = Deck("deck a", cards_a) bernardo = Player(name="Bernardo", deck=deck_a) cards_b = [Land("Some card", "black")] * 20 deck_b = Deck("deck a", cards_b) john = Player(name="John", deck=deck_b) new_game.add_player(bernardo) new_game.add_player(john) new_game.initialize() new_game.move_to_next_step() assert 'combat_phase_started' in messages
def test_passing_to_next_step_enough_times_passes_to_main_of_another_player(): global messages messages = [] new_game = Game() new_game.bus.subscribe('step_started', on_step_started) cards_a = [Land("Some card", "green")] * 20 deck_a = Deck("deck a", cards_a) bernardo = Player(name="Bernardo", deck=deck_a) cards_b = [Land("Some card", "black")] * 20 deck_b = Deck("deck a", cards_b) john = Player(name="John", deck=deck_b) new_game.add_player(bernardo) new_game.add_player(john) new_game.initialize() new_game.move_to_next_step() #combat - declare_attackers new_game.move_to_next_step() #combat - declare_blockers new_game.move_to_next_step() #combat - damage new_game.move_to_next_step() #main - main new_game.move_to_next_step() #main - main (other player) assert new_game.positions[new_game.current_position].player is john
def test_passing_through_cleanup_step_clears_mana(): global messages messages = [] new_game = Game() new_game.bus.subscribe('step_started', on_step_started) cards_a = [Land("Some card", "green")] * 20 deck_a = Deck("deck a", cards_a) bernardo = Player(name="Bernardo", deck=deck_a) cards_b = [Land("Some card", "black")] * 20 deck_b = Deck("deck a", cards_b) john = Player(name="John", deck=deck_b) new_game.add_player(bernardo) new_game.add_player(john) new_game.initialize() new_game.positions[0].mana["green"] = 10 new_game.positions[0].mana["blue"] = 10 new_game.positions[0].mana["red"] = 10 new_game.positions[0].mana["black"] = 10 new_game.positions[0].mana["white"] = 10 new_game.positions[0].mana["colorless"] = 10 new_game.move_to_next_step() #combat - declare_attackers new_game.move_to_next_step() #combat - declare_blockers new_game.move_to_next_step() #combat - damage new_game.move_to_next_step() #main - main new_game.move_to_next_step() #main - main (other player) assert new_game.positions[0].mana["green"] == 0 assert new_game.positions[0].mana["blue"] == 0 assert new_game.positions[0].mana["red"] == 0 assert new_game.positions[0].mana["black"] == 0 assert new_game.positions[0].mana["white"] == 0 assert new_game.positions[0].mana["colorless"] == 0
def test_player_can_play_two_lands_in_different_turns(): new_game = Game() bernardo = Player(name="Bernardo", deck=deepcopy(data.green_land_deck)) john = Player(name="John", deck=data.black_land_deck) new_game.add_player(bernardo) new_game.add_player(john) new_game.initialize() land_to_play = bernardo.position.hand[0] bernardo.play(land_to_play) new_game.move_to_next_step() #combat - declare_attackers new_game.move_to_next_step() #combat - declare_blockers new_game.move_to_next_step() #combat - damage new_game.move_to_next_step() #main - main new_game.move_to_next_step() #main - main (other player) new_game.move_to_next_step() #combat - declare_attackers new_game.move_to_next_step() #combat - declare_blockers new_game.move_to_next_step() #combat - damage new_game.move_to_next_step() #main - main new_game.move_to_next_step() #main - main (other player) land_to_play = bernardo.position.hand[0] bernardo.play(land_to_play) assert len(bernardo.position.hand) == 5 assert len(bernardo.position.battlefield) == 2 assert bernardo.position.battlefield[1] == land_to_play