def test_hero_add_multi_ability(): big_strength = superheroes.Ability("Overwhelming Strength", 300) speed = superheroes.Ability("Lightning Speed", 500) Athena = superheroes.Hero("Athena") assert len(Athena.abilities) == 0 Athena.add_ability(big_strength) assert len(Athena.abilities) == 1 Athena.add_ability(speed) assert len(Athena.abilities) == 2 # Check for correct type assert "Ability" in str(Athena.abilities[0]) assert Athena.abilities[0].name == "Overwhelming Strength"
def test_hero_ability_attack_mean_value(): athena = superheroes.Hero("Athena") strength = random.randint(10, 30000) big_strength = superheroes.Ability("Overwhelming Strength", strength) athena.add_ability(big_strength) calculated_mean = strength // 2 iterations = 6000 accepted_window = 400 total_attack = 0 for _ in range(iterations): attack_value = athena.attack() assert attack_value >= 0 and attack_value <= strength total_attack += attack_value actual_mean = total_attack / iterations print("Max Allowed Damage: {}".format(strength)) print("Attacks Tested: {}".format(iterations)) print("Mean -- calculated: {} | actual: {}".format(calculated_mean, actual_mean)) print("Acceptable Distance from Mean: {} | Average distance from mean: {}". format(accepted_window, abs(calculated_mean - actual_mean))) print("Acceptable min attack: {} | Acceptable max attack: {}".format( actual_mean - accepted_window, actual_mean + accepted_window)) assert actual_mean <= calculated_mean + \ accepted_window and actual_mean >= calculated_mean - accepted_window
def test_hero_attack_ability(): big_strength = superheroes.Ability("Overwhelming Strength", 30000) athena = superheroes.Hero("Athena") assert athena.attack() == 0 athena.add_ability(big_strength) attack = athena.attack() assert attack <= 30000 and attack >= 0
def test_ability_attack(): # Test for correct attack value test_runs = 400 big_strength = superheroes.Ability("Overwhelming Strength", 400) for _ in range(0, test_runs): attack = big_strength.attack() assert attack >= 0 and attack <= 400
def test_hero_weapon_ability_attack(): quickness = superheroes.Ability("Quickness", 1300) sword_of_truth = superheroes.Weapon("Sword of Truth", 700) Athena = superheroes.Hero("Athena") Athena.add_ability(quickness) Athena.add_ability(sword_of_truth) assert len(Athena.abilities) == 2 attack_avg(Athena, 0, 2000)
def test_hero_attack_weapon(): big_strength = superheroes.Ability("Overwhelming Strength", 200) Athena = superheroes.Hero("Athena") Athena.add_ability(big_strength) test_runs = 100 for _ in range(0, test_runs): attack = big_strength.attack() assert attack <= 200 and attack >= 0
def create_ability(): abilities = [ "Alien Attack", "Science", "Star Power", "Immortality", "Grandmas Cookies", "Blinding Strength", "Cute Kittens", "Team Morale", "Luck", "Obsequious Destruction", "The Kraken", "The Fire of A Million Suns", "Team Spirit", "Canada" ] name = abilities[random.randint(0, len(abilities) - 1)] power = random.randint(45, 700000) return superheroes.Ability(name, power)
def test_team_attack_deaths(): team_one = superheroes.Team("One") jodie = superheroes.Hero("Jodie Foster") aliens = superheroes.Ability("Alien Friends", 10000) jodie.add_ability(aliens) team_one.add_hero(jodie) team_two = superheroes.Team("Two") athena = superheroes.Hero("Athena") socks = superheroes.Armor("Socks", 10) athena.add_armor(socks) team_two.add_hero(athena) assert team_two.members[0].deaths == 0 team_two.kill_team() assert team_two.members[0].deaths == 1
def test_hero_ability_attack_standard_deviation(): willow_waffle = superheroes.Hero("Willow Waffle") strength = random.randint(400, 30000) willow = superheroes.Ability("Willowness", strength) willow_waffle.add_ability(willow) attacks = list() total_attack = 0 number_tests = 1000 for _ in range(number_tests): cur_attack = willow_waffle.attack() attacks.append(cur_attack) total_attack += cur_attack mean = total_attack / number_tests # Get Square Deviations for index, value in enumerate(attacks): attacks[index] = math.pow(value - mean, 2) standard_dev = math.sqrt(sum(attacks) / len(attacks)) print( "Standard Deviation Cannot be 0.\nRandom Numbers not generated for attack." ) assert standard_dev != 0.0
def test_ability_name(): # Test for Correct Name big_strength = superheroes.Ability("Overwhelming Strength", 300) assert big_strength.name == "Overwhelming Strength"
def test_ability_instance(): # Test instantiation without error big_strength = superheroes.Ability("Overwhelming Strength", 300) assert big_strength