BufferedValueTests.cpp 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #include "../Tests.hpp"
  2. #include "core/math/BufferedValue.hpp"
  3. #include "core/math/Vector.hpp"
  4. const float eps = 0.0001f;
  5. static void testInit() {
  6. Core::BufferedValue<float> b = 5.0f;
  7. CORE_TEST_FLOAT(5.0f, b.get(0.0f), eps);
  8. CORE_TEST_FLOAT(5.0f, b.get(0.5f), eps);
  9. CORE_TEST_FLOAT(5.0f, b.get(1.0f), eps);
  10. CORE_TEST_FLOAT(5.0f, b, eps);
  11. }
  12. static void testInterpolate() {
  13. Core::BufferedValue<float> b = 5.0f;
  14. b = 7.0f;
  15. CORE_TEST_FLOAT(5.0f, b.get(0.0f), eps);
  16. CORE_TEST_FLOAT(6.0f, b.get(0.5f), eps);
  17. CORE_TEST_FLOAT(7.0f, b.get(1.0f), eps);
  18. CORE_TEST_FLOAT(7.0f, b, eps);
  19. }
  20. static void testUpdate() {
  21. Core::BufferedValue<float> b = 5.0f;
  22. b = 7.0f;
  23. b.update();
  24. CORE_TEST_FLOAT(7.0f, b.get(0.0f), eps);
  25. CORE_TEST_FLOAT(7.0f, b.get(0.5f), eps);
  26. CORE_TEST_FLOAT(7.0f, b.get(1.0f), eps);
  27. CORE_TEST_FLOAT(7.0f, b, eps);
  28. }
  29. static void testCalculate() {
  30. Core::BufferedValue<float> b = 5.0f;
  31. b = 7.0f;
  32. b += 3.0f;
  33. CORE_TEST_FLOAT(5.0f, b.get(0.0f), eps);
  34. CORE_TEST_FLOAT(7.5f, b.get(0.5f), eps);
  35. CORE_TEST_FLOAT(10.0f, b.get(1.0f), eps);
  36. CORE_TEST_FLOAT(10.0f, b, eps);
  37. CORE_TEST_FLOAT(12.0f, b + 2.0f, eps);
  38. }
  39. static void testVector2() {
  40. Core::Vector2 base(5.0f, 6.0f);
  41. Core::BufferedValue<Core::Vector2> b = base;
  42. CORE_TEST_VECTOR(base, b.get(1.0f));
  43. b = Core::Vector2(7.0f, 5.0);
  44. CORE_TEST_VECTOR(Core::Vector2(7.0f, 5.0f), b.get(1.0f));
  45. b += Core::Vector2(1.0f, 1.0f);
  46. CORE_TEST_VECTOR(Core::Vector2(8.0f, 6.0f), b.get(1.0f));
  47. b -= Core::Vector2(1.0f, 1.0f);
  48. CORE_TEST_VECTOR(Core::Vector2(7.0f, 5.0f), b.get(1.0f));
  49. b *= Core::Vector2(2.0f, 2.0f);
  50. CORE_TEST_VECTOR(Core::Vector2(14.0f, 10.0f), b.get(1.0f));
  51. b /= Core::Vector2(0.5f, 0.5f);
  52. CORE_TEST_VECTOR(Core::Vector2(28.0f, 20.0f), b.get(1.0f));
  53. b = b + Core::Vector2(1.0f, 1.0f);
  54. CORE_TEST_VECTOR(Core::Vector2(29.0f, 21.0f), b.get(1.0f));
  55. b = b - Core::Vector2(1.0f, 1.0f);
  56. CORE_TEST_VECTOR(Core::Vector2(28.0f, 20.0f), b.get(1.0f));
  57. b = b * Core::Vector2(2.0f, 2.0f);
  58. CORE_TEST_VECTOR(Core::Vector2(56.0f, 40.0f), b.get(1.0f));
  59. b = b / Core::Vector2(0.5f, 0.5f);
  60. CORE_TEST_VECTOR(Core::Vector2(112.0f, 80.0f), b.get(1.0f));
  61. b = Core::Vector2(1.0f, 1.0f) + b;
  62. CORE_TEST_VECTOR(Core::Vector2(113.0f, 81.0f), b.get(1.0f));
  63. b = Core::Vector2(1.0f, 1.0f) - b;
  64. CORE_TEST_VECTOR(Core::Vector2(-112.0f, -80.0f), b.get(1.0f));
  65. b = Core::Vector2(2.0f, 2.0f) * b;
  66. CORE_TEST_VECTOR(Core::Vector2(-224.0f, -160.0f), b.get(1.0f));
  67. b = Core::Vector2(224.0f, 160.0f) / b;
  68. CORE_TEST_VECTOR(Core::Vector2(-1.0f, -1.0f), b.get(1.0f));
  69. b = -b;
  70. CORE_TEST_VECTOR(Core::Vector2(1.0f, 1.0f), b.get(1.0f));
  71. b[0] += 3;
  72. CORE_TEST_VECTOR(Core::Vector2(4.0f, 1.0f), b.get(1.0f));
  73. }
  74. void Core::testBufferedValue() {
  75. testInit();
  76. testInterpolate();
  77. testUpdate();
  78. testCalculate();
  79. testVector2();
  80. }