MockApplicationManager.h 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  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 <native/utilities/ApplicationManagerAPI.h>
  10. #include <native/AssetManager/assetProcessorManager.h>
  11. #include <native/utilities/PlatformConfiguration.h>
  12. #include <native/utilities/assetUtils.h>
  13. #include <native/resourcecompiler/RCBuilder.h>
  14. namespace AssetProcessor
  15. {
  16. class InternalMockBuilder
  17. : public InternalRecognizerBasedBuilder
  18. {
  19. friend class MockApplicationManager;
  20. public:
  21. //////////////////////////////////////////////////////////////////////////
  22. InternalMockBuilder(const QHash<QString, BuilderIdAndName>& inputBuilderNameByIdMap);
  23. virtual ~InternalMockBuilder();
  24. bool InitializeMockBuilder(const AssetRecognizer& assetRecognizer);
  25. void CreateJobs(const AssetBuilderSDK::CreateJobsRequest& request, AssetBuilderSDK::CreateJobsResponse& response);
  26. void ProcessJob(const AssetBuilderSDK::ProcessJobRequest& request, AssetBuilderSDK::ProcessJobResponse& response);
  27. AssetBuilderSDK::AssetBuilderDesc CreateBuilderDesc(const QString& builderName, const QString& builderId, const AZStd::vector<AssetBuilderSDK::AssetBuilderPattern>& builderPatterns);
  28. void ResetCounters();
  29. int GetCreateJobCalls();
  30. const AssetBuilderSDK::CreateJobsResponse& GetLastCreateJobResponse();
  31. const AssetBuilderSDK::CreateJobsRequest& GetLastCreateJobRequest();
  32. protected:
  33. mutable int m_createJobCallsCount = 0;
  34. mutable int m_processJobCallsCount = 0;
  35. mutable AssetBuilderSDK::CreateJobsRequest m_lastCreateJobRequest;
  36. mutable AssetBuilderSDK::CreateJobsResponse m_lastCreateJobResponse;
  37. };
  38. class MockApplicationManager
  39. : public AssetProcessor::AssetBuilderInfoBus::Handler
  40. {
  41. public:
  42. MockApplicationManager()
  43. : m_getMatchingBuildersInfoFunctionCalls(0), m_internalBuilderRegistrationCount(0) {}
  44. bool RegisterAssetRecognizerAsBuilder(const AssetRecognizer& rec);
  45. bool UnRegisterAssetRecognizerAsBuilder(const char* name);
  46. void UnRegisterAllBuilders();
  47. void GetMatchingBuildersInfo(const AZStd::string& assetPath, AssetProcessor::BuilderInfoList& builderInfoList) override;
  48. void GetAllBuildersInfo(AssetProcessor::BuilderInfoList& builderInfoList) override;
  49. void ResetMatchingBuildersInfoFunctionCalls();
  50. int GetMatchingBuildersInfoFunctionCalls();
  51. void ResetMockBuilderCreateJobCalls();
  52. int GetMockBuilderCreateJobCalls();
  53. bool GetBuilderByID(const AZStd::string& builderName, AZStd::shared_ptr<InternalMockBuilder>& builder);
  54. bool GetBuildUUIDFromName(const AZStd::string& builderName, AZ::Uuid& buildUUID);
  55. struct BuilderFilePatternMatcherAndBuilderDesc
  56. {
  57. AssetUtilities::BuilderFilePatternMatcher m_matcherBuilderPattern;
  58. AssetBuilderSDK::AssetBuilderDesc m_builderDesc;
  59. AZ::Uuid m_internalUuid;
  60. AZStd::string m_internalBuilderName;
  61. };
  62. AZStd::list<BuilderFilePatternMatcherAndBuilderDesc> m_matcherBuilderPatterns;
  63. protected:
  64. AZStd::unordered_map<AZStd::string, AZStd::shared_ptr<InternalMockBuilder> > m_internalBuilders;
  65. AZStd::unordered_map<AZStd::string, AZ::Uuid > m_internalBuilderUUIDByName;
  66. int m_getMatchingBuildersInfoFunctionCalls;
  67. int m_internalBuilderRegistrationCount;
  68. };
  69. class MockAssetBuilderInfoHandler
  70. : public AssetProcessor::AssetBuilderInfoBus::Handler
  71. {
  72. public:
  73. MockAssetBuilderInfoHandler();
  74. virtual ~MockAssetBuilderInfoHandler();
  75. //! AssetProcessor::AssetBuilderInfoBus Interface
  76. void GetMatchingBuildersInfo(const AZStd::string& assetPath, AssetProcessor::BuilderInfoList& builderInfoList) override;
  77. void GetAllBuildersInfo(AssetProcessor::BuilderInfoList& builderInfoList) override;
  78. ////////////////////////////////////////////////
  79. AssetBuilderSDK::AssetBuilderDesc m_assetBuilderDesc;
  80. int m_numberOfJobsToCreate = 0;
  81. };
  82. }