NormalLevelConditionTest.cpp 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. /*
  2. * NormalLevelConditionTest.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 NormalLevelConditionTest : public TargetConditionItemTest
  17. {
  18. public:
  19. void setDefaultExpectations()
  20. {
  21. EXPECT_CALL(mechanicsMock, isMagicalEffect()).WillRepeatedly(Return(true));
  22. EXPECT_CALL(unitMock, getAllBonuses(_, _, _, _)).Times(AtLeast(1));
  23. EXPECT_CALL(unitMock, getTreeVersion()).Times(AtLeast(0));
  24. }
  25. void SetUp() override
  26. {
  27. TargetConditionItemTest::SetUp();
  28. subject = TargetConditionItemFactory::getDefault()->createNormalLevel();
  29. }
  30. };
  31. TEST_F(NormalLevelConditionTest, DefaultForAbility)
  32. {
  33. setDefaultExpectations();
  34. EXPECT_CALL(mechanicsMock, getSpellLevel()).WillRepeatedly(Return(0));
  35. EXPECT_TRUE(subject->isReceptive(&mechanicsMock, &unitMock));
  36. }
  37. TEST_F(NormalLevelConditionTest, DefaultForNormal)
  38. {
  39. setDefaultExpectations();
  40. EXPECT_CALL(mechanicsMock, getSpellLevel()).WillRepeatedly(Return(1));
  41. EXPECT_TRUE(subject->isReceptive(&mechanicsMock, &unitMock));
  42. }
  43. TEST_F(NormalLevelConditionTest, ReceptiveNormal)
  44. {
  45. setDefaultExpectations();
  46. unitBonuses.addNewBonus(std::make_shared<Bonus>(Bonus::ONE_BATTLE, Bonus::LEVEL_SPELL_IMMUNITY, Bonus::OTHER, 3, 0));
  47. EXPECT_CALL(mechanicsMock, getSpellLevel()).Times(AtLeast(1)).WillRepeatedly(Return(4));
  48. EXPECT_TRUE(subject->isReceptive(&mechanicsMock, &unitMock));
  49. }
  50. //TODO: this tests covers fact that creature abilities ignored (by spell level == 0), should this be done by ability flag or by cast mode?
  51. TEST_F(NormalLevelConditionTest, ReceptiveAbility)
  52. {
  53. setDefaultExpectations();
  54. unitBonuses.addNewBonus(std::make_shared<Bonus>(Bonus::ONE_BATTLE, Bonus::LEVEL_SPELL_IMMUNITY, Bonus::OTHER, 5, 0));
  55. EXPECT_CALL(mechanicsMock, getSpellLevel()).Times(AtLeast(1)).WillRepeatedly(Return(0));
  56. EXPECT_TRUE(subject->isReceptive(&mechanicsMock, &unitMock));
  57. }
  58. TEST_F(NormalLevelConditionTest, ImmuneNormal)
  59. {
  60. setDefaultExpectations();
  61. unitBonuses.addNewBonus(std::make_shared<Bonus>(Bonus::ONE_BATTLE, Bonus::LEVEL_SPELL_IMMUNITY, Bonus::OTHER, 4, 0));
  62. EXPECT_CALL(mechanicsMock, getSpellLevel()).Times(AtLeast(1)).WillRepeatedly(Return(2));
  63. EXPECT_FALSE(subject->isReceptive(&mechanicsMock, &unitMock));
  64. }
  65. }