def test_player2_wins_double_rolls(mock_throw, mock_throw_twice):
    player1 = Player("tester1", Bulbasaur())
    player2 = Player("tester2", Charmander())
    fight = Fight(player1, player2)

    fight_results = fight.start()
    assert fight_results.winner == player2
    assert fight_results.winner_throws == [1, 6]
    assert fight_results.loser == player1
    assert fight_results.loser_throws == [5]
def test_player1_wins_single_rolls(mock_randint):
    player1 = Player("tester1", Charmander())
    player2 = Player("tester2", Charmander())
    fight = Fight(player1, player2)

    fight_results = fight.start()
    assert fight_results.winner == player1
    assert fight_results.winner_throws == [5]
    assert fight_results.loser == player2
    assert fight_results.loser_throws == [1]
def test_no_winner_or_loser_values_with_draw(mock_randint):
    player1 = Player("tester1", Charmander())
    player2 = Player("tester2", Charmander())
    fight = Fight(player1, player2)

    fight_results = fight.start()
    assert fight_results.winner is None
    assert fight_results.loser is None
    assert player1 in fight_results.draw and player2 in fight_results.draw
    assert fight_results.draw_throw == [1]
def test_no_draw_values_with_winner(mock_randint):
    player1 = Player("tester1", Charmander())
    player2 = Player("tester2", Charmander())
    fight = Fight(player1, player2)

    fight_results = fight.start()
    assert fight_results.draw is None
    assert fight_results.draw_throw is None
    assert fight_results.winner is not None
    assert fight_results.loser is not None