MockInterfaces.h 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution.
  3. *
  4. * SPDX-License-Identifier: Apache-2.0 OR MIT
  5. *
  6. */
  7. #pragma once
  8. #include <AzCore/Component/ComponentApplicationBus.h>
  9. #include <AzCore/Time/ITime.h>
  10. #include <AzNetworking/ConnectionLayer/IConnectionListener.h>
  11. #include <AzNetworking/Serialization/ISerializer.h>
  12. #include <AzTest/AzTest.h>
  13. #include <Multiplayer/IMultiplayer.h>
  14. #include <Multiplayer/NetworkEntity/NetworkEntityRpcMessage.h>
  15. namespace UnitTest
  16. {
  17. class MockMultiplayer : public Multiplayer::IMultiplayer
  18. {
  19. public:
  20. MOCK_CONST_METHOD0(GetAgentType, Multiplayer::MultiplayerAgentType());
  21. MOCK_METHOD1(InitializeMultiplayer, void(Multiplayer::MultiplayerAgentType));
  22. MOCK_METHOD2(StartHosting, bool(uint16_t, bool));
  23. MOCK_METHOD3(Connect, bool(const AZStd::string&, uint16_t, const AZStd::string&));
  24. MOCK_METHOD1(Terminate, void(AzNetworking::DisconnectReason));
  25. MOCK_METHOD1(AddNetworkInitHandler, void(AZ::Event<INetworkInterface*>::Handler&));
  26. MOCK_METHOD1(AddClientMigrationStartEventHandler, void(Multiplayer::ClientMigrationStartEvent::Handler&));
  27. MOCK_METHOD1(AddClientMigrationEndEventHandler, void(Multiplayer::ClientMigrationEndEvent::Handler&));
  28. MOCK_METHOD1(AddEndpointDisconnectedHandler, void(Multiplayer::EndpointDisconnectedEvent::Handler&));
  29. MOCK_METHOD1(AddNotifyClientMigrationHandler, void(Multiplayer::NotifyClientMigrationEvent::Handler&));
  30. MOCK_METHOD1(AddNotifyEntityMigrationEventHandler, void(Multiplayer::NotifyEntityMigrationEvent::Handler&));
  31. MOCK_METHOD1(AddConnectionAcquiredHandler, void(Multiplayer::ConnectionAcquiredEvent::Handler&));
  32. MOCK_METHOD1(AddServerAcceptanceReceivedHandler, void(Multiplayer::ServerAcceptanceReceivedEvent::Handler&));
  33. MOCK_METHOD1(AddSessionInitHandler, void(Multiplayer::SessionInitEvent::Handler&));
  34. MOCK_METHOD1(AddSessionShutdownHandler, void(Multiplayer::SessionShutdownEvent::Handler&));
  35. MOCK_METHOD1(AddLevelLoadBlockedHandler, void(Multiplayer::LevelLoadBlockedEvent::Handler&));
  36. MOCK_METHOD1(AddNoServerLevelLoadedHandler, void(Multiplayer::NoServerLevelLoadedEvent::Handler&));
  37. MOCK_METHOD1(AddVersionMismatchHandler, void(Multiplayer::VersionMismatchEvent::Handler&));
  38. MOCK_METHOD5(SendNotifyClientMigrationEvent, void(AzNetworking::ConnectionId, const Multiplayer::HostId&, uint64_t, Multiplayer::ClientInputId, Multiplayer::NetEntityId));
  39. MOCK_METHOD2(SendNotifyEntityMigrationEvent, void(const Multiplayer::ConstNetworkEntityHandle&, const Multiplayer::HostId&));
  40. MOCK_METHOD1(SendReadyForEntityUpdates, void(bool));
  41. MOCK_CONST_METHOD0(GetCurrentHostTimeMs, AZ::TimeMs());
  42. MOCK_CONST_METHOD0(GetCurrentBlendFactor, float());
  43. MOCK_METHOD0(GetNetworkTime, Multiplayer::INetworkTime* ());
  44. MOCK_METHOD0(GetNetworkEntityManager, Multiplayer::INetworkEntityManager* ());
  45. MOCK_METHOD2(RegisterPlayerIdentifierForRejoin, void(uint64_t, Multiplayer::NetEntityId));
  46. MOCK_METHOD4(CompleteClientMigration, void(uint64_t, AzNetworking::ConnectionId, const Multiplayer::HostId&, Multiplayer::ClientInputId));
  47. MOCK_METHOD1(SetShouldSpawnNetworkEntities, void(bool));
  48. MOCK_CONST_METHOD0(GetShouldSpawnNetworkEntities, bool());
  49. };
  50. class MockNetworkEntityManager : public Multiplayer::INetworkEntityManager
  51. {
  52. public:
  53. MOCK_METHOD2(Initialize, void(const Multiplayer::HostId&, AZStd::unique_ptr<Multiplayer::IEntityDomain>));
  54. MOCK_CONST_METHOD0(IsInitialized, bool());
  55. MOCK_CONST_METHOD0(GetEntityDomain, Multiplayer::IEntityDomain*());
  56. MOCK_METHOD0(GetNetworkEntityTracker, Multiplayer::NetworkEntityTracker* ());
  57. MOCK_METHOD0(GetNetworkEntityAuthorityTracker, Multiplayer::NetworkEntityAuthorityTracker* ());
  58. MOCK_METHOD0(GetMultiplayerComponentRegistry, Multiplayer::MultiplayerComponentRegistry* ());
  59. MOCK_CONST_METHOD0(GetHostId, const Multiplayer::HostId&());
  60. MOCK_CONST_METHOD1(GetEntity, Multiplayer::ConstNetworkEntityHandle(Multiplayer::NetEntityId));
  61. MOCK_CONST_METHOD1(GetNetEntityIdById, Multiplayer::NetEntityId(const AZ::EntityId&));
  62. MOCK_METHOD3(CreateEntitiesImmediate, EntityList(const Multiplayer::PrefabEntityId&, Multiplayer::NetEntityRole, const AZ::
  63. Transform&));
  64. MOCK_METHOD4(
  65. CreateEntitiesImmediate,
  66. EntityList(const Multiplayer::PrefabEntityId&, Multiplayer::NetEntityRole, const AZ::Transform&, Multiplayer::AutoActivate));
  67. MOCK_METHOD5(CreateEntitiesImmediate, EntityList(const Multiplayer::PrefabEntityId&, Multiplayer::NetEntityId, Multiplayer::
  68. NetEntityRole, Multiplayer::AutoActivate, const AZ::Transform&));
  69. MOCK_METHOD2(RequestNetSpawnableInstantiation, AZStd::unique_ptr<AzFramework::EntitySpawnTicket>(const AZ::Data::Asset<AzFramework::Spawnable>&, const AZ::Transform&));
  70. MOCK_METHOD3(SetupNetEntity, void(AZ::Entity*, Multiplayer::PrefabEntityId, Multiplayer::NetEntityRole));
  71. MOCK_CONST_METHOD0(GetEntityCount, uint32_t());
  72. MOCK_METHOD2(AddEntityToEntityMap, Multiplayer::NetworkEntityHandle(Multiplayer::NetEntityId, AZ::Entity*));
  73. MOCK_METHOD1(RemoveEntityFromEntityMap, void(Multiplayer::NetEntityId));
  74. MOCK_METHOD1(MarkForRemoval, void(const Multiplayer::ConstNetworkEntityHandle&));
  75. MOCK_CONST_METHOD1(IsMarkedForRemoval, bool(const Multiplayer::ConstNetworkEntityHandle&));
  76. MOCK_METHOD1(ClearEntityFromRemovalList, void(const Multiplayer::ConstNetworkEntityHandle&));
  77. MOCK_METHOD0(ClearAllEntities, void());
  78. MOCK_METHOD1(AddEntityMarkedDirtyHandler, void(AZ::Event<>::Handler&));
  79. MOCK_METHOD1(AddEntityNotifyChangesHandler, void(AZ::Event<>::Handler&));
  80. MOCK_METHOD1(AddEntityExitDomainHandler, void(AZ::Event<const Multiplayer::ConstNetworkEntityHandle&>::Handler&));
  81. MOCK_METHOD1(AddControllersActivatedHandler, void(AZ::Event<const Multiplayer::ConstNetworkEntityHandle&, Multiplayer::
  82. EntityIsMigrating>::Handler&));
  83. MOCK_METHOD1(AddControllersDeactivatedHandler, void(AZ::Event<const Multiplayer::ConstNetworkEntityHandle&, Multiplayer::
  84. EntityIsMigrating>::Handler&));
  85. MOCK_METHOD0(NotifyEntitiesDirtied, void());
  86. MOCK_METHOD0(NotifyEntitiesChanged, void());
  87. MOCK_METHOD2(NotifyControllersActivated, void(const Multiplayer::ConstNetworkEntityHandle&, Multiplayer::EntityIsMigrating));
  88. MOCK_METHOD2(NotifyControllersDeactivated, void(const Multiplayer::ConstNetworkEntityHandle&, Multiplayer::EntityIsMigrating));
  89. MOCK_METHOD1(HandleLocalRpcMessage, void(Multiplayer::NetworkEntityRpcMessage&));
  90. MOCK_METHOD1(HandleEntitiesExitDomain, void(const Multiplayer::NetEntityIdSet&));
  91. MOCK_METHOD1(ForceAssumeAuthority, void(const Multiplayer::ConstNetworkEntityHandle&));
  92. MOCK_METHOD2(MarkAlwaysRelevantToClients, void(const Multiplayer::ConstNetworkEntityHandle&, bool));
  93. MOCK_METHOD2(MarkAlwaysRelevantToServers, void(const Multiplayer::ConstNetworkEntityHandle&, bool));
  94. const Multiplayer::NetEntityHandleSet& GetAlwaysRelevantToClientsSet() const override { static Multiplayer::NetEntityHandleSet value; return value; }
  95. const Multiplayer::NetEntityHandleSet& GetAlwaysRelevantToServersSet() const override { static Multiplayer::NetEntityHandleSet value; return value; }
  96. MOCK_METHOD1(SetMigrateTimeoutTimeMs, void(AZ::TimeMs));
  97. MOCK_CONST_METHOD0(DebugDraw, void());
  98. };
  99. class MockConnectionListener : public AzNetworking::IConnectionListener
  100. {
  101. public:
  102. MOCK_METHOD3(ValidateConnect, ConnectResult(const IpAddress&, const IPacketHeader&, ISerializer&));
  103. MOCK_METHOD1(OnConnect, void(IConnection*));
  104. MOCK_METHOD3(OnPacketReceived, PacketDispatchResult (IConnection*, const IPacketHeader&, ISerializer&));
  105. MOCK_METHOD2(OnPacketLost, void(IConnection*, PacketId));
  106. MOCK_METHOD3(OnDisconnect, void(IConnection*, DisconnectReason, TerminationEndpoint));
  107. };
  108. class MockNetworkTime : public Multiplayer::INetworkTime
  109. {
  110. public:
  111. MOCK_METHOD2(ForceSetTime, void (Multiplayer::HostFrameId, AZ::TimeMs));
  112. MOCK_CONST_METHOD0(GetHostBlendFactor, float ());
  113. MOCK_METHOD1(AlterBlendFactor, void (float));
  114. MOCK_CONST_METHOD0(IsTimeRewound, bool());
  115. MOCK_CONST_METHOD0(GetHostFrameId, Multiplayer::HostFrameId());
  116. MOCK_CONST_METHOD0(GetUnalteredHostFrameId, Multiplayer::HostFrameId());
  117. MOCK_METHOD0(IncrementHostFrameId, void());
  118. MOCK_CONST_METHOD0(GetHostTimeMs, AZ::TimeMs());
  119. MOCK_CONST_METHOD0(GetRewindingConnectionId, AzNetworking::ConnectionId());
  120. MOCK_CONST_METHOD1(GetHostFrameIdForRewindingConnection, Multiplayer::HostFrameId(AzNetworking::ConnectionId));
  121. MOCK_METHOD4(AlterTime, void (Multiplayer::HostFrameId, AZ::TimeMs, float, AzNetworking::ConnectionId));
  122. MOCK_METHOD1(SyncEntitiesToRewindState, void(const AZ::Aabb&));
  123. MOCK_METHOD0(ClearRewoundEntities, void());
  124. };
  125. class MockComponentApplicationRequests : public AZ::ComponentApplicationRequests
  126. {
  127. public:
  128. MOCK_METHOD1(RegisterComponentDescriptor, void(const AZ::ComponentDescriptor*));
  129. MOCK_METHOD1(UnregisterComponentDescriptor, void(const AZ::ComponentDescriptor*));
  130. MOCK_METHOD0(GetApplication, AZ::ComponentApplication* ());
  131. MOCK_METHOD1(RegisterEntityAddedEventHandler, void(AZ::Event<AZ::Entity*>::Handler&));
  132. MOCK_METHOD1(RegisterEntityRemovedEventHandler, void(AZ::Event<AZ::Entity*>::Handler&));
  133. MOCK_METHOD1(RegisterEntityActivatedEventHandler, void(AZ::Event<AZ::Entity*>::Handler&));
  134. MOCK_METHOD1(RegisterEntityDeactivatedEventHandler, void(AZ::Event<AZ::Entity*>::Handler&));
  135. MOCK_METHOD1(SignalEntityActivated, void(AZ::Entity*));
  136. MOCK_METHOD1(SignalEntityDeactivated, void(AZ::Entity*));
  137. MOCK_METHOD1(AddEntity, bool(AZ::Entity*));
  138. MOCK_METHOD1(RemoveEntity, bool(AZ::Entity*));
  139. MOCK_METHOD1(DeleteEntity, bool(const AZ::EntityId&));
  140. MOCK_METHOD1(FindEntity, AZ::Entity* (const AZ::EntityId&));
  141. MOCK_METHOD1(GetEntityName, AZStd::string(const AZ::EntityId&));
  142. MOCK_METHOD1(EnumerateEntities, void(const EntityCallback&));
  143. MOCK_METHOD0(GetSerializeContext, AZ::SerializeContext* ());
  144. MOCK_METHOD0(GetBehaviorContext, AZ::BehaviorContext* ());
  145. MOCK_METHOD0(GetJsonRegistrationContext, AZ::JsonRegistrationContext* ());
  146. MOCK_CONST_METHOD0(GetEngineRoot, const char* ());
  147. MOCK_CONST_METHOD0(GetExecutableFolder, const char* ());
  148. MOCK_METHOD1(ResolveModulePath, void(AZ::OSString&));
  149. MOCK_METHOD0(GetAzCommandLine, AZ::CommandLine* ());
  150. MOCK_CONST_METHOD1(QueryApplicationType, void(AZ::ApplicationTypeQuery&));
  151. };
  152. class MockSerializer : public ISerializer
  153. {
  154. public:
  155. MOCK_CONST_METHOD0(IsValid, bool ());
  156. MOCK_CONST_METHOD0(GetSerializerMode, SerializerMode ());
  157. MOCK_METHOD2(Serialize, bool (bool&, const char*));
  158. MOCK_METHOD4(Serialize, bool (char&, const char*, char, char));
  159. MOCK_METHOD4(Serialize, bool (int8_t&, const char*, int8_t, int8_t));
  160. MOCK_METHOD4(Serialize, bool (int16_t&, const char*, int16_t, int16_t));
  161. MOCK_METHOD4(Serialize, bool (int32_t&, const char*, int32_t, int32_t));
  162. MOCK_METHOD4(Serialize, bool (long&, const char*, long, long));
  163. MOCK_METHOD4(Serialize, bool (AZ::s64&, const char*, AZ::s64, AZ::s64));
  164. MOCK_METHOD4(Serialize, bool (uint8_t&, const char*, uint8_t, uint8_t));
  165. MOCK_METHOD4(Serialize, bool (uint16_t&, const char*, uint16_t, uint16_t));
  166. MOCK_METHOD4(Serialize, bool (uint32_t&, const char*, uint32_t, uint32_t));
  167. MOCK_METHOD4(Serialize, bool (unsigned long&, const char*, unsigned long, unsigned long));
  168. MOCK_METHOD4(Serialize, bool (AZ::u64&, const char*, AZ::u64, AZ::u64));
  169. MOCK_METHOD4(Serialize, bool (float&, const char*, float, float));
  170. MOCK_METHOD4(Serialize, bool (double&, const char*, double, double));
  171. MOCK_METHOD5(SerializeBytes, bool (uint8_t*, uint32_t, bool, uint32_t&, const char*));
  172. MOCK_METHOD1(BeginObject, bool (const char*));
  173. MOCK_METHOD1(EndObject, bool (const char*));
  174. MOCK_CONST_METHOD0(GetBuffer, const uint8_t* ());
  175. MOCK_CONST_METHOD0(GetCapacity, uint32_t ());
  176. MOCK_CONST_METHOD0(GetSize, uint32_t ());
  177. MOCK_METHOD0(ClearTrackedChangesFlag, void ());
  178. MOCK_CONST_METHOD0(GetTrackedChangesFlag, bool ());
  179. };
  180. }