Basics unit tests found some bugs!
This commit is contained in:
parent
1f01de6393
commit
a5f451a120
3 changed files with 72 additions and 68 deletions
|
@ -165,7 +165,7 @@ bool
|
||||||
Matrix<N,M>::operator==(const Matrix<N,M>& rhs)
|
Matrix<N,M>::operator==(const Matrix<N,M>& rhs)
|
||||||
const
|
const
|
||||||
{
|
{
|
||||||
for (int i = 0; i < N*M; i++) {
|
for (UInt i = 0; i < N*M; i++) {
|
||||||
/* TODO: Use NearlyEqual. */
|
/* TODO: Use NearlyEqual. */
|
||||||
if (mData[i] != rhs.mData[i]) {
|
if (mData[i] != rhs.mData[i]) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -254,7 +254,7 @@ Matrix<N,M>::operator*(Matrix<M,P> rhs)
|
||||||
/* Each cell is Sigma(k=0, M)(lhs[ik] * rhs[kj]) */
|
/* Each cell is Sigma(k=0, M)(lhs[ik] * rhs[kj]) */
|
||||||
result(i, j) = 0.0;
|
result(i, j) = 0.0;
|
||||||
for (UInt k = 0; k < M; k++) {
|
for (UInt k = 0; k < M; k++) {
|
||||||
result(i, j) += mData[i*N + k] * rhs(k*P, j);
|
result(i, j) += mData[i*N + k] * rhs(k, j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -93,7 +93,7 @@ Vector4
|
||||||
Vector4::operator*(const Double& rhs)
|
Vector4::operator*(const Double& rhs)
|
||||||
const
|
const
|
||||||
{
|
{
|
||||||
return static_cast<Vector4&&>(*this * rhs);
|
return static_cast<Matrix<4,1>>(*this) * rhs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -182,7 +182,7 @@ Double
|
||||||
Vector4::Dot(const Vector4& rhs)
|
Vector4::Dot(const Vector4& rhs)
|
||||||
const
|
const
|
||||||
{
|
{
|
||||||
return mData[0] * rhs.mData[0] + mData[1] * rhs.mData[1] + mData[2] + rhs.mData[2];
|
return mData[0] * rhs.mData[0] + mData[1] * rhs.mData[1] + mData[2] * rhs.mData[2];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -7,160 +7,164 @@
|
||||||
|
|
||||||
#include "gtest/gtest.h"
|
#include "gtest/gtest.h"
|
||||||
|
|
||||||
#include "basics.h"
|
#include "basics/basics.hh"
|
||||||
|
|
||||||
|
|
||||||
class Vector3Test
|
using charles::basics::Vector4;
|
||||||
|
using charles::basics::Matrix4;
|
||||||
|
|
||||||
|
|
||||||
|
class Vector4Test
|
||||||
: public ::testing::Test
|
: public ::testing::Test
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual void SetUp();
|
virtual void SetUp();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
Vector3 v1, v2;
|
Vector4 v1, v2;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
Vector3Test::SetUp()
|
Vector4Test::SetUp()
|
||||||
{
|
{
|
||||||
v1 = Vector3(1, 3, 5);
|
v1 = Vector4(1, 3, 5);
|
||||||
v2 = Vector3(7, 13, 17);
|
v2 = Vector4(7, 13, 17);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST_F(Vector3Test, OperatorEq)
|
TEST_F(Vector4Test, OperatorEq)
|
||||||
{
|
{
|
||||||
v1 = v2;
|
v1 = v2;
|
||||||
EXPECT_EQ(v2, v1);
|
EXPECT_EQ(v2, v1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST_F(Vector3Test, OperatorMul)
|
TEST_F(Vector4Test, OperatorMul)
|
||||||
{
|
{
|
||||||
Vector3 out;
|
Vector4 out;
|
||||||
|
|
||||||
out = v1 * 5;
|
out = v1 * 5;
|
||||||
EXPECT_EQ(5, out.x);
|
EXPECT_EQ(5, out.X());
|
||||||
EXPECT_EQ(15, out.y);
|
EXPECT_EQ(15, out.Y());
|
||||||
EXPECT_EQ(25, out.z);
|
EXPECT_EQ(25, out.Z());
|
||||||
|
|
||||||
out = v1 * -7;
|
out = v1 * -7;
|
||||||
EXPECT_EQ(-7, out.x);
|
EXPECT_EQ(-7, out.X());
|
||||||
EXPECT_EQ(-21, out.y);
|
EXPECT_EQ(-21, out.Y());
|
||||||
EXPECT_EQ(-35, out.z);
|
EXPECT_EQ(-35, out.Z());
|
||||||
|
|
||||||
out = v1;
|
out = v1;
|
||||||
out *= 5;
|
out *= 5;
|
||||||
EXPECT_EQ(5, out.x);
|
EXPECT_EQ(5, out.X());
|
||||||
EXPECT_EQ(15, out.y);
|
EXPECT_EQ(15, out.Y());
|
||||||
EXPECT_EQ(25, out.z);
|
EXPECT_EQ(25, out.Z());
|
||||||
|
|
||||||
out = v1;
|
out = v1;
|
||||||
out *= -7;
|
out *= -7;
|
||||||
EXPECT_EQ(-7, out.x);
|
EXPECT_EQ(-7, out.X());
|
||||||
EXPECT_EQ(-21, out.y);
|
EXPECT_EQ(-21, out.Y());
|
||||||
EXPECT_EQ(-35, out.z);
|
EXPECT_EQ(-35, out.Z());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST_F(Vector3Test, OperatorDiv)
|
TEST_F(Vector4Test, OperatorDiv)
|
||||||
{
|
{
|
||||||
Vector3 out;
|
Vector4 out;
|
||||||
|
|
||||||
out = v1 / 5.0;
|
out = v1 / 5.0;
|
||||||
EXPECT_FLOAT_EQ(1.0/5.0, out.x);
|
EXPECT_FLOAT_EQ(1.0/5.0, out.X());
|
||||||
EXPECT_FLOAT_EQ(3.0/5.0, out.y);
|
EXPECT_FLOAT_EQ(3.0/5.0, out.Y());
|
||||||
EXPECT_FLOAT_EQ(5.0/5.0, out.z);
|
EXPECT_FLOAT_EQ(5.0/5.0, out.Z());
|
||||||
|
|
||||||
out = v1 / -7.0;
|
out = v1 / -7.0;
|
||||||
EXPECT_FLOAT_EQ(1.0/-7.0, out.x);
|
EXPECT_FLOAT_EQ(1.0/-7.0, out.X());
|
||||||
EXPECT_FLOAT_EQ(3.0/-7.0, out.y);
|
EXPECT_FLOAT_EQ(3.0/-7.0, out.Y());
|
||||||
EXPECT_FLOAT_EQ(5.0/-7.0, out.z);
|
EXPECT_FLOAT_EQ(5.0/-7.0, out.Z());
|
||||||
|
|
||||||
out = v1;
|
out = v1;
|
||||||
out /= 5.0;
|
out /= 5.0;
|
||||||
EXPECT_FLOAT_EQ(1.0/5.0, out.x);
|
EXPECT_FLOAT_EQ(1.0/5.0, out.X());
|
||||||
EXPECT_FLOAT_EQ(3.0/5.0, out.y);
|
EXPECT_FLOAT_EQ(3.0/5.0, out.Y());
|
||||||
EXPECT_FLOAT_EQ(5.0/5.0, out.z);
|
EXPECT_FLOAT_EQ(5.0/5.0, out.Z());
|
||||||
|
|
||||||
out = v1;
|
out = v1;
|
||||||
out /= -7.0;
|
out /= -7.0;
|
||||||
EXPECT_FLOAT_EQ(1.0/-7.0, out.x);
|
EXPECT_FLOAT_EQ(1.0/-7.0, out.X());
|
||||||
EXPECT_FLOAT_EQ(3.0/-7.0, out.y);
|
EXPECT_FLOAT_EQ(3.0/-7.0, out.Y());
|
||||||
EXPECT_FLOAT_EQ(5.0/-7.0, out.z);
|
EXPECT_FLOAT_EQ(5.0/-7.0, out.Z());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST_F(Vector3Test, OperatorAdd)
|
TEST_F(Vector4Test, OperatorAdd)
|
||||||
{
|
{
|
||||||
Vector3 out;
|
Vector4 out;
|
||||||
|
|
||||||
out = v1 + v2;
|
out = v1 + v2;
|
||||||
EXPECT_EQ(8, out.x);
|
EXPECT_EQ(8, out.X());
|
||||||
EXPECT_EQ(16, out.y);
|
EXPECT_EQ(16, out.Y());
|
||||||
EXPECT_EQ(22, out.z);
|
EXPECT_EQ(22, out.Z());
|
||||||
|
|
||||||
out = v1;
|
out = v1;
|
||||||
out += v2;
|
out += v2;
|
||||||
EXPECT_EQ(8, out.x);
|
EXPECT_EQ(8, out.X());
|
||||||
EXPECT_EQ(16, out.y);
|
EXPECT_EQ(16, out.Y());
|
||||||
EXPECT_EQ(22, out.z);
|
EXPECT_EQ(22, out.Z());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST_F(Vector3Test, OperatorSub)
|
TEST_F(Vector4Test, OperatorSub)
|
||||||
{
|
{
|
||||||
Vector3 out;
|
Vector4 out;
|
||||||
|
|
||||||
out = v1 - v2;
|
out = v1 - v2;
|
||||||
EXPECT_EQ(-6, out.x);
|
EXPECT_EQ(-6, out.X());
|
||||||
EXPECT_EQ(-10, out.y);
|
EXPECT_EQ(-10, out.Y());
|
||||||
EXPECT_EQ(-12, out.z);
|
EXPECT_EQ(-12, out.Z());
|
||||||
|
|
||||||
out = v2 - v1;
|
out = v2 - v1;
|
||||||
EXPECT_EQ(6, out.x);
|
EXPECT_EQ(6, out.X());
|
||||||
EXPECT_EQ(10, out.y);
|
EXPECT_EQ(10, out.Y());
|
||||||
EXPECT_EQ(12, out.z);
|
EXPECT_EQ(12, out.Z());
|
||||||
|
|
||||||
v1 -= v2;
|
v1 -= v2;
|
||||||
EXPECT_EQ(-6, v1.x);
|
EXPECT_EQ(-6, v1.X());
|
||||||
EXPECT_EQ(-10, v1.y);
|
EXPECT_EQ(-10, v1.Y());
|
||||||
EXPECT_EQ(-12, v1.z);
|
EXPECT_EQ(-12, v1.Z());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST_F(Vector3Test, OperatorBoolEq)
|
TEST_F(Vector4Test, OperatorBoolEq)
|
||||||
{
|
{
|
||||||
EXPECT_EQ(v1, v1);
|
EXPECT_EQ(v1, v1);
|
||||||
EXPECT_EQ(v2, v2);
|
EXPECT_EQ(v2, v2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST_F(Vector3Test, OperatorBoolNe)
|
TEST_F(Vector4Test, OperatorBoolNe)
|
||||||
{
|
{
|
||||||
EXPECT_NE(v1, v2);
|
EXPECT_NE(v1, v2);
|
||||||
EXPECT_NE(v2, v1);
|
EXPECT_NE(v2, v1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST_F(Vector3Test, Length2)
|
TEST_F(Vector4Test, Length2)
|
||||||
{
|
{
|
||||||
EXPECT_EQ(35.0, v1.length2());
|
EXPECT_EQ(35.0, v1.Length2());
|
||||||
EXPECT_EQ(507.0, v2.length2());
|
EXPECT_EQ(507.0, v2.Length2());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST_F(Vector3Test, Length)
|
TEST_F(Vector4Test, Length)
|
||||||
{
|
{
|
||||||
EXPECT_FLOAT_EQ(5.916079783099616, v1.length());
|
EXPECT_FLOAT_EQ(5.916079783099616, v1.Length());
|
||||||
EXPECT_FLOAT_EQ(22.5166604983954, v2.length());
|
EXPECT_FLOAT_EQ(22.5166604983954, v2.Length());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST_F(Vector3Test, DotProduct)
|
TEST_F(Vector4Test, DotProduct)
|
||||||
{
|
{
|
||||||
EXPECT_EQ(131.0, v1.dot(v2));
|
EXPECT_EQ(131.0, v1.Dot(v2));
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark Matrix4 Tests
|
#pragma mark Matrix4 Tests
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue