Преглед изворни кода

Create mathMatrixTest.cpp

committed tests for matrix class
so far all tests are matching between templated and stock matrixf class
marauder2k7 пре 1 година
родитељ
комит
f77ff37e08
1 измењених фајлова са 108 додато и 0 уклоњено
  1. 108 0
      Engine/source/testing/mathMatrixTest.cpp

+ 108 - 0
Engine/source/testing/mathMatrixTest.cpp

@@ -0,0 +1,108 @@
+#include "testing/unitTesting.h"
+
+#include "platform/platform.h"
+#include "console/simBase.h"
+#include "console/consoleTypes.h"
+#include "console/scriptObjects.h"
+#include "console/simBase.h"
+#include "console/engineAPI.h"
+#include "math/mMath.h"
+
+TEST(MatrixTest, TestIdentityInit)
+{
+   MatrixF test(true);
+
+   EXPECT_NEAR(test(0, 0), 1.0f, 0.001f);
+   EXPECT_NEAR(test(1, 1), 1.0f, 0.001f);
+   EXPECT_NEAR(test(2, 2), 1.0f, 0.001f);
+   EXPECT_NEAR(test(3, 3), 1.0f, 0.001f);
+}
+
+TEST(MatrixTest, TestIdentitySet)
+{
+   MatrixF test(false);
+   test.identity();
+
+   EXPECT_NEAR(test(0, 0), 1.0f, 0.001f);
+   EXPECT_NEAR(test(1, 1), 1.0f, 0.001f);
+   EXPECT_NEAR(test(2, 2), 1.0f, 0.001f);
+   EXPECT_NEAR(test(3, 3), 1.0f, 0.001f);
+}
+
+TEST(MatrixTest, TestIsIdentity)
+{
+   MatrixF test(true);
+   EXPECT_TRUE(test.isIdentity());
+}
+
+TEST(MatrixTest, TestEulerInit)
+{
+   MatrixF test(EulerF(1.0f, 0.0f, 1.0f));
+
+   EXPECT_NEAR(test(0, 0), 0.5403f, 0.001f);   EXPECT_NEAR(test(0, 1), 0.8415f, 0.001f);  EXPECT_NEAR(test(0, 2), 0.0f, 0.001f);    EXPECT_NEAR(test(0, 3), 0.0f, 0.001f);
+   EXPECT_NEAR(test(1, 0), -0.4546f, 0.001f);  EXPECT_NEAR(test(1, 1), 0.2919f, 0.001f);  EXPECT_NEAR(test(1, 2), 0.8415f, 0.001f); EXPECT_NEAR(test(1, 3), 0.0f, 0.001f);
+   EXPECT_NEAR(test(2, 0), 0.7081f, 0.001f);   EXPECT_NEAR(test(2, 1), -0.4546f, 0.001f); EXPECT_NEAR(test(2, 2), 0.5403f, 0.001f); EXPECT_NEAR(test(2, 3), 0.0f, 0.001f);
+   EXPECT_NEAR(test(3, 0), 0.0f, 0.001f);      EXPECT_NEAR(test(3, 1), 0.0f, 0.001f);     EXPECT_NEAR(test(3, 2), 0.0f, 0.001f);    EXPECT_NEAR(test(3, 3), 1.0f, 0.001f);
+}
+
+
+TEST(MatrixTest, TestEulerSet)
+{
+   MatrixF test(true);
+
+   test.set(EulerF(1.0f, 0.0f, 1.0f));
+
+   EXPECT_NEAR(test(0, 0), 0.5403f, 0.001f);   EXPECT_NEAR(test(0, 1), 0.8415f, 0.001f);  EXPECT_NEAR(test(0, 2), 0.0f, 0.001f);    EXPECT_NEAR(test(0, 3), 0.0f, 0.001f);
+   EXPECT_NEAR(test(1, 0), -0.4546f, 0.001f);  EXPECT_NEAR(test(1, 1), 0.2919f, 0.001f);  EXPECT_NEAR(test(1, 2), 0.8415f, 0.001f); EXPECT_NEAR(test(1, 3), 0.0f, 0.001f);
+   EXPECT_NEAR(test(2, 0), 0.7081f, 0.001f);   EXPECT_NEAR(test(2, 1), -0.4546f, 0.001f); EXPECT_NEAR(test(2, 2), 0.5403f, 0.001f); EXPECT_NEAR(test(2, 3), 0.0f, 0.001f);
+   EXPECT_NEAR(test(3, 0), 0.0f, 0.001f);      EXPECT_NEAR(test(3, 1), 0.0f, 0.001f);     EXPECT_NEAR(test(3, 2), 0.0f, 0.001f);    EXPECT_NEAR(test(3, 3), 1.0f, 0.001f);
+}
+
+
+TEST(MatrixTest, TestEulerPointInit)
+{
+   MatrixF test(EulerF(1.0f, 0.0f, 1.0f), Point3F(5.0f, 0.0f, 1.0f));
+
+   EXPECT_NEAR(test(0, 0), 0.5403f, 0.001f);   EXPECT_NEAR(test(0, 1), 0.8415f, 0.001f);  EXPECT_NEAR(test(0, 2), 0.0f, 0.001f);    EXPECT_NEAR(test(0, 3), 5.0f, 0.001f);
+   EXPECT_NEAR(test(1, 0), -0.4546f, 0.001f);  EXPECT_NEAR(test(1, 1), 0.2919f, 0.001f);  EXPECT_NEAR(test(1, 2), 0.8415f, 0.001f); EXPECT_NEAR(test(1, 3), 0.0f, 0.001f);
+   EXPECT_NEAR(test(2, 0), 0.7081f, 0.001f);   EXPECT_NEAR(test(2, 1), -0.4546f, 0.001f); EXPECT_NEAR(test(2, 2), 0.5403f, 0.001f); EXPECT_NEAR(test(2, 3), 1.0f, 0.001f);
+   EXPECT_NEAR(test(3, 0), 0.0f, 0.001f);      EXPECT_NEAR(test(3, 1), 0.0f, 0.001f);     EXPECT_NEAR(test(3, 2), 0.0f, 0.001f);    EXPECT_NEAR(test(3, 3), 1.0f, 0.001f);
+}
+
+
+TEST(MatrixTest, TestEulerPointSet)
+{
+   MatrixF test(true);
+
+   test.set(EulerF(1.0f, 0.0f, 1.0f), Point3F(5.0f, 0.0f, 1.0f));
+
+   EXPECT_NEAR(test(0, 0), 0.5403f, 0.001f);   EXPECT_NEAR(test(0, 1), 0.8415f, 0.001f);  EXPECT_NEAR(test(0, 2), 0.0f, 0.001f);    EXPECT_NEAR(test(0, 3), 5.0f, 0.001f);
+   EXPECT_NEAR(test(1, 0), -0.4546f, 0.001f);  EXPECT_NEAR(test(1, 1), 0.2919f, 0.001f);  EXPECT_NEAR(test(1, 2), 0.8415f, 0.001f); EXPECT_NEAR(test(1, 3), 0.0f, 0.001f);
+   EXPECT_NEAR(test(2, 0), 0.7081f, 0.001f);   EXPECT_NEAR(test(2, 1), -0.4546f, 0.001f); EXPECT_NEAR(test(2, 2), 0.5403f, 0.001f); EXPECT_NEAR(test(2, 3), 1.0f, 0.001f);
+   EXPECT_NEAR(test(3, 0), 0.0f, 0.001f);      EXPECT_NEAR(test(3, 1), 0.0f, 0.001f);     EXPECT_NEAR(test(3, 2), 0.0f, 0.001f);    EXPECT_NEAR(test(3, 3), 1.0f, 0.001f);
+}
+
+TEST(MatrixTest, TestSetCrossProduct)
+{
+   MatrixF test(true);
+
+   test.setCrossProduct(Point3F(5.0f, 0.0f, 1.0f));
+
+   EXPECT_NEAR(test(0, 0), 0.0f, 0.001f);  EXPECT_NEAR(test(0, 1), -1.0f, 0.001f);  EXPECT_NEAR(test(0, 2), 0.0f, 0.001f);  EXPECT_NEAR(test(0, 3), 0.0f, 0.001f);
+   EXPECT_NEAR(test(1, 0), 1.0f, 0.001f);  EXPECT_NEAR(test(1, 1), 0.0, 0.001f);    EXPECT_NEAR(test(1, 2), -5.0f, 0.001f); EXPECT_NEAR(test(1, 3), 0.0f, 0.001f);
+   EXPECT_NEAR(test(2, 0), 0.0f, 0.001f);  EXPECT_NEAR(test(2, 1), 5.0f, 0.001f);   EXPECT_NEAR(test(2, 2), 0.0f, 0.001f);  EXPECT_NEAR(test(2, 3), 0.0f, 0.001f);
+   EXPECT_NEAR(test(3, 0), 0.0f, 0.001f);  EXPECT_NEAR(test(3, 1), 0.0f, 0.001f);   EXPECT_NEAR(test(3, 2), 0.0f, 0.001f);  EXPECT_NEAR(test(3, 3), 1.0f, 0.001f);
+}
+
+TEST(MatrixTest, TestSetTensorProduct)
+{
+   MatrixF test(true);
+
+   test.setTensorProduct(Point3F(5.0f, 2.0f, 1.0f), Point3F(5.0f, 2.0f, 1.0f));
+
+   EXPECT_NEAR(test(0, 0), 25.0f, 0.001f); EXPECT_NEAR(test(0, 1), 10.0f, 0.001f);  EXPECT_NEAR(test(0, 2), 5.0f, 0.001f);  EXPECT_NEAR(test(0, 3), 0.0f, 0.001f);
+   EXPECT_NEAR(test(1, 0), 10.0f, 0.001f); EXPECT_NEAR(test(1, 1), 4.0, 0.001f);    EXPECT_NEAR(test(1, 2), 2.0f, 0.001f);  EXPECT_NEAR(test(1, 3), 0.0f, 0.001f);
+   EXPECT_NEAR(test(2, 0), 5.0f, 0.001f);  EXPECT_NEAR(test(2, 1), 2.0f, 0.001f);   EXPECT_NEAR(test(2, 2), 1.0f, 0.001f);  EXPECT_NEAR(test(2, 3), 0.0f, 0.001f);
+   EXPECT_NEAR(test(3, 0), 0.0f, 0.001f);  EXPECT_NEAR(test(3, 1), 0.0f, 0.001f);   EXPECT_NEAR(test(3, 2), 0.0f, 0.001f);  EXPECT_NEAR(test(3, 3), 1.0f, 0.001f);
+}
+