PropertyIntSpinCtrlTests.cpp 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  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 "PropertyIntCtrlCommonTests.h"
  9. #include <AzToolsFramework/UI/PropertyEditor/PropertyIntSpinCtrl.hxx>
  10. namespace UnitTest
  11. {
  12. using namespace AzToolsFramework;
  13. template <typename ValueType>
  14. using PropertySpinCtrlFixture = PropertyCtrlFixture<ValueType, PropertyIntSpinCtrl, IntSpinBoxHandler>;
  15. TYPED_TEST_SUITE(PropertySpinCtrlFixture, IntegerPrimtitiveTestConfigs);
  16. TYPED_TEST(PropertySpinCtrlFixture, PropertySpinCtrlHandlersCreated)
  17. {
  18. this->PropertyCtrlHandlersCreated();
  19. }
  20. TYPED_TEST(PropertySpinCtrlFixture, PropertySpinCtrlWidgetsCreated)
  21. {
  22. this->PropertyCtrlWidgetsCreated();
  23. }
  24. TYPED_TEST(PropertySpinCtrlFixture, SpinBoxWidget_Minimum_ExpectQtWidgetLimits_Min)
  25. {
  26. this->Widget_Minimum_ExpectQtWidgetLimits_Min();
  27. }
  28. TYPED_TEST(PropertySpinCtrlFixture, SpinBoxWidget_Maximum_ExpectQtWidgetLimits_Max)
  29. {
  30. EXPECT_EQ(this->m_widget->maximum(), AzToolsFramework::QtWidgetLimits<TypeParam>::Max());
  31. }
  32. TYPED_TEST(PropertySpinCtrlFixture, SpinBoxHandlerMinMaxLimit_ModifyHandler_ExpectSuccessAndValidRangeLimitToolTipString)
  33. {
  34. this->HandlerMinMaxLimit_ModifyHandler_ExpectSuccessAndValidRangeLimitToolTipString();
  35. }
  36. TYPED_TEST(PropertySpinCtrlFixture, SpinBoxHandlerMinMaxLessLimit_ModifyHandler_ExpectSuccessAndValidLessLimitToolTipString)
  37. {
  38. this->HandlerMinMaxLessLimit_ModifyHandler_ExpectSuccessAndValidLessLimitToolTipString();
  39. }
  40. struct PropertyEditorHandler
  41. : public AzToolsFramework::PropertyEditorGUIMessages::Bus::Handler
  42. {
  43. PropertyEditorHandler()
  44. {
  45. AzToolsFramework::PropertyEditorGUIMessages::Bus::Handler::BusConnect();
  46. }
  47. ~PropertyEditorHandler()
  48. {
  49. AzToolsFramework::PropertyEditorGUIMessages::Bus::Handler::BusDisconnect();
  50. }
  51. // AzToolsFramework::PropertyEditorGUIMessages::Bus overrides ...
  52. void RequestWrite([[maybe_unused]] QWidget* editorGUI) override
  53. {
  54. m_requestWriteCallCount++;
  55. }
  56. void RequestRefresh([[maybe_unused]] PropertyModificationRefreshLevel level) override
  57. {
  58. }
  59. void AddElementsToParentContainer(
  60. [[maybe_unused]] QWidget* editorGUI,
  61. [[maybe_unused]] size_t numElements,
  62. [[maybe_unused]] const InstanceDataNode::FillDataClassCallback& fillDataCallback) override
  63. {
  64. }
  65. void RequestPropertyNotify([[maybe_unused]] QWidget* editorGUI) override
  66. {
  67. }
  68. void OnEditingFinished([[maybe_unused]]QWidget* editorGUI) override
  69. {
  70. m_onEditingFinishedCallCount++;
  71. }
  72. int m_requestWriteCallCount = 0;
  73. int m_onEditingFinishedCallCount = 0;
  74. };
  75. TYPED_TEST(PropertySpinCtrlFixture, SpinBoxWidgetValueChangedInvokesPropertyEditorGUIMessages)
  76. {
  77. // setup the event handler
  78. PropertyEditorHandler eventHandler;
  79. // trigger the QT signal
  80. this->EmitWidgetValueChanged();
  81. // there should be at least 1 call to RequestWrite.
  82. EXPECT_GT(eventHandler.m_requestWriteCallCount, 0);
  83. }
  84. TYPED_TEST(PropertySpinCtrlFixture, SpinBoxWidgetEditingFinishedInvokesPropertyEditorGUIMessages)
  85. {
  86. // setup the event handler
  87. PropertyEditorHandler eventHandler;
  88. // trigger the QT signal
  89. this->EmitWidgetEditingFinished();
  90. // there should be at least 1 call to OnEditingFinished.
  91. EXPECT_GT(eventHandler.m_onEditingFinishedCallCount, 0);
  92. }
  93. } // namespace UnitTest