mirror of
https://github.com/vcmi/vcmi.git
synced 2025-03-21 21:17:49 +02:00
This commit is contained in:
parent
d2de94b811
commit
e7bced112c
@ -68,7 +68,7 @@ bool Heal::isValidTarget(const Mechanics * m, const battle::Unit * unit) const
|
|||||||
|
|
||||||
if(minFullUnits > 0)
|
if(minFullUnits > 0)
|
||||||
{
|
{
|
||||||
auto hpGained = m->getEffectValue();
|
auto hpGained = std::min(m->getEffectValue(), insuries);
|
||||||
if(hpGained < minFullUnits * unit->MaxHealth())
|
if(hpGained < minFullUnits * unit->MaxHealth())
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -73,6 +73,88 @@ TEST_F(HealTest, ApplicableToWoundedUnit)
|
|||||||
EXPECT_TRUE(subject->applicable(problemMock, &mechanicsMock, target));
|
EXPECT_TRUE(subject->applicable(problemMock, &mechanicsMock, target));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(HealTest, ApplicableIfActuallyResurrects)
|
||||||
|
{
|
||||||
|
{
|
||||||
|
JsonNode config(JsonNode::JsonType::DATA_STRUCT);
|
||||||
|
config["healLevel"].String() = "resurrect";
|
||||||
|
config["minFullUnits"].Integer() = 5;
|
||||||
|
EffectFixture::setupEffect(config);
|
||||||
|
}
|
||||||
|
|
||||||
|
auto & unit = unitsFake.add(BattleSide::ATTACKER);
|
||||||
|
unit.makeAlive();
|
||||||
|
EXPECT_CALL(unit, isValidTarget(Eq(true))).WillOnce(Return(true));
|
||||||
|
EXPECT_CALL(unit, getTotalHealth()).WillOnce(Return(20000));
|
||||||
|
EXPECT_CALL(unit, getAvailableHealth()).WillOnce(Return(100));
|
||||||
|
|
||||||
|
EXPECT_CALL(mechanicsMock, getEffectValue()).Times(AtLeast(1)).WillRepeatedly(Return(1000));
|
||||||
|
EXPECT_CALL(mechanicsMock, isSmart()).WillOnce(Return(false));
|
||||||
|
EXPECT_CALL(mechanicsMock, ownerMatches(Eq(&unit))).WillOnce(Return(true));
|
||||||
|
|
||||||
|
unit.addNewBonus(std::make_shared<Bonus>(Bonus::PERMANENT, Bonus::STACK_HEALTH, Bonus::CREATURE_ABILITY, 200, 0));
|
||||||
|
unitsFake.setDefaultBonusExpectations();
|
||||||
|
|
||||||
|
EffectTarget target;
|
||||||
|
target.emplace_back(&unit, BattleHex());
|
||||||
|
|
||||||
|
EXPECT_TRUE(subject->applicable(problemMock, &mechanicsMock, target));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(HealTest, NotApplicableIfNotEnoughCasualties)
|
||||||
|
{
|
||||||
|
{
|
||||||
|
JsonNode config(JsonNode::JsonType::DATA_STRUCT);
|
||||||
|
config["healLevel"].String() = "resurrect";
|
||||||
|
config["minFullUnits"].Integer() = 1;
|
||||||
|
EffectFixture::setupEffect(config);
|
||||||
|
}
|
||||||
|
|
||||||
|
auto & unit = unitsFake.add(BattleSide::ATTACKER);
|
||||||
|
EXPECT_CALL(unit, isValidTarget(Eq(true))).WillOnce(Return(true));
|
||||||
|
EXPECT_CALL(unit, getTotalHealth()).WillOnce(Return(200));
|
||||||
|
EXPECT_CALL(unit, getAvailableHealth()).WillOnce(Return(100));
|
||||||
|
|
||||||
|
EXPECT_CALL(mechanicsMock, getEffectValue()).Times(AtLeast(1)).WillRepeatedly(Return(999));
|
||||||
|
EXPECT_CALL(mechanicsMock, isSmart()).WillRepeatedly(Return(false));
|
||||||
|
EXPECT_CALL(mechanicsMock, ownerMatches(Eq(&unit))).WillRepeatedly(Return(true));
|
||||||
|
|
||||||
|
unit.addNewBonus(std::make_shared<Bonus>(Bonus::PERMANENT, Bonus::STACK_HEALTH, Bonus::CREATURE_ABILITY, 200, 0));
|
||||||
|
unitsFake.setDefaultBonusExpectations();
|
||||||
|
|
||||||
|
EffectTarget target;
|
||||||
|
target.emplace_back(&unit, BattleHex());
|
||||||
|
|
||||||
|
EXPECT_FALSE(subject->applicable(problemMock, &mechanicsMock, target));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(HealTest, NotApplicableIfResurrectsLessThanRequired)
|
||||||
|
{
|
||||||
|
{
|
||||||
|
JsonNode config(JsonNode::JsonType::DATA_STRUCT);
|
||||||
|
config["healLevel"].String() = "resurrect";
|
||||||
|
config["minFullUnits"].Integer() = 5;
|
||||||
|
EffectFixture::setupEffect(config);
|
||||||
|
}
|
||||||
|
|
||||||
|
auto & unit = unitsFake.add(BattleSide::ATTACKER);
|
||||||
|
EXPECT_CALL(unit, isValidTarget(Eq(true))).WillOnce(Return(true));
|
||||||
|
EXPECT_CALL(unit, getTotalHealth()).WillOnce(Return(20000));
|
||||||
|
EXPECT_CALL(unit, getAvailableHealth()).WillOnce(Return(100));
|
||||||
|
|
||||||
|
EXPECT_CALL(mechanicsMock, getEffectValue()).Times(AtLeast(1)).WillRepeatedly(Return(999));
|
||||||
|
EXPECT_CALL(mechanicsMock, isSmart()).WillRepeatedly(Return(false));
|
||||||
|
EXPECT_CALL(mechanicsMock, ownerMatches(Eq(&unit))).WillRepeatedly(Return(true));
|
||||||
|
|
||||||
|
unit.addNewBonus(std::make_shared<Bonus>(Bonus::PERMANENT, Bonus::STACK_HEALTH, Bonus::CREATURE_ABILITY, 200, 0));
|
||||||
|
unitsFake.setDefaultBonusExpectations();
|
||||||
|
|
||||||
|
EffectTarget target;
|
||||||
|
target.emplace_back(&unit, BattleHex());
|
||||||
|
|
||||||
|
EXPECT_FALSE(subject->applicable(problemMock, &mechanicsMock, target));
|
||||||
|
}
|
||||||
|
|
||||||
TEST_F(HealTest, ApplicableToDeadUnit)
|
TEST_F(HealTest, ApplicableToDeadUnit)
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user