From 6a1d0434cf86136a7d739cf7d9b48d93dd6a1e66 Mon Sep 17 00:00:00 2001 From: Pascal Serrarens Date: Fri, 6 Sep 2024 12:36:22 +0200 Subject: [PATCH] Added Angle comparison --- Angle.cpp | 26 +++++++++++++++++++++++--- Angle.h | 7 ++++++- test/Angle_test.cc | 28 ++++++++++++++++++++++++++++ 3 files changed, 57 insertions(+), 4 deletions(-) diff --git a/Angle.cpp b/Angle.cpp index 536f719..f6cc704 100644 --- a/Angle.cpp +++ b/Angle.cpp @@ -96,9 +96,29 @@ float AngleOf::ToFloat() const { // template <> // AngleOf AngleOf::Deg2Rad = (pi * 2) / 360.0f; -template <> -bool AngleOf::operator==(AngleOf a) { - return this->ToFloat() == a.ToFloat(); +template +bool AngleOf::operator==(AngleOf a) { + return this->value == a.value; +} + +template +bool AngleOf::operator>(AngleOf a) { + return this->value > a.value; +} + +template +bool AngleOf::operator>=(AngleOf a) { + return this->value >= a.value; +} + +template +bool AngleOf::operator<(AngleOf a) { + return this->value < a.value; +} + +template +bool AngleOf::operator<=(AngleOf a) { + return this->value <= a.value; } template <> diff --git a/Angle.h b/Angle.h index c1d81a1..e02fcc3 100644 --- a/Angle.h +++ b/Angle.h @@ -28,6 +28,10 @@ class AngleOf { static AngleOf pi; bool operator==(AngleOf a); + bool operator>(AngleOf a); + bool operator>=(AngleOf a); + bool operator<(AngleOf a); + bool operator<=(AngleOf a); AngleOf operator-() const; AngleOf operator-(const AngleOf& a) const; @@ -61,7 +65,8 @@ class AngleOf { }; using Angle = AngleOf; -// using Angle = AngleOf; +using AngleSingle = AngleOf; +using Angle16 = AngleOf; } // namespace LinearAlgebra } // namespace Passer diff --git a/test/Angle_test.cc b/test/Angle_test.cc index 5625b2d..694ab62 100644 --- a/test/Angle_test.cc +++ b/test/Angle_test.cc @@ -8,6 +8,34 @@ #define FLOAT_INFINITY std::numeric_limits::infinity() +TEST(Angle16, Compare) { + Angle16 a = Angle16(45); + bool r = false; + + r = a > Angle16(0); + EXPECT_TRUE(r) << "45 > 0"; + + r = a > Angle16(90); + EXPECT_FALSE(r) << "45 > 90"; + + r = a > Angle16(-90); + EXPECT_TRUE(r) << "45 > -90"; +} + +TEST(AngleSingle, Compare) { + AngleSingle a = AngleSingle(45); + bool r = false; + + r = a > AngleSingle(0); + EXPECT_TRUE(r) << "45 > 0"; + + r = a > AngleSingle(90); + EXPECT_FALSE(r) << "45 > 90"; + + r = a > AngleSingle(-90); + EXPECT_TRUE(r) << "45 > -90"; +} + TEST(Angle, Normalize) { Angle r = 0;