Пример #1
0
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
Пример #2
0
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
Пример #3
0
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
Пример #4
0
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
Пример #5
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