AbsoluteSpellConditionTest.cpp 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. /*
  2. * AbsoluteSpellConditionTest.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 AbsoluteSpellConditionTest : public TargetConditionItemTest, public WithParamInterface<tuple<int32_t, int32_t> >
  17. {
  18. public:
  19. int32_t immuneSpell;
  20. int32_t castSpell;
  21. void setDefaultExpectations()
  22. {
  23. EXPECT_CALL(unitMock, getAllBonuses(_, _)).Times(AtLeast(1));
  24. EXPECT_CALL(unitMock, getTreeVersion()).Times(AtLeast(0));
  25. EXPECT_CALL(mechanicsMock, getSpellIndex()).WillRepeatedly(Return(castSpell));
  26. EXPECT_CALL(mechanicsMock, getSpellId()).WillRepeatedly(Return(SpellID(castSpell)));
  27. }
  28. void SetUp() override
  29. {
  30. TargetConditionItemTest::SetUp();
  31. immuneSpell = ::testing::get<0>(GetParam());
  32. castSpell = ::testing::get<1>(GetParam());
  33. subject = TargetConditionItemFactory::getDefault()->createAbsoluteSpell();
  34. }
  35. };
  36. TEST_P(AbsoluteSpellConditionTest, ChecksAbsoluteCase)
  37. {
  38. setDefaultExpectations();
  39. auto bonus = std::make_shared<Bonus>(BonusDuration::ONE_BATTLE, BonusType::SPELL_IMMUNITY, BonusSource::OTHER, 4, BonusSourceID(), BonusSubtypeID(SpellID(immuneSpell)));
  40. bonus->additionalInfo = 1;
  41. unitBonuses.addNewBonus(bonus);
  42. if(immuneSpell == castSpell)
  43. EXPECT_FALSE(subject->isReceptive(&mechanicsMock, &unitMock));
  44. else
  45. EXPECT_TRUE(subject->isReceptive(&mechanicsMock, &unitMock));
  46. }
  47. TEST_P(AbsoluteSpellConditionTest, IgnoresNormalCase)
  48. {
  49. setDefaultExpectations();
  50. auto bonus = std::make_shared<Bonus>(BonusDuration::ONE_BATTLE, BonusType::SPELL_IMMUNITY, BonusSource::OTHER, 4, BonusSourceID(), BonusSubtypeID(SpellID(immuneSpell)));
  51. unitBonuses.addNewBonus(bonus);
  52. EXPECT_TRUE(subject->isReceptive(&mechanicsMock, &unitMock));
  53. }
  54. INSTANTIATE_TEST_SUITE_P
  55. (
  56. BySpells,
  57. AbsoluteSpellConditionTest,
  58. Combine
  59. (
  60. Values(1,2),
  61. Values(1,2)
  62. )
  63. );
  64. }