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'])
Beispiel #3
0
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)