VectorTests.cpp 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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/Math/Vector.h>
  6. TEST_SUITE("VectorTests")
  7. {
  8. TEST_CASE("TestVectorEquals")
  9. {
  10. Vector<3> v1;
  11. v1[0] = 1;
  12. v1[1] = 2;
  13. v1[2] = 3;
  14. Vector<3> v2;
  15. v2[0] = 1;
  16. v2[1] = 2;
  17. v2[2] = 3;
  18. Vector<3> v3;
  19. v3[0] = 1;
  20. v3[1] = 5;
  21. v3[2] = 3;
  22. CHECK(v1 == v2);
  23. CHECK(!(v1 != v2));
  24. CHECK(v1 != v3);
  25. CHECK(!(v1 == v3));
  26. }
  27. TEST_CASE("TestVectorStream")
  28. {
  29. Vector<3> v1;
  30. v1[0] = 1;
  31. v1[1] = 2;
  32. v1[2] = 3;
  33. std::stringstream ss;
  34. ss << v1;
  35. CHECK(ss.str() == "[1, 2, 3]");
  36. }
  37. TEST_CASE("TestVectorMultiplyFloat")
  38. {
  39. Vector<5> v;
  40. v[0] = 1;
  41. v[1] = 2;
  42. v[2] = 3;
  43. v[3] = 4;
  44. v[4] = 5;
  45. Vector<5> v2 = v * 2;
  46. CHECK(v2[0] == 2.0f);
  47. CHECK(v2[1] == 4.0f);
  48. CHECK(v2[2] == 6.0f);
  49. CHECK(v2[3] == 8.0f);
  50. CHECK(v2[4] == 10.0f);
  51. }
  52. TEST_CASE("TestVectorAdd")
  53. {
  54. Vector<5> v1 = Vector<5>::sZero();
  55. Vector<5> v2 = Vector<5>::sZero();
  56. v1[0] = 1;
  57. v2[0] = 2;
  58. v1[4] = 5;
  59. Vector<5> v3 = v1 + v2;
  60. CHECK(v3[0] == 3.0f);
  61. CHECK(v3[1] == 0.0f);
  62. CHECK(v3[2] == 0.0f);
  63. CHECK(v3[3] == 0.0f);
  64. CHECK(v3[4] == 5.0f);
  65. }
  66. TEST_CASE("TestVectorNegate")
  67. {
  68. Vector<5> v;
  69. v[0] = 1;
  70. v[1] = 2;
  71. v[2] = 3;
  72. v[3] = 4;
  73. v[4] = 5;
  74. Vector<5> v2 = -v;
  75. CHECK(v2[0] == -1.0f);
  76. CHECK(v2[1] == -2.0f);
  77. CHECK(v2[2] == -3.0f);
  78. CHECK(v2[3] == -4.0f);
  79. CHECK(v2[4] == -5.0f);
  80. }
  81. TEST_CASE("TestVectorLength")
  82. {
  83. Vector<5> v;
  84. v[0] = 1;
  85. v[1] = 2;
  86. v[2] = 3;
  87. v[3] = 4;
  88. v[4] = 5;
  89. CHECK(v.LengthSq() == float(1 + 4 + 9 + 16 + 25));
  90. }
  91. }