3
0

ScriptCanvasUnitTest_Quaternion.cpp 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  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 <Libraries/Math/Quaternion.h>
  10. namespace ScriptCanvasUnitTest
  11. {
  12. using namespace ScriptCanvas;
  13. using ScriptCanvasUnitTestQuaternionFunctions = ScriptCanvasUnitTestFixture;
  14. TEST_F(ScriptCanvasUnitTestQuaternionFunctions, Conjugate_Call_GetExpectedResult)
  15. {
  16. auto actualResult = QuaternionFunctions::Conjugate(AZ::Quaternion::CreateIdentity());
  17. EXPECT_EQ(actualResult, AZ::Quaternion::CreateIdentity());
  18. }
  19. TEST_F(ScriptCanvasUnitTestQuaternionFunctions, ConvertTransformToRotation_Call_GetExpectedResult)
  20. {
  21. auto actualResult = QuaternionFunctions::ConvertTransformToRotation(AZ::Transform::CreateIdentity());
  22. EXPECT_EQ(actualResult, AZ::Quaternion::CreateIdentity());
  23. }
  24. TEST_F(ScriptCanvasUnitTestQuaternionFunctions, Dot_Call_GetExpectedResult)
  25. {
  26. auto actualResult = QuaternionFunctions::Dot(AZ::Quaternion::CreateIdentity(), AZ::Quaternion::CreateIdentity());
  27. EXPECT_EQ(actualResult, 1);
  28. }
  29. TEST_F(ScriptCanvasUnitTestQuaternionFunctions, FromAxisAngleDegrees_Call_GetExpectedResult)
  30. {
  31. auto actualResult = QuaternionFunctions::FromAxisAngleDegrees(AZ::Vector3::CreateZero(), 0);
  32. EXPECT_EQ(actualResult, AZ::Quaternion::CreateIdentity());
  33. }
  34. TEST_F(ScriptCanvasUnitTestQuaternionFunctions, FromMatrix3x3_Call_GetExpectedResult)
  35. {
  36. auto actualResult = QuaternionFunctions::FromMatrix3x3(AZ::Matrix3x3::CreateIdentity());
  37. #if AZ_TRAIT_USE_PLATFORM_SIMD_NEON
  38. EXPECT_THAT(actualResult, IsClose(AZ::Quaternion::CreateIdentity()));
  39. #else
  40. EXPECT_EQ(actualResult, AZ::Quaternion::CreateIdentity());
  41. #endif // AZ_TRAIT_USE_PLATFORM_SIMD_NEON
  42. }
  43. TEST_F(ScriptCanvasUnitTestQuaternionFunctions, FromMatrix4x4_Call_GetExpectedResult)
  44. {
  45. auto actualResult = QuaternionFunctions::FromMatrix4x4(AZ::Matrix4x4::CreateIdentity());
  46. #if AZ_TRAIT_USE_PLATFORM_SIMD_NEON
  47. EXPECT_THAT(actualResult, IsClose(AZ::Quaternion::CreateIdentity()));
  48. #else
  49. EXPECT_EQ(actualResult, AZ::Quaternion::CreateIdentity());
  50. #endif // AZ_TRAIT_USE_PLATFORM_SIMD_NEON
  51. }
  52. TEST_F(ScriptCanvasUnitTestQuaternionFunctions, FromTransform_Call_GetExpectedResult)
  53. {
  54. auto actualResult = QuaternionFunctions::FromTransform(AZ::Transform::CreateIdentity());
  55. EXPECT_EQ(actualResult, AZ::Quaternion::CreateIdentity());
  56. }
  57. TEST_F(ScriptCanvasUnitTestQuaternionFunctions, InvertFull_Call_GetExpectedResult)
  58. {
  59. auto actualResult = QuaternionFunctions::InvertFull(AZ::Quaternion::CreateIdentity());
  60. EXPECT_EQ(actualResult, AZ::Quaternion::CreateIdentity());
  61. }
  62. TEST_F(ScriptCanvasUnitTestQuaternionFunctions, IsClose_Call_GetExpectedResult)
  63. {
  64. auto actualResult = QuaternionFunctions::IsClose(AZ::Quaternion::CreateIdentity(), AZ::Quaternion::CreateIdentity(), 0.001);
  65. EXPECT_TRUE(actualResult);
  66. }
  67. TEST_F(ScriptCanvasUnitTestQuaternionFunctions, IsFinite_Call_GetExpectedResult)
  68. {
  69. auto actualResult = QuaternionFunctions::IsFinite(AZ::Quaternion::CreateIdentity());
  70. EXPECT_TRUE(actualResult);
  71. }
  72. TEST_F(ScriptCanvasUnitTestQuaternionFunctions, IsIdentity_Call_GetExpectedResult)
  73. {
  74. auto actualResult = QuaternionFunctions::IsIdentity(AZ::Quaternion::CreateIdentity(), 0.001);
  75. EXPECT_TRUE(actualResult);
  76. }
  77. TEST_F(ScriptCanvasUnitTestQuaternionFunctions, IsZero_Call_GetExpectedResult)
  78. {
  79. auto actualResult = QuaternionFunctions::IsZero(AZ::Quaternion::CreateZero(), 0.001);
  80. EXPECT_TRUE(actualResult);
  81. }
  82. TEST_F(ScriptCanvasUnitTestQuaternionFunctions, LengthReciprocal_Call_GetExpectedResult)
  83. {
  84. auto actualResult = QuaternionFunctions::LengthReciprocal(AZ::Quaternion::CreateIdentity());
  85. #if AZ_TRAIT_USE_PLATFORM_SIMD_NEON
  86. constexpr float tolerance = 0.00001f;
  87. EXPECT_NEAR(actualResult, 1.0f, tolerance);
  88. #else
  89. EXPECT_EQ(actualResult, 1);
  90. #endif // AZ_TRAIT_USE_PLATFORM_SIMD_NEON
  91. }
  92. TEST_F(ScriptCanvasUnitTestQuaternionFunctions, LengthSquared_Call_GetExpectedResult)
  93. {
  94. auto actualResult = QuaternionFunctions::LengthSquared(AZ::Quaternion::CreateIdentity());
  95. EXPECT_EQ(actualResult, 1);
  96. }
  97. TEST_F(ScriptCanvasUnitTestQuaternionFunctions, Lerp_Call_GetExpectedResult)
  98. {
  99. auto actualResult = QuaternionFunctions::Lerp(AZ::Quaternion::CreateZero(), AZ::Quaternion::CreateIdentity(), 0.5);
  100. EXPECT_EQ(actualResult, AZ::Quaternion::CreateFromVector3AndValue(AZ::Vector3::CreateZero(), 0.5));
  101. }
  102. TEST_F(ScriptCanvasUnitTestQuaternionFunctions, MultiplyByNumber_Call_GetExpectedResult)
  103. {
  104. auto actualResult = QuaternionFunctions::MultiplyByNumber(AZ::Quaternion::CreateIdentity(), 0.5);
  105. EXPECT_EQ(actualResult, AZ::Quaternion::CreateFromVector3AndValue(AZ::Vector3::CreateZero(), 0.5));
  106. }
  107. TEST_F(ScriptCanvasUnitTestQuaternionFunctions, Negate_Call_GetExpectedResult)
  108. {
  109. auto actualResult = QuaternionFunctions::Negate(AZ::Quaternion::CreateIdentity());
  110. EXPECT_EQ(actualResult, AZ::Quaternion::CreateFromVector3AndValue(AZ::Vector3::CreateZero(), -1));
  111. }
  112. TEST_F(ScriptCanvasUnitTestQuaternionFunctions, Normalize_Call_GetExpectedResult)
  113. {
  114. auto actualResult = QuaternionFunctions::Normalize(AZ::Quaternion::CreateIdentity());
  115. EXPECT_EQ(actualResult, AZ::Quaternion::CreateIdentity());
  116. }
  117. TEST_F(ScriptCanvasUnitTestQuaternionFunctions, RotationXDegrees_Call_GetExpectedResult)
  118. {
  119. auto actualResult = QuaternionFunctions::RotationXDegrees(0);
  120. EXPECT_EQ(actualResult, AZ::Quaternion::CreateIdentity());
  121. }
  122. TEST_F(ScriptCanvasUnitTestQuaternionFunctions, RotationYDegrees_Call_GetExpectedResult)
  123. {
  124. auto actualResult = QuaternionFunctions::RotationYDegrees(0);
  125. EXPECT_EQ(actualResult, AZ::Quaternion::CreateIdentity());
  126. }
  127. TEST_F(ScriptCanvasUnitTestQuaternionFunctions, RotationZDegrees_Call_GetExpectedResult)
  128. {
  129. auto actualResult = QuaternionFunctions::RotationZDegrees(0);
  130. EXPECT_EQ(actualResult, AZ::Quaternion::CreateIdentity());
  131. }
  132. TEST_F(ScriptCanvasUnitTestQuaternionFunctions, ToAngleDegrees_Call_GetExpectedResult)
  133. {
  134. auto actualResult = QuaternionFunctions::ToAngleDegrees(AZ::Quaternion::CreateIdentity());
  135. EXPECT_EQ(actualResult, 0);
  136. }
  137. TEST_F(ScriptCanvasUnitTestQuaternionFunctions, CreateFromEulerAngles_Call_GetExpectedResult)
  138. {
  139. auto actualResult = QuaternionFunctions::CreateFromEulerAngles(0, 0, 0);
  140. EXPECT_EQ(actualResult, AZ::Quaternion::CreateIdentity());
  141. }
  142. TEST_F(ScriptCanvasUnitTestQuaternionFunctions, RotateVector3_Call_GetExpectedResult)
  143. {
  144. auto actualResult = QuaternionFunctions::RotateVector3(AZ::Quaternion::CreateIdentity(), AZ::Vector3::CreateOne());
  145. EXPECT_EQ(actualResult, AZ::Vector3::CreateOne());
  146. }
  147. } // namespace ScriptCanvasUnitTest