#if GTEST #include #include #include #include "Angle.h" #define FLOAT_INFINITY std::numeric_limits::infinity() TEST(Angle, Normalize) { float r = 0; r = Angle::Normalize(90); EXPECT_FLOAT_EQ(r, 90) << "Normalize 90"; r = Angle::Normalize(-90); EXPECT_FLOAT_EQ(r, -90) << "Normalize -90"; r = Angle::Normalize(270); EXPECT_FLOAT_EQ(r, -90) << "Normalize 270"; r = Angle::Normalize(270+360); EXPECT_FLOAT_EQ(r, -90) << "Normalize 270+360"; r = Angle::Normalize(-270); EXPECT_FLOAT_EQ(r, 90) << "Normalize -270"; r = Angle::Normalize(-270 - 360); EXPECT_FLOAT_EQ(r, 90) << "Normalize -270-360"; r = Angle::Normalize(0); EXPECT_FLOAT_EQ(r, 0) << "Normalize 0"; if (std::numeric_limits::is_iec559) { r = Angle::Normalize(FLOAT_INFINITY); EXPECT_FLOAT_EQ(r, FLOAT_INFINITY) << "Normalize INFINITY"; r = Angle::Normalize(-FLOAT_INFINITY); EXPECT_FLOAT_EQ(r, -FLOAT_INFINITY) << "Normalize INFINITY"; } } TEST(Angle, Clamp) { float r = 0; r = Angle::Clamp(1, 0, 2); EXPECT_FLOAT_EQ(r, 1) << "Clamp 1 0 2"; r = Angle::Clamp(-1, 0, 2); EXPECT_FLOAT_EQ(r, 0) << "Clamp -1 0 2"; r = Angle::Clamp(3, 0, 2); EXPECT_FLOAT_EQ(r, 2) << "Clamp 3 0 2"; r = Angle::Clamp(1, 0, 0); EXPECT_FLOAT_EQ(r, 0) << "Clamp 1 0 0"; r = Angle::Clamp(0, 0, 0); EXPECT_FLOAT_EQ(r, 0) << "Clamp 0 0 0"; r = Angle::Clamp(0, 1, -1); EXPECT_FLOAT_EQ(r, 1) << "Clamp 0 1 -1"; if (std::numeric_limits::is_iec559) { r = Angle::Clamp(1, 0, FLOAT_INFINITY); EXPECT_FLOAT_EQ(r, 1) << "Clamp 1 0 INFINITY"; r = Angle::Clamp(1, -FLOAT_INFINITY, 1); EXPECT_FLOAT_EQ(r, 1) << "Clamp 1 -INFINITY 1"; } } TEST(Angle, Difference) { float r = 0; r = Angle::Difference(0, 90); EXPECT_FLOAT_EQ(r, 90) << "Difference 0 90"; r = Angle::Difference(0, -90); EXPECT_FLOAT_EQ(r, -90) << "Difference 0 -90"; r = Angle::Difference(0, 270); EXPECT_FLOAT_EQ(r, -90) << "Difference 0 270"; r = Angle::Difference(0, -270); EXPECT_FLOAT_EQ(r, 90) << "Difference 0 -270"; r = Angle::Difference(90, 0); EXPECT_FLOAT_EQ(r, -90) << "Difference 90 0"; r = Angle::Difference(-90, 0); EXPECT_FLOAT_EQ(r, 90) << "Difference -90 0"; r = Angle::Difference(0, 0); EXPECT_FLOAT_EQ(r, 0) << "Difference 0 0"; r = Angle::Difference(90, 90); EXPECT_FLOAT_EQ(r, 0) << "Difference 90 90"; if (std::numeric_limits::is_iec559) { r = Angle::Difference(0, INFINITY); EXPECT_FLOAT_EQ(r, INFINITY) << "Difference 0 INFINITY"; r = Angle::Difference(0, -INFINITY); EXPECT_FLOAT_EQ(r, -INFINITY) << "Difference 0 -INFINITY"; r = Angle::Difference(-INFINITY, INFINITY); EXPECT_FLOAT_EQ(r, INFINITY) << "Difference -INFINITY INFINITY"; } } TEST(Angle, MoveTowards) { float r = 0; r = Angle::MoveTowards(0, 90, 30); EXPECT_FLOAT_EQ(r, 30) << "MoveTowards 0 90 30"; r = Angle::MoveTowards(0, 90, 90); EXPECT_FLOAT_EQ(r, 90) << "MoveTowards 0 90 90"; r = Angle::MoveTowards(0, 90, 180); EXPECT_FLOAT_EQ(r, 90) << "MoveTowards 0 90 180"; r = Angle::MoveTowards(0, 90, 270); EXPECT_FLOAT_EQ(r, 90) << "MoveTowards 0 90 270"; r = Angle::MoveTowards(0, 90, -30); EXPECT_FLOAT_EQ(r, -30) << "MoveTowards 0 90 -30"; r = Angle::MoveTowards(0, -90, -30); EXPECT_FLOAT_EQ(r, 30) << "MoveTowards 0 -90 -30"; r = Angle::MoveTowards(0, -90, -90); EXPECT_FLOAT_EQ(r, 90) << "MoveTowards 0 -90 -90"; r = Angle::MoveTowards(0, -90, -180); EXPECT_FLOAT_EQ(r, 180) << "MoveTowards 0 -90 -180"; r = Angle::MoveTowards(0, -90, -270); EXPECT_FLOAT_EQ(r, 270) << "MoveTowards 0 -90 -270"; r = Angle::MoveTowards(0, 90, 0); EXPECT_FLOAT_EQ(r, 0) << "MoveTowards 0 90 0"; r = Angle::MoveTowards(0, 0, 0); EXPECT_FLOAT_EQ(r, 0) << "MoveTowards 0 0 0"; r = Angle::MoveTowards(0, 0, 30); EXPECT_FLOAT_EQ(r, 0) << "MoveTowards 0 0 30"; if (std::numeric_limits::is_iec559) { r = Angle::MoveTowards(0, 90, FLOAT_INFINITY); EXPECT_FLOAT_EQ(r, 90) << "MoveTowards 0 90 FLOAT_INFINITY"; r = Angle::MoveTowards(0, FLOAT_INFINITY, 30); EXPECT_FLOAT_EQ(r, 30) << "MoveTowards 0 FLOAT_INFINITY 30"; r = Angle::MoveTowards(0, -90, -FLOAT_INFINITY); EXPECT_FLOAT_EQ(r, FLOAT_INFINITY) << "MoveTowards 0 -90 -FLOAT_INFINITY"; r = Angle::MoveTowards(0, -FLOAT_INFINITY, -30); EXPECT_FLOAT_EQ(r, 30) << "MoveTowards 0 -FLOAT_INFINITY -30"; } } #endif