test_DisplaySettingsPythonBindings.cpp 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  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 "EditorDefs.h"
  9. #include <AzTest/AzTest.h>
  10. #include <Util/EditorUtils.h>
  11. #include <AzCore/base.h>
  12. #include <AzCore/Memory/SystemAllocator.h>
  13. #include <AzCore/Debug/TraceMessageBus.h>
  14. #include <AzCore/UnitTest/TestTypes.h>
  15. #include <AzCore/UserSettings/UserSettingsComponent.h>
  16. #include <AzToolsFramework/API/ToolsApplicationAPI.h>
  17. #include <AzToolsFramework/Application/ToolsApplication.h>
  18. #include <DisplaySettings.h>
  19. #include <DisplaySettingsPythonFuncs.h>
  20. #include <AzCore/RTTI/BehaviorContext.h>
  21. namespace DisplaySettingsPythonBindingsUnitTests
  22. {
  23. class DisplaySettingsPythonBindingsFixture
  24. : public ::UnitTest::LeakDetectionFixture
  25. {
  26. public:
  27. AzToolsFramework::ToolsApplication m_app;
  28. void SetUp() override
  29. {
  30. AzFramework::Application::Descriptor appDesc;
  31. m_app.Start(appDesc);
  32. m_app.RegisterComponentDescriptor(AzToolsFramework::DisplaySettingsPythonFuncsHandler::CreateDescriptor());
  33. // Without this, the user settings component would attempt to save on finalize/shutdown. Since the file is
  34. // shared across the whole engine, if multiple tests are run in parallel, the saving could cause a crash
  35. // in the unit tests.
  36. AZ::UserSettingsComponentRequestBus::Broadcast(&AZ::UserSettingsComponentRequests::DisableSaveOnFinalize);
  37. }
  38. void TearDown() override
  39. {
  40. m_app.Stop();
  41. }
  42. };
  43. TEST_F(DisplaySettingsPythonBindingsFixture, DisplaySettingsEditorCommands_ApiExists)
  44. {
  45. AZ::BehaviorContext* behaviorContext = m_app.GetBehaviorContext();
  46. ASSERT_TRUE(behaviorContext);
  47. EXPECT_TRUE(behaviorContext->m_methods.find("get_misc_editor_settings") != behaviorContext->m_methods.end());
  48. EXPECT_TRUE(behaviorContext->m_methods.find("set_misc_editor_settings") != behaviorContext->m_methods.end());
  49. }
  50. class DisplaySettingsComponentFixture
  51. : public ::UnitTest::LeakDetectionFixture
  52. {
  53. public:
  54. AzToolsFramework::ToolsApplication m_app;
  55. void SetUp() override
  56. {
  57. AzFramework::Application::Descriptor appDesc;
  58. m_app.Start(appDesc);
  59. m_app.RegisterComponentDescriptor(AzToolsFramework::DisplaySettingsComponent::CreateDescriptor());
  60. // Without this, the user settings component would attempt to save on finalize/shutdown. Since the file is
  61. // shared across the whole engine, if multiple tests are run in parallel, the saving could cause a crash
  62. // in the unit tests.
  63. AZ::UserSettingsComponentRequestBus::Broadcast(&AZ::UserSettingsComponentRequests::DisableSaveOnFinalize);
  64. }
  65. void TearDown() override
  66. {
  67. m_app.Stop();
  68. }
  69. };
  70. TEST_F(DisplaySettingsComponentFixture, DisplaySettingsComponent_ApiExists)
  71. {
  72. AZ::BehaviorContext* behaviorContext = m_app.GetBehaviorContext();
  73. ASSERT_TRUE(behaviorContext);
  74. auto itDisplaySettingsBus = behaviorContext->m_ebuses.find("DisplaySettingsBus");
  75. if (itDisplaySettingsBus != behaviorContext->m_ebuses.end())
  76. {
  77. AZ::BehaviorEBus* behaviorBus = itDisplaySettingsBus->second;
  78. EXPECT_TRUE(behaviorBus->m_events.find("GetSettingsState") != behaviorBus->m_events.end());
  79. EXPECT_TRUE(behaviorBus->m_events.find("SetSettingsState") != behaviorBus->m_events.end());
  80. }
  81. }
  82. TEST_F(DisplaySettingsComponentFixture, DisplaySettingsComponent_ConvertToFlagsAllUnset)
  83. {
  84. AzToolsFramework::DisplaySettingsState state;
  85. state.m_noCollision = false;
  86. state.m_noLabels = false;
  87. state.m_simulate = false;
  88. state.m_hideTracks = false;
  89. state.m_hideLinks = false;
  90. state.m_hideHelpers = false;
  91. state.m_showDimensionFigures = false;
  92. AzToolsFramework::DisplaySettingsComponent component;
  93. int result = component.ConvertToFlags(state);
  94. int expected = 0x0;
  95. EXPECT_EQ(result, expected);
  96. }
  97. TEST_F(DisplaySettingsComponentFixture, DisplaySettingsComponent_ConvertToFlagsAllSet)
  98. {
  99. AzToolsFramework::DisplaySettingsState state;
  100. state.m_noCollision = true;
  101. state.m_noLabels = true;
  102. state.m_simulate = true;
  103. state.m_hideTracks = true;
  104. state.m_hideLinks = true;
  105. state.m_hideHelpers = true;
  106. state.m_showDimensionFigures = true;
  107. AzToolsFramework::DisplaySettingsComponent component;
  108. int result = component.ConvertToFlags(state);
  109. int expected = SETTINGS_NOCOLLISION |
  110. SETTINGS_NOLABELS |
  111. SETTINGS_PHYSICS |
  112. SETTINGS_HIDE_TRACKS |
  113. SETTINGS_HIDE_LINKS |
  114. SETTINGS_HIDE_HELPERS |
  115. SETTINGS_SHOW_DIMENSIONFIGURES;
  116. EXPECT_EQ(result, expected);
  117. }
  118. TEST_F(DisplaySettingsComponentFixture, DisplaySettingsComponent_ConvertToSettingsAllSet)
  119. {
  120. int flags = SETTINGS_NOCOLLISION |
  121. SETTINGS_NOLABELS |
  122. SETTINGS_PHYSICS |
  123. SETTINGS_HIDE_TRACKS |
  124. SETTINGS_HIDE_LINKS |
  125. SETTINGS_HIDE_HELPERS |
  126. SETTINGS_SHOW_DIMENSIONFIGURES;
  127. AzToolsFramework::DisplaySettingsState expected;
  128. expected.m_noCollision = true;
  129. expected.m_noLabels = true;
  130. expected.m_simulate = true;
  131. expected.m_hideTracks = true;
  132. expected.m_hideLinks = true;
  133. expected.m_hideHelpers = true;
  134. expected.m_showDimensionFigures = true;
  135. AzToolsFramework::DisplaySettingsComponent component;
  136. AzToolsFramework::DisplaySettingsState result = component.ConvertToSettings(flags);
  137. EXPECT_EQ(result, expected);
  138. }
  139. TEST_F(DisplaySettingsComponentFixture, DisplaySettingsComponent_ConvertToSettingsAllUnset)
  140. {
  141. int flags = 0x0;
  142. AzToolsFramework::DisplaySettingsState expected;
  143. expected.m_noCollision = false;
  144. expected.m_noLabels = false;
  145. expected.m_simulate = false;
  146. expected.m_hideTracks = false;
  147. expected.m_hideLinks = false;
  148. expected.m_hideHelpers = false;
  149. expected.m_showDimensionFigures = false;
  150. AzToolsFramework::DisplaySettingsComponent component;
  151. AzToolsFramework::DisplaySettingsState result = component.ConvertToSettings(flags);
  152. EXPECT_EQ(result, expected);
  153. }
  154. TEST_F(DisplaySettingsComponentFixture, DisplaySettingsState_ToString)
  155. {
  156. AzToolsFramework::DisplaySettingsState state;
  157. state.m_noCollision = false;
  158. state.m_noLabels = true;
  159. state.m_simulate = false;
  160. state.m_hideTracks = true;
  161. state.m_hideLinks = false;
  162. state.m_hideHelpers = true;
  163. state.m_showDimensionFigures = false;
  164. AZStd::string result = state.ToString();
  165. EXPECT_EQ(result, "(no_collision=False, no_labels=True, simulate=False, hide_tracks=True, hide_links=False, hide_helpers=True, show_dimension_figures=False)");
  166. }
  167. }