PersistentPluginTests.cpp 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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 <gtest/gtest.h>
  9. #include <Tests/UI/UIFixture.h>
  10. #include <EMotionStudio/EMStudioSDK/Source/EMStudioManager.h>
  11. #include <EMotionStudio/EMStudioSDK/Source/PersistentPlugin.h>
  12. namespace EMotionFX
  13. {
  14. class PersistentTestPlugin
  15. : public EMStudio::PersistentPlugin
  16. {
  17. public:
  18. AZ_RTTI(PersistentTestPlugin, "{88360562-1A6D-4BA4-82E3-F9DE0D69732E}", EMStudio::PersistentPlugin)
  19. const char* GetName() const override { return "PersistentTestPlugin"; }
  20. MOCK_METHOD1(Reflect, void(AZ::ReflectContext*));
  21. MOCK_METHOD0(GetOptions, EMStudio::PluginOptions*());
  22. MOCK_METHOD1(Update, void(float));
  23. MOCK_METHOD1(Render, void(EMotionFX::ActorRenderFlags));
  24. };
  25. TEST_F(UIFixture, CreatePersistentPluginTest)
  26. {
  27. EMStudio::PluginManager* pluginManager = EMStudio::GetPluginManager();
  28. const size_t numPreviousPlugins = pluginManager->GetNumPersistentPlugins();
  29. PersistentTestPlugin* plugin = new PersistentTestPlugin();
  30. pluginManager->AddPersistentPlugin(plugin);
  31. EXPECT_EQ(pluginManager->GetNumPersistentPlugins(), numPreviousPlugins + 1)
  32. << "Failed to add persistent plugin to plugin manager.";
  33. EXPECT_EQ(pluginManager->GetPersistentPlugins().size(), pluginManager->GetNumPersistentPlugins())
  34. << "Mismatch between the actual container size and the returned number of plugins.";
  35. }
  36. TEST_F(UIFixture, RemovePersistentPluginTest)
  37. {
  38. EMStudio::PluginManager* pluginManager = EMStudio::GetPluginManager();
  39. const size_t numPreviousPlugins = pluginManager->GetNumPersistentPlugins();
  40. PersistentTestPlugin* plugin = new PersistentTestPlugin();
  41. pluginManager->AddPersistentPlugin(plugin);
  42. EXPECT_EQ(pluginManager->GetNumPersistentPlugins(), numPreviousPlugins + 1)
  43. << "Failed to add persistent plugin to plugin manager.";
  44. pluginManager->RemovePersistentPlugin(plugin);
  45. EXPECT_EQ(pluginManager->GetNumPersistentPlugins(), numPreviousPlugins)
  46. << "Failed to remove persistent plugin to plugin manager.";
  47. }
  48. TEST_F(UIFixture, UpdatePersistentPluginsTest)
  49. {
  50. PersistentTestPlugin* plugin = new PersistentTestPlugin();
  51. EMStudio::GetPluginManager()->AddPersistentPlugin(plugin);
  52. EXPECT_CALL(*plugin, Update(testing::_)).Times(1);
  53. EMStudio::GetMainWindow()->UpdatePlugins(1.0f / 60.0f);
  54. }
  55. } // namespace EMotionFX