def test_hero_add_multi_ability(): big_strength = superheroes.Abilities("Overwhelming Strength", 300) speed = superheroes.Abilities("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 "Abilities" in str(Athena.abilities[0]) assert Athena.abilities[0].name == "Overwhelming Strength"
def test_hero_attack_ability(): big_strength = superheroes.Abilities("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.Abilities("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.Abilities("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.Abilities("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 test_hero_ability_attack_standard_deviation(): willow_waffle = superheroes.Hero("Willow Waffle") strength = random.randint(400, 30000) willow = superheroes.Abilities("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_hero_ability_attack_mean_value(): athena = superheroes.Hero("Athena") strength = random.randint(10, 30000) big_strength = superheroes.Abilities("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_ability_name(): # Test for Correct Name big_strength = superheroes.Abilities("Overwhelming Strength", 300) assert big_strength.name == "Overwhelming Strength"
def test_ability_instance(): # Test instantiation without error big_strength = superheroes.Abilities("Overwhelming Strength", 300) assert big_strength