ERM_OB_T.cpp 1.5 KB

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