3
0

ScriptCanvasUnitTest_MathFunctions.cpp 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  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/MathFunctions.h>
  10. #include <Libraries/Math/MathNodeUtilities.h>
  11. namespace ScriptCanvasUnitTest
  12. {
  13. using namespace ScriptCanvas;
  14. class ScriptCanvasUnitTestMathFunctions
  15. : public ScriptCanvasUnitTestFixture
  16. {
  17. public:
  18. void SetUp() override
  19. {
  20. ScriptCanvasUnitTestFixture::SetUp();
  21. MathNodeUtilities::RandomEngineInit();
  22. }
  23. void TearDown() override
  24. {
  25. MathNodeUtilities::RandomEngineReset();
  26. ScriptCanvasUnitTestFixture::TearDown();
  27. }
  28. };
  29. TEST_F(ScriptCanvasUnitTestMathFunctions, MultiplyAndAdd_Call_GetExpectedResult)
  30. {
  31. auto actualResult = MathFunctions::MultiplyAndAdd(1, 1, 1);
  32. EXPECT_EQ(actualResult, 2);
  33. }
  34. TEST_F(ScriptCanvasUnitTestMathFunctions, StringToNumber_Call_GetExpectedResult)
  35. {
  36. auto actualResult = MathFunctions::StringToNumber("123");
  37. EXPECT_EQ(actualResult, 123);
  38. }
  39. TEST_F(ScriptCanvasUnitTestMathFunctions, RandomColor_Call_GetExpectedResult)
  40. {
  41. AZ::Color min = AZ::Color::CreateZero();
  42. AZ::Color max = AZ::Color::CreateOne();
  43. auto actualResult = MathRandoms::RandomColor(min, max);
  44. EXPECT_TRUE(actualResult.GetR() >= min.GetR() && actualResult.GetR() <= max.GetR());
  45. EXPECT_TRUE(actualResult.GetG() >= min.GetG() && actualResult.GetG() <= max.GetG());
  46. EXPECT_TRUE(actualResult.GetB() >= min.GetB() && actualResult.GetB() <= max.GetB());
  47. EXPECT_TRUE(actualResult.GetA() >= min.GetA() && actualResult.GetA() <= max.GetA());
  48. }
  49. TEST_F(ScriptCanvasUnitTestMathFunctions, RandomGrayscale_Call_GetExpectedResult)
  50. {
  51. auto actualResult = MathRandoms::RandomGrayscale(0, 1);
  52. EXPECT_TRUE(actualResult.GetR() >= 0 && actualResult.GetR() <= 1);
  53. EXPECT_TRUE(actualResult.GetG() >= 0 && actualResult.GetG() <= 1);
  54. EXPECT_TRUE(actualResult.GetB() >= 0 && actualResult.GetB() <= 1);
  55. }
  56. TEST_F(ScriptCanvasUnitTestMathFunctions, RandomInteger_Call_GetExpectedResult)
  57. {
  58. auto actualResult = MathRandoms::RandomInteger(0, 1);
  59. EXPECT_TRUE(actualResult >= 0 && actualResult <= 1);
  60. }
  61. TEST_F(ScriptCanvasUnitTestMathFunctions, RandomNumber_Call_GetExpectedResult)
  62. {
  63. auto actualResult = MathRandoms::RandomNumber(0, 1);
  64. EXPECT_TRUE(actualResult >= 0 && actualResult <= 1);
  65. }
  66. TEST_F(ScriptCanvasUnitTestMathFunctions, RandomPointInBox_Call_GetExpectedResult)
  67. {
  68. auto actualResult = MathRandoms::RandomPointInBox(AZ::Vector3(1, 1, 1));
  69. EXPECT_TRUE(actualResult.GetX() >= -0.5 && actualResult.GetX() <= 0.5);
  70. EXPECT_TRUE(actualResult.GetY() >= -0.5 && actualResult.GetY() <= 0.5);
  71. EXPECT_TRUE(actualResult.GetZ() >= -0.5 && actualResult.GetZ() <= 0.5);
  72. }
  73. TEST_F(ScriptCanvasUnitTestMathFunctions, RandomPointOnCircle_Call_GetExpectedResult)
  74. {
  75. auto actualResult = MathRandoms::RandomPointOnCircle(1);
  76. EXPECT_TRUE(actualResult.GetX() >= -1 && actualResult.GetX() <= 1);
  77. EXPECT_TRUE(actualResult.GetY() >= -1 && actualResult.GetY() <= 1);
  78. }
  79. TEST_F(ScriptCanvasUnitTestMathFunctions, RandomPointInCone_Call_GetExpectedResult)
  80. {
  81. auto actualResult = MathRandoms::RandomPointInCone(1, 180);
  82. EXPECT_TRUE(actualResult.GetX() >= -1 && actualResult.GetX() <= 1);
  83. EXPECT_TRUE(actualResult.GetY() >= -1 && actualResult.GetY() <= 1);
  84. EXPECT_TRUE(actualResult.GetZ() >= 0 && actualResult.GetZ() <= 1);
  85. }
  86. TEST_F(ScriptCanvasUnitTestMathFunctions, RandomPointInCylinder_Call_GetExpectedResult)
  87. {
  88. auto actualResult = MathRandoms::RandomPointInCylinder(1, 1);
  89. EXPECT_TRUE(actualResult.GetX() >= -1 && actualResult.GetX() <= 1);
  90. EXPECT_TRUE(actualResult.GetY() >= -1 && actualResult.GetY() <= 1);
  91. EXPECT_TRUE(actualResult.GetZ() >= -0.5 && actualResult.GetZ() <= 0.5);
  92. }
  93. TEST_F(ScriptCanvasUnitTestMathFunctions, RandomPointInCircle_Call_GetExpectedResult)
  94. {
  95. auto actualResult = MathRandoms::RandomPointInCircle(1);
  96. EXPECT_TRUE(actualResult.GetX() >= -1 && actualResult.GetX() <= 1);
  97. EXPECT_TRUE(actualResult.GetY() >= -1 && actualResult.GetY() <= 1);
  98. }
  99. TEST_F(ScriptCanvasUnitTestMathFunctions, RandomPointInEllipsoid_Call_GetExpectedResult)
  100. {
  101. auto actualResult = MathRandoms::RandomPointInEllipsoid(AZ::Vector3(1, 2, 3));
  102. EXPECT_TRUE(actualResult.GetX() >= -1 && actualResult.GetX() <= 1);
  103. EXPECT_TRUE(actualResult.GetY() >= -2 && actualResult.GetY() <= 2);
  104. EXPECT_TRUE(actualResult.GetY() >= -3 && actualResult.GetY() <= 3);
  105. }
  106. TEST_F(ScriptCanvasUnitTestMathFunctions, RandomPointInSphere_Call_GetExpectedResult)
  107. {
  108. auto actualResult = MathRandoms::RandomPointInSphere(1);
  109. EXPECT_TRUE(actualResult.GetX() >= -1 && actualResult.GetX() <= 1);
  110. EXPECT_TRUE(actualResult.GetY() >= -1 && actualResult.GetY() <= 1);
  111. EXPECT_TRUE(actualResult.GetZ() >= -1 && actualResult.GetZ() <= 1);
  112. }
  113. TEST_F(ScriptCanvasUnitTestMathFunctions, RandomPointInSquare_Call_GetExpectedResult)
  114. {
  115. auto actualResult = MathRandoms::RandomPointInSquare(AZ::Vector2(1, 1));
  116. EXPECT_TRUE(actualResult.GetX() >= -0.5 && actualResult.GetX() <= 0.5);
  117. EXPECT_TRUE(actualResult.GetY() >= -0.5 && actualResult.GetY() <= 0.5);
  118. }
  119. TEST_F(ScriptCanvasUnitTestMathFunctions, RandomPointOnSphere_Call_GetExpectedResult)
  120. {
  121. auto actualResult = MathRandoms::RandomPointOnSphere(1);
  122. EXPECT_TRUE(AZStd::abs(actualResult.GetLength() - 1) < 0.01);
  123. EXPECT_TRUE(actualResult.GetX() >= -1 && actualResult.GetX() <= 1);
  124. EXPECT_TRUE(actualResult.GetY() >= -1 && actualResult.GetY() <= 1);
  125. EXPECT_TRUE(actualResult.GetZ() >= -1 && actualResult.GetZ() <= 1);
  126. }
  127. TEST_F(ScriptCanvasUnitTestMathFunctions, RandomQuaternion_Call_GetExpectedResult)
  128. {
  129. auto actualResult = MathRandoms::RandomQuaternion(0, 30);
  130. EXPECT_TRUE(actualResult.GetAngle() >= 0 && actualResult.GetX() <= 30);
  131. EXPECT_TRUE(actualResult.GetX() >= -1 && actualResult.GetX() <= 1);
  132. EXPECT_TRUE(actualResult.GetY() >= -1 && actualResult.GetY() <= 1);
  133. EXPECT_TRUE(actualResult.GetZ() >= -1 && actualResult.GetZ() <= 1);
  134. }
  135. TEST_F(ScriptCanvasUnitTestMathFunctions, RandomUnitVector2_Call_GetExpectedResult)
  136. {
  137. auto actualResult = MathRandoms::RandomUnitVector2();
  138. EXPECT_TRUE(AZStd::abs(actualResult.GetLength() - 1) < 0.01);
  139. EXPECT_TRUE(actualResult.GetX() >= -1 && actualResult.GetX() <= 1);
  140. EXPECT_TRUE(actualResult.GetY() >= -1 && actualResult.GetY() <= 1);
  141. }
  142. TEST_F(ScriptCanvasUnitTestMathFunctions, RandomUnitVector3_Call_GetExpectedResult)
  143. {
  144. auto actualResult = MathRandoms::RandomUnitVector3();
  145. EXPECT_TRUE(AZStd::abs(actualResult.GetLength() - 1) < 0.01);
  146. EXPECT_TRUE(actualResult.GetX() >= -1 && actualResult.GetX() <= 1);
  147. EXPECT_TRUE(actualResult.GetY() >= -1 && actualResult.GetY() <= 1);
  148. EXPECT_TRUE(actualResult.GetZ() >= -1 && actualResult.GetZ() <= 1);
  149. }
  150. TEST_F(ScriptCanvasUnitTestMathFunctions, RandomVector2_Call_GetExpectedResult)
  151. {
  152. auto actualResult = MathRandoms::RandomVector2(AZ::Vector2(0, 0), AZ::Vector2(1, 1));
  153. EXPECT_TRUE(actualResult.GetX() >= 0 && actualResult.GetX() <= 1);
  154. EXPECT_TRUE(actualResult.GetY() >= 0 && actualResult.GetY() <= 1);
  155. }
  156. TEST_F(ScriptCanvasUnitTestMathFunctions, RandomVector3_Call_GetExpectedResult)
  157. {
  158. auto actualResult = MathRandoms::RandomVector3(AZ::Vector3(0, 0, 0), AZ::Vector3(1, 1, 1));
  159. EXPECT_TRUE(actualResult.GetX() >= 0 && actualResult.GetX() <= 1);
  160. EXPECT_TRUE(actualResult.GetY() >= 0 && actualResult.GetY() <= 1);
  161. EXPECT_TRUE(actualResult.GetZ() >= 0 && actualResult.GetZ() <= 1);
  162. }
  163. TEST_F(ScriptCanvasUnitTestMathFunctions, RandomVector4_Call_GetExpectedResult)
  164. {
  165. auto actualResult = MathRandoms::RandomVector4(AZ::Vector4(0, 0, 0, 0), AZ::Vector4(1, 1, 1, 1));
  166. EXPECT_TRUE(actualResult.GetX() >= 0 && actualResult.GetX() <= 1);
  167. EXPECT_TRUE(actualResult.GetY() >= 0 && actualResult.GetY() <= 1);
  168. EXPECT_TRUE(actualResult.GetZ() >= 0 && actualResult.GetZ() <= 1);
  169. EXPECT_TRUE(actualResult.GetW() >= 0 && actualResult.GetW() <= 1);
  170. }
  171. } // namespace ScriptCanvasUnitTest