RayTests.cpp 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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 <AZTestShared/Math/MathTestHelpers.h>
  9. #include <AzCore/Math/LineSegment.h>
  10. #include <AzCore/Math/Ray.h>
  11. #include <AzCore/Math/Vector3.h>
  12. #include <AzCore/UnitTest/TestTypes.h>
  13. namespace UnitTest
  14. {
  15. TEST(MATH_Ray, Ray_CreateFromOriginAndDirection)
  16. {
  17. AZ::Ray ray(AZ::Vector3(0.0f, 0.5f, 12.0f), AZ::Vector3(3.0f, 0.0f, 4.0f).GetNormalized());
  18. EXPECT_THAT(ray.GetOrigin(), IsClose(AZ::Vector3(0.0f, 0.5f, 12.0f)));
  19. EXPECT_THAT(ray.GetDirection(), IsClose(AZ::Vector3(3.0f, 0.0f, 4.0f).GetNormalized()));
  20. }
  21. TEST(MATH_Ray, Ray_CreateFromLineSegment)
  22. {
  23. AZ::LineSegment segment(AZ::Vector3(0.0f, 0.5f, 12.0f), AZ::Vector3(15.0f, 0.0f, 3.0f));
  24. AZ::Ray ray = AZ::Ray::CreateFromLineSegment(segment);
  25. EXPECT_THAT(ray.GetOrigin(), IsClose(AZ::Vector3(0.0f, 0.5f, 12.0f)));
  26. EXPECT_THAT(ray.GetDirection(), IsClose((AZ::Vector3(15.0f, 0.0f, 3.0f) - AZ::Vector3(0.0f, 0.5f, 12.0f)).GetNormalized()));
  27. }
  28. TEST(MATH_Ray, Ray_CreateDirectionNonNormalizedFail)
  29. {
  30. AZ_PUSH_DISABLE_WARNING_GCC("-Wunused-but-set-variable")
  31. AZ_TEST_START_TRACE_SUPPRESSION;
  32. AZ::Ray rayUnused = AZ::Ray(AZ::Vector3(), AZ::Vector3(3, 0, 0));
  33. #ifdef AZ_DEBUG_BUILD
  34. // AZ_MATH_ASSERT only asserts during debug builds, so expect an assert here
  35. AZ_TEST_STOP_TRACE_SUPPRESSION(1);
  36. #else
  37. AZ_TEST_STOP_TRACE_SUPPRESSION(0);
  38. #endif
  39. AZ_POP_DISABLE_WARNING_GCC
  40. }
  41. } // namespace UnitTest