NormalLevelConditionTest.cpp 2.3 KB

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