RoboidControl-cpp/LinearAlgebra/test/DiscreteAngle_test.cc
2024-09-02 11:09:43 +02:00

79 lines
1.4 KiB
C++

#if GTEST
#include <gtest/gtest.h>
#include <math.h>
#include <limits>
#include "Angle16.h"
#include "Angle8.h"
#define FLOAT_INFINITY std::numeric_limits<float>::infinity()
TEST(Angle8, Construct) {
float angle = 0.0F;
Angle8 a = Angle8(angle);
EXPECT_FLOAT_EQ(a.ToFloat(), angle);
angle = -180.0F;
a = Angle8(angle);
EXPECT_FLOAT_EQ(a.ToFloat(), angle);
}
TEST(Angle8, Negate) {
float angle = 0;
Angle8 a = Angle8(angle);
a = -a;
EXPECT_FLOAT_EQ(a.ToFloat(), angle);
angle = 90.0F;
a = Angle8(angle);
a = -a;
EXPECT_FLOAT_EQ(a.ToFloat(), -angle);
}
TEST(Angle8, Add) {
Angle8 a = Angle8(-45);
Angle8 b = Angle8(45.0F);
Angle8 r = a + b;
EXPECT_FLOAT_EQ(r.ToFloat(), 0);
}
TEST(Angle8, Subtract) {
Angle8 a = Angle8(0);
Angle8 b = Angle8(45.0F);
Angle8 r = a - b;
EXPECT_FLOAT_EQ(r.ToFloat(), -45);
}
TEST(Angle16, Construct) {
Angle16 a = Angle16(0.0F);
EXPECT_FLOAT_EQ(a.ToFloat(), 0);
}
TEST(Angle16, Negate) {
float angle = 0;
Angle16 a = Angle16(angle);
a = -a;
EXPECT_FLOAT_EQ(a.ToFloat(), angle);
angle = 90.0F;
a = Angle16(angle);
a = -a;
EXPECT_FLOAT_EQ(a.ToFloat(), -angle);
}
TEST(Angle16, Subtract) {
Angle16 a = Angle16(0);
Angle16 b = Angle16(45.0F);
Angle16 r = a - b;
EXPECT_FLOAT_EQ(r.ToFloat(), -45);
}
TEST(Angle16, Add) {
Angle16 a = Angle16(-45);
Angle16 b = Angle16(45.0F);
Angle16 r = a + b;
EXPECT_FLOAT_EQ(r.ToFloat(), 0);
}
#endif