#if GTEST #include #include #include #include "Direction.h" using namespace LinearAlgebra; #define FLOAT_INFINITY std::numeric_limits::infinity() using BaseTypes = ::testing::Types; template class DirectionTests : public ::testing::Test {}; TYPED_TEST_SUITE(DirectionTests, BaseTypes); TYPED_TEST(DirectionTests, Compare) { using Direction = DirectionOf; using Angle = AngleOf; Direction d = Direction::Degrees(45, 135); bool r; r = (d == Direction(Angle::Degrees(45), Angle::Degrees(135))); EXPECT_TRUE(r) << "45,135 == 45, 135"; r = (d == Direction(Angle::Degrees(45 + 360), Angle::Degrees(135 - 360))); EXPECT_TRUE(r) << "45+360, 135-360 == 45, 135"; } TYPED_TEST(DirectionTests, Inverse) { using Direction = DirectionOf; Direction d; Direction r; d = Direction::Degrees(45, 135); r = -d; EXPECT_EQ(r, Direction::Degrees(-135, -135)) << "-(45, 135)"; d = Direction::Degrees(-45, -135); r = -d; EXPECT_EQ(r, Direction::Degrees(135, 135)) << "-(-45, -135)"; d = Direction::Degrees(0, 0); r = -d; EXPECT_EQ(r, Direction::Degrees(180, 0)) << "-(0, 0)"; d = Direction::Degrees(0, 45); r = -d; EXPECT_EQ(r, Direction::Degrees(180, -45)) << "-(0, 45)"; } TYPED_TEST(DirectionTests, Equality) { using Direction = DirectionOf; Direction d; d = Direction::Degrees(135, 45); EXPECT_EQ(d, Direction::Degrees(135, 45)) << "(135, 45) == (135, 45)"; EXPECT_EQ(d, Direction::Degrees(135 + 360, 45)) << "(135, 45) == (135 + 360, 45) "; EXPECT_EQ(d, Direction::Degrees(135 - 360, 45)) << "(135, 135) == (135 - 360, 45) "; d = Direction::Degrees(0, 45 + 180); EXPECT_EQ(d, Direction::Degrees(180, -45)) << "(0, 45+180) == (180, -45)"; } #endif