def test_hero_defense_mean_value(): athena = Hero("Athena") strength = random.randint(400, 30000) big_strength = Armor("Overwhelming Shield", strength) athena.add_armor(big_strength) calculated_mean = strength // 2 iterations = 8000 total_attack = 0 accepted_window = 400 for _ in range(iterations): attack_value = athena.defend() assert attack_value >= 0 and attack_value <= strength total_attack += attack_value actual_mean = total_attack / iterations print("Max Allowed: {}".format(strength)) print("Defenses Tested: {}".format(iterations)) print("Mean -- calculated: {} | actual: {}".format(calculated_mean, actual_mean)) print( "Acceptable deviation from mean: {} | Current deviation from mean: {}".format( accepted_window, abs( calculated_mean - actual_mean))) print( "Acceptable Min: {} | Acceptable Max: {}".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_defend_multi_armor(): jodie = Hero("Jodie Foster") gauntlets = Armor("Gauntlets", 4000) science = Armor("Science", 9000) jodie.add_armor(gauntlets) jodie.add_armor(science) defend = jodie.defend() assert defend <= 13000 and defend >= 0
def test_hero_defense_standard_deviation(): willow_waffle = Hero("Willow Waffle") strength = random.randint(400, 30000) willow = Armor("Willowness", strength) willow_waffle.add_armor(willow) defenses = list() total_defend = 0 number_tests = 100 for _ in range(number_tests): defense = willow_waffle.defend() defenses.append(defense) total_defend += defense mean = total_defend / number_tests # Get Square Deviations for index, value in enumerate(defenses): defenses[index] = math.pow(value - mean, 2) standard_dev = math.sqrt(sum(defenses) / len(defenses)) print("Hero Armor must block with random value.") print("Standard Deviation Cannot be 0.") assert standard_dev != 0.0
def test_dead_hero_defense(): hero = Hero("Vlaad", 0) defense_amount = 30000 garlic = Armor("Garlic", defense_amount) hero.add_ability(garlic) assert hero.defend() == 0
def test_hero_defense(): jodie = Hero("Jodie Foster") gauntlets = Armor("Gauntlets", 30) jodie.add_armor(gauntlets) defense = jodie.defend() assert defense >= 0 and defense <= 30
def test_dead_hero_defense(): hero = Hero("Vlaad", 0) garlic = Armor("Garlic", 30000) hero.add_ability(garlic) assert hero.defend() == 0
def test_armor(): armor = Hero("The Ring", 200) for _ in range(0, 500): defense = armor.defend() assert defense <= 200 and defense >= 0