2
0

LinearCurveTest.cpp 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
  2. // SPDX-FileCopyrightText: 2021 Jorrit Rouwe
  3. // SPDX-License-Identifier: MIT
  4. #include "UnitTestFramework.h"
  5. #include <Jolt/Core/LinearCurve.h>
  6. TEST_SUITE("LinearCurveTest")
  7. {
  8. TEST_CASE("Test0PointCurve")
  9. {
  10. LinearCurve curve;
  11. CHECK(curve.GetValue(1.0f) == 0.0f);
  12. }
  13. TEST_CASE("Test1PointCurve")
  14. {
  15. LinearCurve curve;
  16. curve.AddPoint(1.0f, 20.0f);
  17. CHECK(curve.GetValue(0.9f) == 20.0f);
  18. CHECK(curve.GetValue(1.0f) == 20.0f);
  19. CHECK(curve.GetValue(1.1f) == 20.0f);
  20. }
  21. TEST_CASE("Test2PointCurve")
  22. {
  23. LinearCurve curve;
  24. curve.AddPoint(-1.0f, 40.0f);
  25. curve.AddPoint(-3.0f, 20.0f);
  26. curve.Sort();
  27. CHECK_APPROX_EQUAL(curve.GetValue(-3.1f), 20.0f);
  28. CHECK_APPROX_EQUAL(curve.GetValue(-3.0f), 20.0f);
  29. CHECK_APPROX_EQUAL(curve.GetValue(-2.0f), 30.0f);
  30. CHECK_APPROX_EQUAL(curve.GetValue(-1.0f), 40.0f);
  31. CHECK_APPROX_EQUAL(curve.GetValue(-0.9f), 40.0f);
  32. }
  33. TEST_CASE("Test3PointCurve")
  34. {
  35. LinearCurve curve;
  36. curve.AddPoint(1.0f, 20.0f);
  37. curve.AddPoint(5.0f, 60.0f);
  38. curve.AddPoint(3.0f, 40.0f);
  39. curve.Sort();
  40. CHECK_APPROX_EQUAL(curve.GetValue(0.9f), 20.0f);
  41. CHECK_APPROX_EQUAL(curve.GetValue(1.0f), 20.0f);
  42. CHECK_APPROX_EQUAL(curve.GetValue(2.0f), 30.0f);
  43. CHECK_APPROX_EQUAL(curve.GetValue(3.0f), 40.0f);
  44. CHECK_APPROX_EQUAL(curve.GetValue(4.0f), 50.0f);
  45. CHECK_APPROX_EQUAL(curve.GetValue(5.0f), 60.0f);
  46. CHECK_APPROX_EQUAL(curve.GetValue(5.1f), 60.0f);
  47. }
  48. }