From ce578791d5b524d9553552501b92e5c4abf1ccb8 Mon Sep 17 00:00:00 2001 From: Pascal Serrarens Date: Mon, 22 Dec 2025 08:58:26 +0100 Subject: [PATCH] Angle Typed tests --- test/Angle16_test.cc | 241 ------------------------ test/AngleSingle_test.cc | 249 ------------------------- test/{Angle8_test.cc => Angle_test.cc} | 41 ++-- 3 files changed, 25 insertions(+), 506 deletions(-) delete mode 100644 test/Angle16_test.cc delete mode 100644 test/AngleSingle_test.cc rename test/{Angle8_test.cc => Angle_test.cc} (90%) diff --git a/test/Angle16_test.cc b/test/Angle16_test.cc deleted file mode 100644 index f4eca3b..0000000 --- a/test/Angle16_test.cc +++ /dev/null @@ -1,241 +0,0 @@ -#if GTEST -#include "gtest/gtest.h" - -#include -#include - -#include "Angle.h" - -using namespace LinearAlgebra; - -#define FLOAT_INFINITY std::numeric_limits::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::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::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::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::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 \ No newline at end of file diff --git a/test/AngleSingle_test.cc b/test/AngleSingle_test.cc deleted file mode 100644 index c4dab51..0000000 --- a/test/AngleSingle_test.cc +++ /dev/null @@ -1,249 +0,0 @@ -#if GTEST -#include - -#include -#include - -#include "Angle.h" - -using namespace LinearAlgebra; - -#define FLOAT_INFINITY std::numeric_limits::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::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::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::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::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 \ No newline at end of file diff --git a/test/Angle8_test.cc b/test/Angle_test.cc similarity index 90% rename from test/Angle8_test.cc rename to test/Angle_test.cc index 0917f17..52cbff6 100644 --- a/test/Angle8_test.cc +++ b/test/Angle_test.cc @@ -10,47 +10,56 @@ using namespace LinearAlgebra; #define FLOAT_INFINITY std::numeric_limits::infinity() -TEST(Angle8, Construct) { +using AngleTypes = ::testing::Types, AngleOf, AngleOf>; + +template +class AngleTest : public ::testing::Test {}; +TYPED_TEST_SUITE(AngleTest, AngleTypes); + +TYPED_TEST(AngleTest, Construct) { + using Angle = TypeParam; float angle = 0.0F; - Angle8 a = Angle8::Degrees(angle); + Angle a = Angle::Degrees(angle); EXPECT_FLOAT_EQ(a.InDegrees(), angle); angle = -180.0F; - a = Angle8::Degrees(angle); + a = Angle::Degrees(angle); EXPECT_FLOAT_EQ(a.InDegrees(), angle); angle = 270.0F; - a = Angle8::Degrees(angle); + a = Angle::Degrees(angle); EXPECT_FLOAT_EQ(a.InDegrees(), -90); } -TEST(Angle8, Negate) { +TYPED_TEST(AngleTest, Negate) { + using Angle = TypeParam; float angle = 0; - Angle8 a = Angle8::Degrees(angle); + Angle a = Angle::Degrees(angle); a = -a; EXPECT_FLOAT_EQ(a.InDegrees(), angle); angle = 90.0F; - a = Angle8::Degrees(angle); + a = Angle::Degrees(angle); a = -a; EXPECT_FLOAT_EQ(a.InDegrees(), -angle); } -TEST(Angle8, Add) { - Angle8 a = Angle8::Degrees(-45); - Angle8 b = Angle8::Degrees(45.0F); - Angle8 r = a + b; +TYPED_TEST(AngleTest, Add) { + using Angle = TypeParam; + Angle a = Angle::Degrees(-45); + Angle b = Angle::Degrees(45.0F); + Angle r = a + b; EXPECT_FLOAT_EQ(r.InDegrees(), 0); } -TEST(Angle8, Subtract) { +TYPED_TEST(AngleTest, Subtract) { Angle8 a = Angle8::Degrees(0); Angle8 b = Angle8::Degrees(45.0F); Angle8 r = a - b; EXPECT_FLOAT_EQ(r.InDegrees(), -45); } -TEST(Angle8, Compare) { +TYPED_TEST(AngleTest, Compare) { Angle8 a = Angle8::Degrees(45); bool r = false; @@ -64,7 +73,7 @@ TEST(Angle8, Compare) { EXPECT_TRUE(r) << "45 > -90"; } -TEST(Angle8, Normalize) { +TYPED_TEST(AngleTest, Normalize) { Angle8 r = Angle8(); r = Angle8::Normalize(Angle8::Degrees(90.0f)); @@ -98,7 +107,7 @@ TEST(Angle8, Normalize) { } } -TEST(Angle8, Clamp) { +TYPED_TEST(AngleTest, Clamp) { Angle8 r = Angle8(); // 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(); r = Angle8::MoveTowards(Angle8::Degrees(0), Angle8::Degrees(90), 30);