MockSpawnableEntitiesInterface.h 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #pragma once
  9. #include <AzCore/UnitTest/UnitTest.h>
  10. #include <gmock/gmock.h>
  11. #include <AzFramework/Spawnable/SpawnableEntitiesInterface.h>
  12. #include <AzFramework/Spawnable/SpawnableEntitiesManager.h>
  13. namespace AzFramework
  14. {
  15. class MockSpawnableEntitiesInterface;
  16. using NiceSpawnableEntitiesInterfaceMock = ::testing::NiceMock<MockSpawnableEntitiesInterface>;
  17. class MockSpawnableEntitiesInterface : public SpawnableEntitiesDefinition
  18. {
  19. public:
  20. AZ_RTTI(MockSpawnableEntitiesInterface, "{2A20FF73-C445-4F32-ABB9-5CF0A5778404}", SpawnableEntitiesDefinition);
  21. MockSpawnableEntitiesInterface()
  22. {
  23. AZ::Interface<SpawnableEntitiesDefinition>::Register(this);
  24. }
  25. virtual ~MockSpawnableEntitiesInterface()
  26. {
  27. AZ::Interface<SpawnableEntitiesDefinition>::Unregister(this);
  28. }
  29. MOCK_METHOD2(SpawnAllEntities, void(EntitySpawnTicket& ticket, SpawnAllEntitiesOptionalArgs optionalArgs));
  30. MOCK_METHOD3(
  31. SpawnEntities,
  32. void(EntitySpawnTicket& ticket, AZStd::vector<uint32_t> entityIndices, SpawnEntitiesOptionalArgs optionalArgs));
  33. MOCK_METHOD2(DespawnAllEntities, void(EntitySpawnTicket& ticket, DespawnAllEntitiesOptionalArgs optionalArgs));
  34. MOCK_METHOD3(DespawnEntity, void(AZ::EntityId entityId, EntitySpawnTicket& ticket, DespawnEntityOptionalArgs optionalArgs));
  35. MOCK_METHOD3(
  36. RetrieveTicket,
  37. void(EntitySpawnTicket::Id ticketId, RetrieveEntitySpawnTicketCallback callback, RetrieveTicketOptionalArgs optionalArgs));
  38. MOCK_METHOD3(
  39. ReloadSpawnable,
  40. void(EntitySpawnTicket& ticket, AZ::Data::Asset<Spawnable> spawnable, ReloadSpawnableOptionalArgs optionalArgs));
  41. MOCK_METHOD3(
  42. UpdateEntityAliasTypes,
  43. void(
  44. EntitySpawnTicket& ticket,
  45. AZStd::vector<EntityAliasTypeChange> updatedAliases,
  46. UpdateEntityAliasTypesOptionalArgs optionalArgs));
  47. MOCK_METHOD3(
  48. ListEntities, void(EntitySpawnTicket& ticket, ListEntitiesCallback listCallback, ListEntitiesOptionalArgs optionalArgs));
  49. MOCK_METHOD3(
  50. ListIndicesAndEntities,
  51. void(EntitySpawnTicket& ticket, ListIndicesEntitiesCallback listCallback, ListEntitiesOptionalArgs optionalArgs));
  52. MOCK_METHOD3(
  53. ClaimEntities,
  54. void(EntitySpawnTicket& ticket, ClaimEntitiesCallback listCallback, ClaimEntitiesOptionalArgs optionalArgs));
  55. MOCK_METHOD3(Barrier, void(EntitySpawnTicket& ticket, BarrierCallback completionCallback, BarrierOptionalArgs optionalArgs));
  56. MOCK_METHOD3(LoadBarrier, void(EntitySpawnTicket& ticket, BarrierCallback completionCallback, LoadBarrierOptionalArgs optionalArgs));
  57. MOCK_METHOD1(CreateTicket, void*(AZ::Data::Asset<Spawnable>&& spawnable));
  58. MOCK_METHOD1(IncrementTicketReference, void(void* ticket));
  59. MOCK_METHOD1(DecrementTicketReference, void(void* ticket));
  60. MOCK_METHOD1(DestroyTicket, void(void* ticket));
  61. MOCK_METHOD1(GetTicketId, EntitySpawnTicket::Id(void* ticket));
  62. MOCK_METHOD1(GetSpawnableOnTicket, const AZ::Data::Asset<Spawnable>&(void* ticket));
  63. /** Installs some default result values for the above functions.
  64. * Note that you can always override these in scope of your test by adding additional ON_CALL / EXPECT_CALL
  65. * statements in the body of your test or after calling this function, and yours will take precedence.
  66. **/
  67. static void InstallDefaultReturns(NiceSpawnableEntitiesInterfaceMock& target)
  68. {
  69. using namespace ::testing;
  70. // The ID and pointer are completely arbitrary, they just need to both be non-zero to look like a valid ticket.
  71. static int ticketPayload = 0;
  72. ON_CALL(target, CreateTicket(_)).WillByDefault(Return(&ticketPayload));
  73. }
  74. };
  75. } // namespace AzFramework