Math.cpp 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #include <gtest/gtest.h>
  2. #include <iostream>
  3. #include "Math.h"
  4. #include "Util.h"
  5. const float RANGE_MIN = -1.00123;
  6. const float RANGE_MAX = 9.9990001;
  7. static float randFloat()
  8. {
  9. return Util::randRange(RANGE_MIN, RANGE_MAX);
  10. }
  11. TEST(MathTests, Alignment)
  12. {
  13. const int FS = sizeof(float); // float size
  14. EXPECT_EQ(sizeof(Vec2), FS * 2);
  15. EXPECT_EQ(sizeof(Vec3), FS * 3);
  16. EXPECT_EQ(sizeof(Vec4), FS * 4);
  17. EXPECT_EQ(sizeof(Quat), FS * 4);
  18. EXPECT_EQ(sizeof(Euler), FS * 3);
  19. EXPECT_EQ(sizeof(Mat3), FS * 9);
  20. EXPECT_EQ(sizeof(Mat4), FS * 16);
  21. }
  22. TEST(MathTests, Constructors)
  23. {
  24. {
  25. EXPECT_EQ(Vec4().x(), 0.0);
  26. EXPECT_EQ(Vec4().y(), 0.0);
  27. EXPECT_EQ(Vec4().z(), 0.0);
  28. EXPECT_EQ(Vec4().w(), 0.0);
  29. float f = randFloat();
  30. Vec4 a(f);
  31. EXPECT_EQ(a.x(), f);
  32. EXPECT_EQ(a.y(), f);
  33. EXPECT_EQ(a.z(), f);
  34. EXPECT_EQ(a.w(), f);
  35. float arr[4] = {randFloat(), randFloat(), randFloat(), randFloat()};
  36. a = Vec4(arr);
  37. EXPECT_EQ(a[0], arr[0]);
  38. EXPECT_EQ(a.y(), arr[1]);
  39. EXPECT_EQ(a.z(), arr[2]);
  40. EXPECT_EQ(a[3], arr[3]);
  41. }
  42. }
  43. template<typename Type, int size, Type (Type::* op)(const Type&) const>
  44. void testOperator()
  45. {
  46. Type a, b, c;
  47. for(int i = 0; i < size; i++)
  48. {
  49. a[i] = randFloat();
  50. b[i] = randFloat();
  51. //c[i] = a[i] + b[i];
  52. }
  53. EXPECT_EQ((a.*op)(b), c);
  54. /*a += b;
  55. EXPECT_EQ(a, c);*/
  56. }
  57. TEST(MathTests, Addition)
  58. {
  59. testOperator<Vec4, 4, &Vec4::operator+ >();
  60. }
  61. TEST(MathTests, Substraction)
  62. {
  63. Vec4 a(randFloat(), randFloat(), randFloat(), randFloat());
  64. Vec4 b(randFloat(), randFloat(), randFloat(), randFloat());
  65. EXPECT_EQ(a - b, Vec4(a.x() - b.x(), a.y() - b.y(), a.z() - b.z(), a.w() - b.w()));
  66. Vec4 c = a;
  67. a -= b;
  68. EXPECT_EQ(a, Vec4(c.x() - b.x(), c.y() - b.y(), c.z() - b.z(), c.w() - b.w()));
  69. }