Angle Typed tests
All checks were successful
Build and Run C++ Unit Tests / build-and-test (push) Successful in 2m3s
All checks were successful
Build and Run C++ Unit Tests / build-and-test (push) Successful in 2m3s
This commit is contained in:
parent
a2ba625bac
commit
ce578791d5
@ -1,241 +0,0 @@
|
|||||||
#if GTEST
|
|
||||||
#include "gtest/gtest.h"
|
|
||||||
|
|
||||||
#include <math.h>
|
|
||||||
#include <limits>
|
|
||||||
|
|
||||||
#include "Angle.h"
|
|
||||||
|
|
||||||
using namespace LinearAlgebra;
|
|
||||||
|
|
||||||
#define FLOAT_INFINITY std::numeric_limits<float>::infinity()
|
|
||||||
|
|
||||||
TEST(Angle16, Construct) {
|
|
||||||
float angle = 0.0F;
|
|
||||||
Angle16 a = Angle16::Degrees(angle);
|
|
||||||
EXPECT_FLOAT_EQ(a.InDegrees(), angle);
|
|
||||||
|
|
||||||
angle = -180.0F;
|
|
||||||
a = Angle16::Degrees(angle);
|
|
||||||
EXPECT_FLOAT_EQ(a.InDegrees(), angle);
|
|
||||||
|
|
||||||
angle = 270.0F;
|
|
||||||
a = Angle16::Degrees(angle);
|
|
||||||
EXPECT_FLOAT_EQ(a.InDegrees(), -90);
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST(Angle16, Negate) {
|
|
||||||
float angle = 0;
|
|
||||||
Angle16 a = Angle16::Degrees(angle);
|
|
||||||
a = -a;
|
|
||||||
EXPECT_FLOAT_EQ(a.InDegrees(), angle);
|
|
||||||
|
|
||||||
angle = 90.0F;
|
|
||||||
a = Angle16::Degrees(angle);
|
|
||||||
a = -a;
|
|
||||||
EXPECT_FLOAT_EQ(a.InDegrees(), -angle);
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST(Angle16, Subtract) {
|
|
||||||
Angle16 a = Angle16::Degrees(0);
|
|
||||||
Angle16 b = Angle16::Degrees(45.0F);
|
|
||||||
Angle16 r = a - b;
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), -45);
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST(Angle16, Add) {
|
|
||||||
Angle16 a = Angle16::Degrees(-45);
|
|
||||||
Angle16 b = Angle16::Degrees(45.0F);
|
|
||||||
Angle16 r = a + b;
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST(Angle16, Compare) {
|
|
||||||
Angle16 a = Angle16::Degrees(45);
|
|
||||||
bool r = false;
|
|
||||||
|
|
||||||
r = a > Angle16::Degrees(0);
|
|
||||||
EXPECT_TRUE(r) << "45 > 0";
|
|
||||||
|
|
||||||
r = a > Angle16::Degrees(90);
|
|
||||||
EXPECT_FALSE(r) << "45 > 90";
|
|
||||||
|
|
||||||
r = a > Angle16::Degrees(-90);
|
|
||||||
EXPECT_TRUE(r) << "45 > -90";
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST(Angle16, Normalize) {
|
|
||||||
Angle16 r = Angle16();
|
|
||||||
|
|
||||||
r = Angle16::Normalize(Angle16::Degrees(90.0f));
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 90) << "Normalize 90";
|
|
||||||
|
|
||||||
r = Angle16::Normalize(Angle16::Degrees(-90));
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), -90) << "Normalize -90";
|
|
||||||
|
|
||||||
r = Angle16::Normalize(Angle16::Degrees(270));
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), -90) << "Normalize 270";
|
|
||||||
|
|
||||||
r = Angle16::Normalize(Angle16::Degrees(270 + 360));
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), -90) << "Normalize 270+360";
|
|
||||||
|
|
||||||
r = Angle16::Normalize(Angle16::Degrees(-270));
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 90) << "Normalize -270";
|
|
||||||
|
|
||||||
r = Angle16::Normalize(Angle16::Degrees(-270 - 360));
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 90) << "Normalize -270-360";
|
|
||||||
|
|
||||||
r = Angle16::Normalize(Angle16::Degrees(0));
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 0) << "Normalize 0";
|
|
||||||
|
|
||||||
if (false) { // std::numeric_limits<float>::is_iec559) {
|
|
||||||
// Infinites are not supported
|
|
||||||
r = Angle16::Normalize(Angle16::Degrees(FLOAT_INFINITY));
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), FLOAT_INFINITY) << "Normalize INFINITY";
|
|
||||||
|
|
||||||
r = Angle16::Normalize(Angle16::Degrees(-FLOAT_INFINITY));
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), -FLOAT_INFINITY) << "Normalize INFINITY";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST(Angle16, Clamp) {
|
|
||||||
Angle16 r = Angle16();
|
|
||||||
|
|
||||||
// Clamp(1, 0, 2) will fail because Angle16 does not have enough resolution
|
|
||||||
// for this. Instead we use Clamp(10, 0, 20) etc.
|
|
||||||
r = Angle16::Clamp(Angle16::Degrees(10), Angle16::Degrees(0),
|
|
||||||
Angle16::Degrees(20));
|
|
||||||
EXPECT_NEAR(r.InDegrees(), 10, 1.0e-2) << "Clamp 10 0 20";
|
|
||||||
|
|
||||||
r = Angle16::Clamp(Angle16::Degrees(-10), Angle16::Degrees(0),
|
|
||||||
Angle16::Degrees(20));
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 0) << "Clamp -10 0 20";
|
|
||||||
|
|
||||||
r = Angle16::Clamp(Angle16::Degrees(30), Angle16::Degrees(0),
|
|
||||||
Angle16::Degrees(20));
|
|
||||||
EXPECT_NEAR(r.InDegrees(), 20, 1.0e-2) << "Clamp 30 0 20";
|
|
||||||
|
|
||||||
r = Angle16::Clamp(Angle16::Degrees(10), Angle16::Degrees(0),
|
|
||||||
Angle16::Degrees(0));
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 0) << "Clamp 10 0 0";
|
|
||||||
|
|
||||||
r = Angle16::Clamp(Angle16::Degrees(0), Angle16::Degrees(0),
|
|
||||||
Angle16::Degrees(0));
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 0) << "Clamp 0 0 0";
|
|
||||||
|
|
||||||
r = Angle16::Clamp(Angle16::Degrees(0), Angle16::Degrees(10),
|
|
||||||
Angle16::Degrees(-10));
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 0) << "Clamp 0 10 -10";
|
|
||||||
|
|
||||||
if (false) { // std::numeric_limits<float>::is_iec559) {
|
|
||||||
// Infinites are not supported
|
|
||||||
r = Angle16::Clamp(Angle16::Degrees(10), Angle16::Degrees(0),
|
|
||||||
Angle16::Degrees(FLOAT_INFINITY));
|
|
||||||
EXPECT_NEAR(r.InDegrees(), 10, 1.0e-2) << "Clamp 1 0 INFINITY";
|
|
||||||
|
|
||||||
r = Angle16::Clamp(Angle16::Degrees(10), Angle16::Degrees(-FLOAT_INFINITY),
|
|
||||||
Angle16::Degrees(10));
|
|
||||||
EXPECT_NEAR(r.InDegrees(), 10, 1.0e-2) << "Clamp 1 -INFINITY 1";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TEST(Angle16, Difference) {
|
|
||||||
// Angle16 r = 0;
|
|
||||||
|
|
||||||
// r = Angle16::Difference(0, 90);
|
|
||||||
// EXPECT_FLOAT_EQ(r.InDegrees(), 90) << "Difference 0 90";
|
|
||||||
|
|
||||||
// r = Angle16::Difference(0, -90);
|
|
||||||
// EXPECT_FLOAT_EQ(r.InDegrees(), -90) << "Difference 0 -90";
|
|
||||||
|
|
||||||
// r = Angle16::Difference(0, 270);
|
|
||||||
// EXPECT_FLOAT_EQ(r.InDegrees(), -90) << "Difference 0 270";
|
|
||||||
|
|
||||||
// r = Angle16::Difference(0, -270);
|
|
||||||
// EXPECT_FLOAT_EQ(r.InDegrees(), 90) << "Difference 0 -270";
|
|
||||||
|
|
||||||
// r = Angle16::Difference(90, 0);
|
|
||||||
// EXPECT_FLOAT_EQ(r.InDegrees(), -90) << "Difference 90 0";
|
|
||||||
|
|
||||||
// r = Angle16::Difference(-90, 0);
|
|
||||||
// EXPECT_FLOAT_EQ(r.InDegrees(), 90) << "Difference -90 0";
|
|
||||||
|
|
||||||
// r = Angle16::Difference(0, 0);
|
|
||||||
// EXPECT_FLOAT_EQ(r.InDegrees(), 0) << "Difference 0 0";
|
|
||||||
|
|
||||||
// r = Angle16::Difference(90, 90);
|
|
||||||
// EXPECT_FLOAT_EQ(r.InDegrees(), 0) << "Difference 90 90";
|
|
||||||
|
|
||||||
// if (std::numeric_limits<float>::is_iec559) {
|
|
||||||
// r = Angle16::Difference(0, INFINITY);
|
|
||||||
// EXPECT_FLOAT_EQ(r.InDegrees(), INFINITY) << "Difference 0 INFINITY";
|
|
||||||
|
|
||||||
// r = Angle16::Difference(0, -INFINITY);
|
|
||||||
// EXPECT_FLOAT_EQ(r.InDegrees(), -INFINITY) << "Difference 0 -INFINITY";
|
|
||||||
|
|
||||||
// r = Angle16::Difference(-INFINITY, INFINITY);
|
|
||||||
// EXPECT_FLOAT_EQ(r.InDegrees(), INFINITY) << "Difference -INFINITY
|
|
||||||
// INFINITY";
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
TEST(Angle16, MoveTowards) {
|
|
||||||
Angle16 r = Angle16();
|
|
||||||
|
|
||||||
r = Angle16::MoveTowards(Angle16::Degrees(0), Angle16::Degrees(90), 30);
|
|
||||||
EXPECT_NEAR(r.InDegrees(), 30, 1.0e-2) << "MoveTowards 0 90 30";
|
|
||||||
|
|
||||||
r = Angle16::MoveTowards(Angle16::Degrees(0), Angle16::Degrees(90), 90);
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 90) << "MoveTowards 0 90 90";
|
|
||||||
|
|
||||||
r = Angle16::MoveTowards(Angle16::Degrees(0), Angle16::Degrees(-90), 180);
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 90) << "MoveTowards 0 -90 -180";
|
|
||||||
|
|
||||||
r = Angle16::MoveTowards(Angle16::Degrees(0), Angle16::Degrees(90), 270);
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 90) << "MoveTowards 0 90 270";
|
|
||||||
|
|
||||||
r = Angle16::MoveTowards(Angle16::Degrees(0), Angle16::Degrees(90), -30);
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 0) << "MoveTowards 0 90 -30";
|
|
||||||
|
|
||||||
r = Angle16::MoveTowards(Angle16::Degrees(0), Angle16::Degrees(-90), -30);
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 0) << "MoveTowards 0 -90 -30";
|
|
||||||
|
|
||||||
r = Angle16::MoveTowards(Angle16::Degrees(0), Angle16::Degrees(-90), -90);
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 0) << "MoveTowards 0 -90 -90";
|
|
||||||
|
|
||||||
r = Angle16::MoveTowards(Angle16::Degrees(0), Angle16::Degrees(-90), -180);
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 0) << "MoveTowards 0 -90 -180";
|
|
||||||
|
|
||||||
r = Angle16::MoveTowards(Angle16::Degrees(0), Angle16::Degrees(-90), -270);
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 0) << "MoveTowards 0 -90 -270";
|
|
||||||
|
|
||||||
r = Angle16::MoveTowards(Angle16::Degrees(0), Angle16::Degrees(90), 0);
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 0) << "MoveTowards 0 90 0";
|
|
||||||
|
|
||||||
r = Angle16::MoveTowards(Angle16::Degrees(0), Angle16::Degrees(0), 0);
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 0) << "MoveTowards 0 0 0";
|
|
||||||
|
|
||||||
r = Angle16::MoveTowards(Angle16::Degrees(0), Angle16::Degrees(0), 30);
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 0) << "MoveTowards 0 0 30";
|
|
||||||
|
|
||||||
if (false) { // std::numeric_limits<float>::is_iec559) {
|
|
||||||
// infinites are not supported
|
|
||||||
r = Angle16::MoveTowards(Angle16::Degrees(0), Angle16::Degrees(90),
|
|
||||||
FLOAT_INFINITY);
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 90) << "MoveTowards 0 90 FLOAT_INFINITY";
|
|
||||||
|
|
||||||
r = Angle16::MoveTowards(Angle16::Degrees(0),
|
|
||||||
Angle16::Degrees(FLOAT_INFINITY), 30);
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 30) << "MoveTowards 0 FLOAT_INFINITY 30";
|
|
||||||
|
|
||||||
r = Angle16::MoveTowards(Angle16::Degrees(0), Angle16::Degrees(-90),
|
|
||||||
-FLOAT_INFINITY);
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), FLOAT_INFINITY)
|
|
||||||
<< "MoveTowards 0 -90 -FLOAT_INFINITY";
|
|
||||||
|
|
||||||
r = Angle16::MoveTowards(Angle16::Degrees(0),
|
|
||||||
Angle16::Degrees(-FLOAT_INFINITY), -30);
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 30) << "MoveTowards 0 -FLOAT_INFINITY -30";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
@ -1,249 +0,0 @@
|
|||||||
#if GTEST
|
|
||||||
#include <gtest/gtest.h>
|
|
||||||
|
|
||||||
#include <math.h>
|
|
||||||
#include <limits>
|
|
||||||
|
|
||||||
#include "Angle.h"
|
|
||||||
|
|
||||||
using namespace LinearAlgebra;
|
|
||||||
|
|
||||||
#define FLOAT_INFINITY std::numeric_limits<float>::infinity()
|
|
||||||
|
|
||||||
TEST(AngleSingle, Construct) {
|
|
||||||
float angle = 0.0F;
|
|
||||||
AngleSingle a = AngleSingle::Degrees(angle);
|
|
||||||
EXPECT_FLOAT_EQ(a.InDegrees(), angle);
|
|
||||||
|
|
||||||
angle = -180.0F;
|
|
||||||
a = AngleSingle::Degrees(angle);
|
|
||||||
EXPECT_FLOAT_EQ(a.InDegrees(), angle);
|
|
||||||
|
|
||||||
angle = 270.0F;
|
|
||||||
a = AngleSingle::Degrees(angle);
|
|
||||||
EXPECT_FLOAT_EQ(a.InDegrees(), -90);
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST(AngleSingle, Negate) {
|
|
||||||
float angle = 0;
|
|
||||||
AngleSingle a = AngleSingle::Degrees(angle);
|
|
||||||
a = -a;
|
|
||||||
EXPECT_FLOAT_EQ(a.InDegrees(), angle);
|
|
||||||
|
|
||||||
angle = 90.0F;
|
|
||||||
a = AngleSingle::Degrees(angle);
|
|
||||||
a = -a;
|
|
||||||
EXPECT_FLOAT_EQ(a.InDegrees(), -angle);
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST(AngleSingle, Add) {
|
|
||||||
AngleSingle a = AngleSingle::Degrees(-45);
|
|
||||||
AngleSingle b = AngleSingle::Degrees(45.0F);
|
|
||||||
AngleSingle r = a + b;
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST(AngleSingle, Subtract) {
|
|
||||||
AngleSingle a = AngleSingle::Degrees(0);
|
|
||||||
AngleSingle b = AngleSingle::Degrees(45.0F);
|
|
||||||
AngleSingle r = a - b;
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), -45);
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST(AngleSingle, Compare) {
|
|
||||||
AngleSingle a = AngleSingle::Degrees(45);
|
|
||||||
bool r = false;
|
|
||||||
|
|
||||||
r = a > AngleSingle::Degrees(0);
|
|
||||||
EXPECT_TRUE(r) << "45 > 0";
|
|
||||||
|
|
||||||
r = a > AngleSingle::Degrees(90);
|
|
||||||
EXPECT_FALSE(r) << "45 > 90";
|
|
||||||
|
|
||||||
r = a > AngleSingle::Degrees(-90);
|
|
||||||
EXPECT_TRUE(r) << "45 > -90";
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST(AngleSingle, Normalize) {
|
|
||||||
AngleSingle r = AngleSingle();
|
|
||||||
|
|
||||||
r = AngleSingle::Normalize(AngleSingle::Degrees(90.0f));
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 90) << "Normalize 90";
|
|
||||||
|
|
||||||
r = AngleSingle::Normalize(AngleSingle::Degrees(-90));
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), -90) << "Normalize -90";
|
|
||||||
|
|
||||||
r = AngleSingle::Normalize(AngleSingle::Degrees(270));
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), -90) << "Normalize 270";
|
|
||||||
|
|
||||||
r = AngleSingle::Normalize(AngleSingle::Degrees(270 + 360));
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), -90) << "Normalize 270+360";
|
|
||||||
|
|
||||||
r = AngleSingle::Normalize(AngleSingle::Degrees(-270));
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 90) << "Normalize -270";
|
|
||||||
|
|
||||||
r = AngleSingle::Normalize(AngleSingle::Degrees(-270 - 360));
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 90) << "Normalize -270-360";
|
|
||||||
|
|
||||||
r = AngleSingle::Normalize(AngleSingle::Degrees(0));
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 0) << "Normalize 0";
|
|
||||||
|
|
||||||
if (std::numeric_limits<float>::is_iec559) {
|
|
||||||
r = AngleSingle::Normalize(AngleSingle::Degrees(FLOAT_INFINITY));
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), FLOAT_INFINITY) << "Normalize INFINITY";
|
|
||||||
|
|
||||||
r = AngleSingle::Normalize(AngleSingle::Degrees(-FLOAT_INFINITY));
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), -FLOAT_INFINITY) << "Normalize INFINITY";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST(AngleSingle, Clamp) {
|
|
||||||
AngleSingle r = AngleSingle();
|
|
||||||
|
|
||||||
r = AngleSingle::Clamp(AngleSingle::Degrees(1), AngleSingle::Degrees(0),
|
|
||||||
AngleSingle::Degrees(2));
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 1) << "Clamp 1 0 2";
|
|
||||||
|
|
||||||
r = AngleSingle::Clamp(AngleSingle::Degrees(-1), AngleSingle::Degrees(0),
|
|
||||||
AngleSingle::Degrees(2));
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 0) << "Clamp -1 0 2";
|
|
||||||
|
|
||||||
r = AngleSingle::Clamp(AngleSingle::Degrees(3), AngleSingle::Degrees(0),
|
|
||||||
AngleSingle::Degrees(2));
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 2) << "Clamp 3 0 2";
|
|
||||||
|
|
||||||
r = AngleSingle::Clamp(AngleSingle::Degrees(1), AngleSingle::Degrees(0),
|
|
||||||
AngleSingle::Degrees(0));
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 0) << "Clamp 1 0 0";
|
|
||||||
|
|
||||||
r = AngleSingle::Clamp(AngleSingle::Degrees(0), AngleSingle::Degrees(0),
|
|
||||||
AngleSingle::Degrees(0));
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 0) << "Clamp 0 0 0";
|
|
||||||
|
|
||||||
r = AngleSingle::Clamp(AngleSingle::Degrees(0), AngleSingle::Degrees(1),
|
|
||||||
AngleSingle::Degrees(-1));
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 0) << "Clamp 0 1 -1";
|
|
||||||
|
|
||||||
if (std::numeric_limits<float>::is_iec559) {
|
|
||||||
r = AngleSingle::Clamp(AngleSingle::Degrees(1), AngleSingle::Degrees(0),
|
|
||||||
AngleSingle::Degrees(FLOAT_INFINITY));
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 1) << "Clamp 1 0 INFINITY";
|
|
||||||
|
|
||||||
r = AngleSingle::Clamp(AngleSingle::Degrees(1),
|
|
||||||
AngleSingle::Degrees(-FLOAT_INFINITY),
|
|
||||||
AngleSingle::Degrees(1));
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 1) << "Clamp 1 -INFINITY 1";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TEST(AngleSingle, Difference) {
|
|
||||||
// AngleSingle r = 0;
|
|
||||||
|
|
||||||
// r = AngleSingle::Difference(0, 90);
|
|
||||||
// EXPECT_FLOAT_EQ(r.InDegrees(), 90) << "Difference 0 90";
|
|
||||||
|
|
||||||
// r = AngleSingle::Difference(0, -90);
|
|
||||||
// EXPECT_FLOAT_EQ(r.InDegrees(), -90) << "Difference 0 -90";
|
|
||||||
|
|
||||||
// r = AngleSingle::Difference(0, 270);
|
|
||||||
// EXPECT_FLOAT_EQ(r.InDegrees(), -90) << "Difference 0 270";
|
|
||||||
|
|
||||||
// r = AngleSingle::Difference(0, -270);
|
|
||||||
// EXPECT_FLOAT_EQ(r.InDegrees(), 90) << "Difference 0 -270";
|
|
||||||
|
|
||||||
// r = AngleSingle::Difference(90, 0);
|
|
||||||
// EXPECT_FLOAT_EQ(r.InDegrees(), -90) << "Difference 90 0";
|
|
||||||
|
|
||||||
// r = AngleSingle::Difference(-90, 0);
|
|
||||||
// EXPECT_FLOAT_EQ(r.InDegrees(), 90) << "Difference -90 0";
|
|
||||||
|
|
||||||
// r = AngleSingle::Difference(0, 0);
|
|
||||||
// EXPECT_FLOAT_EQ(r.InDegrees(), 0) << "Difference 0 0";
|
|
||||||
|
|
||||||
// r = AngleSingle::Difference(90, 90);
|
|
||||||
// EXPECT_FLOAT_EQ(r.InDegrees(), 0) << "Difference 90 90";
|
|
||||||
|
|
||||||
// if (std::numeric_limits<float>::is_iec559) {
|
|
||||||
// r = AngleSingle::Difference(0, INFINITY);
|
|
||||||
// EXPECT_FLOAT_EQ(r.InDegrees(), INFINITY) << "Difference 0 INFINITY";
|
|
||||||
|
|
||||||
// r = AngleSingle::Difference(0, -INFINITY);
|
|
||||||
// EXPECT_FLOAT_EQ(r.InDegrees(), -INFINITY) << "Difference 0 -INFINITY";
|
|
||||||
|
|
||||||
// r = AngleSingle::Difference(-INFINITY, INFINITY);
|
|
||||||
// EXPECT_FLOAT_EQ(r.InDegrees(), INFINITY) << "Difference -INFINITY
|
|
||||||
// INFINITY";
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
TEST(AngleSingle, MoveTowards) {
|
|
||||||
AngleSingle r = AngleSingle();
|
|
||||||
|
|
||||||
r = AngleSingle::MoveTowards(AngleSingle::Degrees(0),
|
|
||||||
AngleSingle::Degrees(90), 30);
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 30) << "MoveTowards 0 90 30";
|
|
||||||
|
|
||||||
r = AngleSingle::MoveTowards(AngleSingle::Degrees(0),
|
|
||||||
AngleSingle::Degrees(90), 90);
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 90) << "MoveTowards 0 90 90";
|
|
||||||
|
|
||||||
r = AngleSingle::MoveTowards(AngleSingle::Degrees(0),
|
|
||||||
AngleSingle::Degrees(90), 180);
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 90) << "MoveTowards 0 90 180";
|
|
||||||
|
|
||||||
r = AngleSingle::MoveTowards(AngleSingle::Degrees(0),
|
|
||||||
AngleSingle::Degrees(90), 270);
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 90) << "MoveTowards 0 90 270";
|
|
||||||
|
|
||||||
r = AngleSingle::MoveTowards(AngleSingle::Degrees(0),
|
|
||||||
AngleSingle::Degrees(90), -30);
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 0) << "MoveTowards 0 90 -30";
|
|
||||||
|
|
||||||
r = AngleSingle::MoveTowards(AngleSingle::Degrees(0),
|
|
||||||
AngleSingle::Degrees(-90), -30);
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 0) << "MoveTowards 0 -90 -30";
|
|
||||||
|
|
||||||
r = AngleSingle::MoveTowards(AngleSingle::Degrees(0),
|
|
||||||
AngleSingle::Degrees(-90), -90);
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 0) << "MoveTowards 0 -90 -90";
|
|
||||||
|
|
||||||
r = AngleSingle::MoveTowards(AngleSingle::Degrees(0),
|
|
||||||
AngleSingle::Degrees(-90), -180);
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 0) << "MoveTowards 0 -90 -180";
|
|
||||||
|
|
||||||
r = AngleSingle::MoveTowards(AngleSingle::Degrees(0),
|
|
||||||
AngleSingle::Degrees(-90), -270);
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 0) << "MoveTowards 0 -90 -270";
|
|
||||||
|
|
||||||
r = AngleSingle::MoveTowards(AngleSingle::Degrees(0),
|
|
||||||
AngleSingle::Degrees(90), 0);
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 0) << "MoveTowards 0 90 0";
|
|
||||||
|
|
||||||
r = AngleSingle::MoveTowards(AngleSingle::Degrees(0), AngleSingle::Degrees(0),
|
|
||||||
0);
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 0) << "MoveTowards 0 0 0";
|
|
||||||
|
|
||||||
r = AngleSingle::MoveTowards(AngleSingle::Degrees(0), AngleSingle::Degrees(0),
|
|
||||||
30);
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 0) << "MoveTowards 0 0 30";
|
|
||||||
|
|
||||||
if (std::numeric_limits<float>::is_iec559) {
|
|
||||||
r = AngleSingle::MoveTowards(AngleSingle::Degrees(0),
|
|
||||||
AngleSingle::Degrees(90), FLOAT_INFINITY);
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 90) << "MoveTowards 0 90 FLOAT_INFINITY";
|
|
||||||
|
|
||||||
r = AngleSingle::MoveTowards(AngleSingle::Degrees(0),
|
|
||||||
AngleSingle::Degrees(FLOAT_INFINITY), 30);
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 30) << "MoveTowards 0 FLOAT_INFINITY 30";
|
|
||||||
|
|
||||||
r = AngleSingle::MoveTowards(AngleSingle::Degrees(0),
|
|
||||||
AngleSingle::Degrees(-90), -FLOAT_INFINITY);
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 0) << "MoveTowards 0 -90 -FLOAT_INFINITY";
|
|
||||||
|
|
||||||
r = AngleSingle::MoveTowards(AngleSingle::Degrees(0),
|
|
||||||
AngleSingle::Degrees(-FLOAT_INFINITY), -30);
|
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 0) << "MoveTowards 0 -FLOAT_INFINITY -30";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@ -10,47 +10,56 @@ using namespace LinearAlgebra;
|
|||||||
|
|
||||||
#define FLOAT_INFINITY std::numeric_limits<float>::infinity()
|
#define FLOAT_INFINITY std::numeric_limits<float>::infinity()
|
||||||
|
|
||||||
TEST(Angle8, Construct) {
|
using AngleTypes = ::testing::Types<AngleOf<float>, AngleOf<signed short>, AngleOf<signed char>>;
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
class AngleTest : public ::testing::Test {};
|
||||||
|
TYPED_TEST_SUITE(AngleTest, AngleTypes);
|
||||||
|
|
||||||
|
TYPED_TEST(AngleTest, Construct) {
|
||||||
|
using Angle = TypeParam;
|
||||||
float angle = 0.0F;
|
float angle = 0.0F;
|
||||||
Angle8 a = Angle8::Degrees(angle);
|
Angle a = Angle::Degrees(angle);
|
||||||
EXPECT_FLOAT_EQ(a.InDegrees(), angle);
|
EXPECT_FLOAT_EQ(a.InDegrees(), angle);
|
||||||
|
|
||||||
angle = -180.0F;
|
angle = -180.0F;
|
||||||
a = Angle8::Degrees(angle);
|
a = Angle::Degrees(angle);
|
||||||
EXPECT_FLOAT_EQ(a.InDegrees(), angle);
|
EXPECT_FLOAT_EQ(a.InDegrees(), angle);
|
||||||
|
|
||||||
angle = 270.0F;
|
angle = 270.0F;
|
||||||
a = Angle8::Degrees(angle);
|
a = Angle::Degrees(angle);
|
||||||
EXPECT_FLOAT_EQ(a.InDegrees(), -90);
|
EXPECT_FLOAT_EQ(a.InDegrees(), -90);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(Angle8, Negate) {
|
TYPED_TEST(AngleTest, Negate) {
|
||||||
|
using Angle = TypeParam;
|
||||||
float angle = 0;
|
float angle = 0;
|
||||||
Angle8 a = Angle8::Degrees(angle);
|
Angle a = Angle::Degrees(angle);
|
||||||
a = -a;
|
a = -a;
|
||||||
EXPECT_FLOAT_EQ(a.InDegrees(), angle);
|
EXPECT_FLOAT_EQ(a.InDegrees(), angle);
|
||||||
|
|
||||||
angle = 90.0F;
|
angle = 90.0F;
|
||||||
a = Angle8::Degrees(angle);
|
a = Angle::Degrees(angle);
|
||||||
a = -a;
|
a = -a;
|
||||||
EXPECT_FLOAT_EQ(a.InDegrees(), -angle);
|
EXPECT_FLOAT_EQ(a.InDegrees(), -angle);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(Angle8, Add) {
|
TYPED_TEST(AngleTest, Add) {
|
||||||
Angle8 a = Angle8::Degrees(-45);
|
using Angle = TypeParam;
|
||||||
Angle8 b = Angle8::Degrees(45.0F);
|
Angle a = Angle::Degrees(-45);
|
||||||
Angle8 r = a + b;
|
Angle b = Angle::Degrees(45.0F);
|
||||||
|
Angle r = a + b;
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), 0);
|
EXPECT_FLOAT_EQ(r.InDegrees(), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(Angle8, Subtract) {
|
TYPED_TEST(AngleTest, Subtract) {
|
||||||
Angle8 a = Angle8::Degrees(0);
|
Angle8 a = Angle8::Degrees(0);
|
||||||
Angle8 b = Angle8::Degrees(45.0F);
|
Angle8 b = Angle8::Degrees(45.0F);
|
||||||
Angle8 r = a - b;
|
Angle8 r = a - b;
|
||||||
EXPECT_FLOAT_EQ(r.InDegrees(), -45);
|
EXPECT_FLOAT_EQ(r.InDegrees(), -45);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(Angle8, Compare) {
|
TYPED_TEST(AngleTest, Compare) {
|
||||||
Angle8 a = Angle8::Degrees(45);
|
Angle8 a = Angle8::Degrees(45);
|
||||||
bool r = false;
|
bool r = false;
|
||||||
|
|
||||||
@ -64,7 +73,7 @@ TEST(Angle8, Compare) {
|
|||||||
EXPECT_TRUE(r) << "45 > -90";
|
EXPECT_TRUE(r) << "45 > -90";
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(Angle8, Normalize) {
|
TYPED_TEST(AngleTest, Normalize) {
|
||||||
Angle8 r = Angle8();
|
Angle8 r = Angle8();
|
||||||
|
|
||||||
r = Angle8::Normalize(Angle8::Degrees(90.0f));
|
r = Angle8::Normalize(Angle8::Degrees(90.0f));
|
||||||
@ -98,7 +107,7 @@ TEST(Angle8, Normalize) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(Angle8, Clamp) {
|
TYPED_TEST(AngleTest, Clamp) {
|
||||||
Angle8 r = Angle8();
|
Angle8 r = Angle8();
|
||||||
|
|
||||||
// Clamp(1, 0, 2) will fail because Angle8 does not have enough resolution for
|
// Clamp(1, 0, 2) will fail because Angle8 does not have enough resolution for
|
||||||
@ -178,7 +187,7 @@ TEST(Angle8, Clamp) {
|
|||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
TEST(Angle8, MoveTowards) {
|
TYPED_TEST(AngleTest, MoveTowards) {
|
||||||
Angle8 r = Angle8();
|
Angle8 r = Angle8();
|
||||||
|
|
||||||
r = Angle8::MoveTowards(Angle8::Degrees(0), Angle8::Degrees(90), 30);
|
r = Angle8::MoveTowards(Angle8::Degrees(0), Angle8::Degrees(90), 30);
|
||||||
Loading…
x
Reference in New Issue
Block a user