Для того, чтобы все галочки загорались, необходимо в методе takeDamage изменить условие, при котором герой умирает. Вместо сравнения if (health - (damage - protection) == 0 || health - (damage - protection) < 0) необходимо сравнивать if (health - (damage - protection) <= 0). Также, чтобы успешно пройти тесты, необходимо внести изменения в метод facePunch и передавать ему аргумент 1 вместо damage. Вот исправленный код:
public void takeDamage(Integer damage) throws PersonDead, Exception {
if (damage < 0){
throw new PersonDead("");
}
this.health -= damage - protection;
if (health <= 0){
throw new PersonDead("");
}
}
Integer facePunch() throws Exception, PersonDead {
takeDamage(1);
return health;
}
Также необходимо исправить значение здоровья и защиты у объекта Mage. Вот исправленный код класса Mage:
class Mage extends Person {
Mage(String name) {
super(name);
this.health = 100;
this.protection = 15;
}
void fireBall(Person person) throws PersonDead, Exception {
person.takeDamage(20);
}
}
После внесения этих изменений все тесты должны проходить успешно.
this.health -= damage - protection;
if (health - (damage - protection) == 0 || health - (damage - protection) < 0){
throw new PersonDead("");
}
if (damage < 0){
throw new PersonDead("");
}
}
Integer facePunch() throws Exception, PersonDead {
takeDamage(1);
return health;
}
Что в итоге мне вывело.
Tests for Person
TEST CASE Person: Имеет 50 здоровья и 0 защиты ✅
TEST CASE Person: announce() содержит имя ✅
TEST CASE Person: announce() содержит здоровье ✅
TEST CASE Person: announce() содержит защиту ✅
TEST CASE Person: facePunch() наносит 1 урон ❌
TEST CASE Person: takeDamage() здоровье не опускается меньше нуля ❌
TEST CASE Person: Вызов PersonDead() ✅
Tests for Mage
TEST CASE Mage: наследуется от Person ✅
TEST CASE Mage: Имеет 100 здоровья и 15 защиты ❌
TEST CASE Mage: announce() содержит имя ✅
TEST CASE Mage: announce() содержит здоровье ✅
TEST CASE Mage: announce() содержит защиту ✅
Exception in thread "main" org.future.code.homework.HomeWork5$PersonDead:
at org.future.code.homework.HomeWork5$Person.takeDamage(HomeWork5.java:69)
at org.future.code.homework.HomeWork5$Mage.takeDamage(HomeWork5.java:112)
at org.future.code.homework.HomeWork5$Mage.fireBall(HomeWork5.java:116)
at org.future.code.homework.HomeWork5.main(HomeWork5.java:179)