def test_hero_defend_multi_armor(): jodie = superhero.Hero("Jodie Foster") gauntlets = superhero.Armor("Gauntlets", 4000) science = superhero.Armor("Science", 9000) jodie.add_armor(gauntlets) jodie.add_armor(science) defend = jodie.defend() assert defend <= 13000 and defend >= 0
def test_hero_defense_mean_value(): athena = superhero.Hero("Athena") strength = random.randint(400, 30000) big_strength = superhero.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 create_armor(): armors = [ "Calculator", "Laser Shield", "Invisibility", "SFPD Strike Force", "Social Workers", "Face Paint", "Damaskus Shield", "Bamboo Wall", "Forced Projection", "Thick Fog", "Wall of Will", "Wall of Walls", "Obamacare", "Thick Goo" ] name = armors[random.randint(0, len(armors) - 1)] power = random.randint(23, 700000) return superhero.Armor(name, power)
def test_team_attack_deaths(): team_one = superhero.Team("One") jodie = superhero.Hero("Jodie Foster") aliens = superhero.Ability("Alien Friends", 10000) jodie.add_ability(aliens) team_one.add_hero(jodie) team_two = superhero.Team("Two") athena = superhero.Hero("Athena") socks = superhero.Armor("Socks", 10) athena.add_armor(socks) team_two.add_hero(athena) assert team_two.heroes[0].deaths == 0
def test_team_attack(): team_one = superhero.Team("One") jodie = superhero.Hero("Jodie Foster") aliens = superhero.Ability("Alien Friends", 10000) jodie.add_ability(aliens) team_one.add_hero(jodie) team_two = superhero.Team("Two") athena = superhero.Hero("Athena") socks = superhero.Armor("Socks", 10) athena.add_armor(socks) team_two.add_hero(athena) assert team_two.heros[0].current_health == 100 team_one.attack(team_two) assert team_two.heros[0].current_health <= 0
def test_hero_defense_standard_deviation(): willow_waffle = superhero.Hero("Willow Waffle") strength = random.randint(400, 30000) willow = superhero.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_hero_equip_armor(): jodie = superhero.Hero("Jodie Foster") gauntlets = superhero.Armor("Gauntlets", 30) jodie.add_armor(gauntlets) assert len(jodie.armors) == 1 assert jodie.armors[0].name == "Gauntlets"
def test_dead_hero_defense(): hero = superhero.Hero("Vlaad", 0) garlic = superhero.Armor("Garlic", 30000) hero.add_ability(garlic) assert hero.defend() == 0
def test_hero_defense(): jodie = superhero.Hero("Jodie Foster") gauntlets = superhero.Armor("Gauntlets", 30) jodie.add_armor(gauntlets) defense = jodie.defend() assert defense >= 0 and defense <= 30