class TestModifiersModifying(DefaultCharacter):

    def test_dex_adds_armor(self):
        for score in range(1,20):
            self.character.stat("dex",score)
            self.assertEqual(self.character.armor_class(),
                    DEFAULT_ARMOR_CLASS + self.character.stat_mod("dex"))

    @patch("evercraft.roll", return_value=10)
    def test_roll_str_modifier(self, __):
        for score in range(1,20):
            result = self.character.roll_stat("str")
            self.assertEqual(result, 10 + self.character.stat_mod("str"))

    @patch("evercraft.roll", return_value=19)
    def test_str_adds_damage(self, __):
        self.character.stat("str",20)
        self.opponent = Character()
        self.character.attack(self.opponent)
        self.assertEqual(self.opponent.hit_points(), 
                DEFAULT_HIT_POINTS - (DEFAULT_DAMAGE + 5))

    def test_con_adds_hit_points(self):
        for score in range(1,20):
            self.assertEqual(self.character.hit_points(),
                DEFAULT_HIT_POINTS + self.character.stat_mod("con"))