ScriptCanvasUnitTest_ScriptCanvasBuilderComponent.cpp 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  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. #include <Tests/Framework/ScriptCanvasUnitTestFixture.h>
  9. #include <AzCore/Asset/AssetManager.h>
  10. #include <AzCore/Component/ComponentApplication.h>
  11. #include <AzCore/Memory/PoolAllocator.h>
  12. #include <Builder/ScriptCanvasBuilderComponent.h>
  13. namespace ScriptCanvasUnitTest
  14. {
  15. namespace ScriptCanvasBuilderComponentUnitTestStructures
  16. {
  17. class TestHandler
  18. : public AssetBuilderSDK::AssetBuilderBus::Handler
  19. , public AZ::ComponentApplicationBus::Handler
  20. {
  21. public:
  22. AZ::BehaviorContext* m_behaviorContext;
  23. AZ::SerializeContext* m_serializeContext;
  24. AZStd::string m_fingerprint;
  25. // ComponentApplicationBus
  26. AZ::ComponentApplication* GetApplication() override { return nullptr; }
  27. void RegisterComponentDescriptor(const AZ::ComponentDescriptor*) override {}
  28. void UnregisterComponentDescriptor(const AZ::ComponentDescriptor*) override {}
  29. bool AddEntity(AZ::Entity*) override { return true; }
  30. bool RemoveEntity(AZ::Entity*) override { return true; }
  31. bool DeleteEntity(const AZ::EntityId&) override { return true; }
  32. AZ::Entity* FindEntity(const AZ::EntityId&) override { return nullptr; }
  33. AZ::SerializeContext* GetSerializeContext() override { return m_serializeContext; }
  34. AZ::BehaviorContext* GetBehaviorContext() override { return m_behaviorContext; }
  35. AZ::JsonRegistrationContext* GetJsonRegistrationContext() override { return nullptr; }
  36. const char* GetExecutableFolder() const override { return nullptr; }
  37. const char* GetBinFolder() const { return nullptr; }
  38. const char* GetAppRoot() override { return nullptr; }
  39. void EnumerateEntities(const EntityCallback& /*callback*/) override {}
  40. // AssetBuilderBus
  41. void RegisterBuilderInformation(const AssetBuilderSDK::AssetBuilderDesc& desc) override
  42. {
  43. m_fingerprint = desc.m_analysisFingerprint;
  44. }
  45. void Init(AZ::BehaviorContext* behaviorContext, AZ::SerializeContext* serializeContext)
  46. {
  47. m_behaviorContext = behaviorContext;
  48. m_serializeContext = serializeContext;
  49. }
  50. void Activate()
  51. {
  52. AZ::ComponentApplicationBus::Handler::BusConnect();
  53. AssetBuilderSDK::AssetBuilderBus::Handler::BusConnect();
  54. }
  55. void Deactivate()
  56. {
  57. AssetBuilderSDK::AssetBuilderBus::Handler::BusDisconnect();
  58. AZ::ComponentApplicationBus::Handler::BusDisconnect();
  59. }
  60. };
  61. };
  62. class ScriptCanvasScriptCanvasBuilderComponentUnitTestFixture
  63. : public ScriptCanvasUnitTestFixture
  64. {
  65. protected:
  66. AZ::BehaviorContext* m_behaviorContext;
  67. AZ::SerializeContext* m_serializeContext;
  68. ScriptCanvasBuilderComponentUnitTestStructures::TestHandler* m_testHandler;
  69. ScriptCanvasBuilder::PluginComponent* m_pluginComponent;
  70. void SetUp() override
  71. {
  72. ScriptCanvasUnitTestFixture::SetUp();
  73. m_serializeContext = aznew AZ::SerializeContext();
  74. m_behaviorContext = aznew AZ::BehaviorContext();
  75. m_testHandler = new ScriptCanvasBuilderComponentUnitTestStructures::TestHandler();
  76. m_testHandler->Init(m_behaviorContext, m_serializeContext);
  77. m_testHandler->Activate();
  78. AZ::Data::AssetManager::Descriptor desc;
  79. AZ::Data::AssetManager::Create(desc);
  80. m_pluginComponent = aznew ScriptCanvasBuilder::PluginComponent();
  81. };
  82. void TearDown() override
  83. {
  84. m_pluginComponent->Deactivate();
  85. delete m_pluginComponent;
  86. AZ::Data::AssetManager::Destroy();
  87. m_testHandler->Deactivate();
  88. delete m_testHandler;
  89. delete m_behaviorContext;
  90. delete m_serializeContext;
  91. ScriptCanvasUnitTestFixture::TearDown();
  92. };
  93. };
  94. TEST_F(ScriptCanvasScriptCanvasBuilderComponentUnitTestFixture, Activate_FingerprintContainsZeroHashValue_BehaviorContextIsEmpty)
  95. {
  96. m_pluginComponent->Activate();
  97. size_t splitterPos = m_testHandler->m_fingerprint.find_last_of('|');
  98. EXPECT_TRUE(splitterPos != m_testHandler->m_fingerprint.npos);
  99. uint64_t behaviorContextHash = AZStd::stoull(m_testHandler->m_fingerprint.substr(splitterPos + 1));
  100. EXPECT_EQ(behaviorContextHash, 0);
  101. }
  102. }