SpellEffectConditionTest.cpp 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. /*
  2. * SpellEffectConditionTest.cpp, part of VCMI engine
  3. *
  4. * Authors: listed in file AUTHORS in main folder
  5. *
  6. * License: GNU General Public License v2.0 or later
  7. * Full text of license available in license.txt file, in main folder
  8. *
  9. */
  10. #include "StdInc.h"
  11. #include "TargetConditionItemFixture.h"
  12. namespace test
  13. {
  14. using namespace ::spells;
  15. using namespace ::testing;
  16. class SpellEffectConditionTest : public TargetConditionItemTest
  17. {
  18. public:
  19. void setDefaultExpectations()
  20. {
  21. EXPECT_CALL(unitMock, getAllBonuses(_, _, _, _)).Times(AtLeast(1));
  22. EXPECT_CALL(unitMock, getTreeVersion()).Times(AtLeast(0));
  23. }
  24. void SetUp() override
  25. {
  26. TargetConditionItemTest::SetUp();
  27. subject = TargetConditionItemFactory::getDefault()->createConfigurable("core", "spell", "age");
  28. GTEST_ASSERT_NE(subject, nullptr);
  29. }
  30. };
  31. TEST_F(SpellEffectConditionTest, ImmuneByDefault)
  32. {
  33. setDefaultExpectations();
  34. EXPECT_FALSE(subject->isReceptive(&mechanicsMock, &unitMock));
  35. }
  36. TEST_F(SpellEffectConditionTest, ReceptiveIfHasEffectFromDesiredSpell)
  37. {
  38. setDefaultExpectations();
  39. unitBonuses.addNewBonus(std::make_shared<Bonus>(BonusDuration::ONE_BATTLE, BonusType::STACK_HEALTH, BonusSource::SPELL_EFFECT, 3, BonusSourceID(SpellID(SpellID::AGE))));
  40. EXPECT_TRUE(subject->isReceptive(&mechanicsMock, &unitMock));
  41. }
  42. TEST_F(SpellEffectConditionTest, ImmuneIfHasEffectFromOtherSpell)
  43. {
  44. setDefaultExpectations();
  45. unitBonuses.addNewBonus(std::make_shared<Bonus>(BonusDuration::ONE_BATTLE, BonusType::STACK_HEALTH, BonusSource::SPELL_EFFECT, 3, BonusSourceID(SpellID(SpellID::AIR_SHIELD))));
  46. EXPECT_FALSE(subject->isReceptive(&mechanicsMock, &unitMock));
  47. }
  48. TEST_F(SpellEffectConditionTest, ImmuneIfHasNoSpellEffects)
  49. {
  50. setDefaultExpectations();
  51. unitBonuses.addNewBonus(std::make_shared<Bonus>(BonusDuration::ONE_BATTLE, BonusType::STACK_HEALTH, BonusSource::CREATURE_ABILITY, 3, BonusSourceID()));
  52. EXPECT_FALSE(subject->isReceptive(&mechanicsMock, &unitMock));
  53. }
  54. }