def test_objects_dont_affect_each_other(self): blank1 = Stats() blank2 = Stats() self.assertEqual(blank1.sum_stat(), 0) self.assertEqual(blank2.sum_stat(), 0) blank2.increase_stat('Tech', 2) self.assertEqual(blank1.sum_stat(), 0) self.assertEqual(blank2.sum_stat(), 2)
def test_stat_doesnt_modify_dictionary(self): my_dict = {'Tech': 3, 'Contract': 2} copy = my_dict.copy() not_blank = Stats(my_dict) self.assertEqual(not_blank.sum_stat(), 5) self.assertEqual(copy['Tech'], my_dict['Tech']) not_blank.increase_stat('Tech', 2) self.assertEqual(not_blank.sum_stat(), 7) self.assertEqual(copy['Tech'], my_dict['Tech'])
class Reward: def __init__(self, name, reward_type, stats=None, materials=0, rewards=None, obtainable=True, essential=False): self.name = name self.reward_type = reward_type self.stat_requirement = Stats(stats) or Stats(empty_stats) self.material_requirement = materials self.reward_requirement = rewards or [] self.obtainable = obtainable self.essential = essential def meets_requirements(self, stats, rewards=None, team=None, material=0): rewards = rewards or [] return self.meets_stat_requirements(stats) and\ self.meets_reward_requirements(rewards) and\ self.meets_type_requirements(team) and\ self.meets_material_requirements(material) and\ self.obtainable def meets_type_requirements(self, team=None): if team is not None: if self.reward_type not in preset_reward_types[team]: return False return True def meets_material_requirements(self, material): return self.material_requirement <= material def meets_stat_requirements(self, stats): return stats.meets(self.stat_requirement) def meets_reward_requirements(self, rewards=None): required_rewards = rewards or [] meets = True for reward in self.reward_requirement: if reward not in required_rewards: meets = False break return meets def total_requirements(self): return self.stat_requirement.sum_stat() + self.material_requirement
def test_does_not_accept_incorrect_stat_names(self): stat = Stats({'Tech': 2, 'whatever': 5}) self.assertEqual(len(stat.stat_dict.keys()), 7) self.assertEqual('whatever' in stat.stat_dict.keys(), False) self.assertEqual(stat.sum_stat(), 2)
def test_stat_sum(self): empty = Stats() self.assertEqual(empty.sum_stat(), 0) full = Stats({'Tech': 2, 'Contract': 4}) self.assertEqual(full.sum_stat(), 6)