TransformRowWidgetTests.cpp 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  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 <AzTest/AzTest.h>
  9. #include <AzCore/Math/Transform.h>
  10. #include <AzCore/Math/Quaternion.h>
  11. #include <SceneAPI/SceneUI/RowWidgets/TransformRowWidget.h>
  12. namespace AZ
  13. {
  14. namespace SceneAPI
  15. {
  16. namespace SceneUI
  17. {
  18. class TransformRowWidgetTest
  19. : public ::testing::Test
  20. {
  21. public:
  22. ExpandedTransform m_expanded;
  23. Transform m_transform;
  24. Vector3 m_translation = Vector3(10.0f, 20.0f, 30.0f);
  25. Vector3 m_rotation = Vector3(30.0f, 45.0f, 60.0f);
  26. float m_scale = 3.0f;
  27. };
  28. TEST_F(TransformRowWidgetTest, GetTranslation_TranslationInMatrix_TranslationCanBeRetrievedDirectly)
  29. {
  30. m_transform = Transform::CreateTranslation(m_translation);
  31. m_expanded.SetTransform(m_transform);
  32. const Vector3& returned = m_expanded.GetTranslation();
  33. EXPECT_NEAR(m_translation.GetX(), returned.GetX(), 0.1f);
  34. EXPECT_NEAR(m_translation.GetY(), returned.GetY(), 0.1f);
  35. EXPECT_NEAR(m_translation.GetZ(), returned.GetZ(), 0.1f);
  36. }
  37. TEST_F(TransformRowWidgetTest, GetTranslation_TranslationInMatrix_TranslationCanBeRetrievedFromTransform)
  38. {
  39. m_transform = Transform::CreateTranslation(m_translation);
  40. m_expanded.SetTransform(m_transform);
  41. Transform rebuild;
  42. m_expanded.GetTransform(rebuild);
  43. Vector3 returned = rebuild.GetTranslation();
  44. EXPECT_NEAR(m_translation.GetX(), returned.GetX(), 0.1f);
  45. EXPECT_NEAR(m_translation.GetY(), returned.GetY(), 0.1f);
  46. EXPECT_NEAR(m_translation.GetZ(), returned.GetZ(), 0.1f);
  47. }
  48. TEST_F(TransformRowWidgetTest, DISABLED_GetRotation_RotationInMatrix_RotationCanBeRetrievedDirectly)
  49. {
  50. m_transform = AZ::ConvertEulerDegreesToTransform(m_rotation);
  51. m_expanded.SetTransform(m_transform);
  52. const Vector3& returned = m_expanded.GetRotation();
  53. EXPECT_NEAR(m_rotation.GetX(), returned.GetX(), 1.0f);
  54. EXPECT_NEAR(m_rotation.GetY(), returned.GetY(), 1.0f);
  55. EXPECT_NEAR(m_rotation.GetZ(), returned.GetZ(), 1.0f);
  56. }
  57. TEST_F(TransformRowWidgetTest, DISABLED_GetRotation_RotationInMatrix_RotationCanBeRetrievedFromTransform)
  58. {
  59. m_transform.SetFromEulerDegrees(m_rotation);
  60. m_expanded.SetTransform(m_transform);
  61. Transform rebuild;
  62. m_expanded.GetTransform(rebuild);
  63. Vector3 returned = rebuild.GetEulerDegrees();
  64. EXPECT_NEAR(m_rotation.GetX(), returned.GetX(), 1.0f);
  65. EXPECT_NEAR(m_rotation.GetY(), returned.GetY(), 1.0f);
  66. EXPECT_NEAR(m_rotation.GetZ(), returned.GetZ(), 1.0f);
  67. }
  68. TEST_F(TransformRowWidgetTest, GetScale_ScaleInMatrix_ScaleCanBeRetrievedDirectly)
  69. {
  70. m_transform = Transform::CreateUniformScale(m_scale);
  71. m_expanded.SetTransform(m_transform);
  72. const float returned = m_expanded.GetScale();
  73. EXPECT_NEAR(m_scale, returned, 0.1f);
  74. }
  75. TEST_F(TransformRowWidgetTest, GetScale_ScaleInMatrix_ScaleCanBeRetrievedFromTransform)
  76. {
  77. m_transform = Transform::CreateUniformScale(m_scale);
  78. m_expanded.SetTransform(m_transform);
  79. Transform rebuild;
  80. m_expanded.GetTransform(rebuild);
  81. float returned = rebuild.GetUniformScale();
  82. EXPECT_NEAR(m_scale, returned, 0.1f);
  83. }
  84. TEST_F(TransformRowWidgetTest, GetTransform_RotateAndTranslateInMatrix_ReconstructedTransformMatchesOriginal)
  85. {
  86. Quaternion quaternion = AZ::ConvertEulerDegreesToQuaternion(m_rotation);
  87. m_transform = Transform::CreateFromQuaternionAndTranslation(quaternion, m_translation);
  88. m_expanded.SetTransform(m_transform);
  89. Transform rebuild;
  90. m_expanded.GetTransform(rebuild);
  91. EXPECT_TRUE(m_transform.IsClose(rebuild, 0.001f));
  92. }
  93. TEST_F(TransformRowWidgetTest, GetTransform_RotateTranslateAndScaleInMatrix_ReconstructedTransformMatchesOriginal)
  94. {
  95. Quaternion quaternion = AZ::ConvertEulerDegreesToQuaternion(m_rotation);
  96. m_transform = Transform::CreateFromQuaternionAndTranslation(quaternion, m_translation);
  97. m_transform.MultiplyByUniformScale(m_scale);
  98. m_expanded.SetTransform(m_transform);
  99. Transform rebuild;
  100. m_expanded.GetTransform(rebuild);
  101. EXPECT_TRUE(m_transform.IsClose(rebuild, 0.001f));
  102. }
  103. } // namespace SceneUI
  104. } // namespace SceneAPI
  105. } // namespace AZ