ERM_OB_T.cpp 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. /*
  2. * ERM_OB_T.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 <vcmi/events/AdventureEvents.h>
  12. #include "../scripting/ScriptFixture.h"
  13. namespace test
  14. {
  15. namespace scripting
  16. {
  17. using namespace ::testing;
  18. class ObjectMock : public CGObjectInstance
  19. {
  20. public:
  21. MOCK_CONST_METHOD0(getObjGroupIndex, int32_t());
  22. MOCK_CONST_METHOD0(getObjTypeIndex, int32_t());
  23. };
  24. class ERM_OB_T : public Test, public ScriptFixture
  25. {
  26. public:
  27. ObjectMock objectMock;
  28. protected:
  29. void SetUp() override
  30. {
  31. ScriptFixture::setUp();
  32. }
  33. };
  34. TEST_F(ERM_OB_T, ByTypeIndex)
  35. {
  36. EXPECT_CALL(infoMock, getObj(Eq(ObjectInstanceID(234)), _)).Times(AtLeast(1)).WillRepeatedly(Return(&objectMock));
  37. EXPECT_CALL(objectMock, getObjGroupIndex()).Times(AtLeast(1)).WillRepeatedly(Return(420));
  38. loadScript(VLC->scriptHandler->erm,
  39. "VERM\n"
  40. "!?OB420;\n"
  41. "!!VRv42:S4;\n"
  42. "!?OB421;\n"
  43. "!!VRv43:S5;\n"
  44. );
  45. SCOPED_TRACE("\n" + subject->code);
  46. runClientServer();
  47. events::ObjectVisitStarted::defaultExecute(&eventBus, nullptr, PlayerColor(2), ObjectInstanceID(235), ObjectInstanceID(234));
  48. const JsonNode actualState = context->saveState();
  49. EXPECT_EQ(actualState["ERM"]["v"]["42"], JsonUtils::floatNode(4)) << actualState.toJson();
  50. EXPECT_TRUE(actualState["ERM"]["v"]["43"].isNull()) << actualState.toJson();
  51. }
  52. }
  53. }