diff --git a/tests/src/Base/Tools.cpp b/tests/src/Base/Tools.cpp index 033aff61d7..f135e8caab 100644 --- a/tests/src/Base/Tools.cpp +++ b/tests/src/Base/Tools.cpp @@ -1,6 +1,8 @@ #include "gtest/gtest.h" #include +#include +// NOLINTBEGIN(cppcoreguidelines-*,readability-*) TEST(BaseToolsSuite, TestUniqueName1) { EXPECT_EQ(Base::Tools::getUniqueName("Body", {}), "Body"); @@ -41,6 +43,99 @@ TEST(BaseToolsSuite, TestUniqueName8) EXPECT_EQ(Base::Tools::getUniqueName("Body12345", {"Body"}, 3), "Body12346"); } +TEST(Tools, TestIota) +{ + Base::iotaGen iota(1); + std::vector vec(5); + std::generate(vec.begin(), vec.end(), iota); + std::vector out = {1, 2, 3, 4, 5}; + EXPECT_EQ(vec, out); +} + +TEST(Tools, TestClamp) +{ + EXPECT_EQ(Base::clamp(2, 1, 3), 2); + EXPECT_EQ(Base::clamp(4, 1, 3), 3); + EXPECT_EQ(Base::clamp(0, 1, 3), 1); + + EXPECT_DOUBLE_EQ(Base::clamp(2, 1.5, 3.1), 2.0); + EXPECT_DOUBLE_EQ(Base::clamp(4, 1.5, 3.1), 3.1); + EXPECT_DOUBLE_EQ(Base::clamp(0, 1.5, 3.1), 1.5); +} + +TEST(Tools, TestSignum) +{ + EXPECT_EQ(Base::sgn(0), 0); + EXPECT_EQ(Base::sgn(2), 1); + EXPECT_EQ(Base::sgn(-2), -1); + EXPECT_DOUBLE_EQ(Base::sgn(0.1), 1.0); + EXPECT_DOUBLE_EQ(Base::sgn(2.0), 1.0); + EXPECT_DOUBLE_EQ(Base::sgn(-2.0), -1.0); + EXPECT_DOUBLE_EQ(Base::sgn(0.0), 0.0); +} + +TEST(Tools, TestRadian) +{ + EXPECT_EQ(Base::toRadians(90), 1); + EXPECT_DOUBLE_EQ(Base::toRadians(180), M_PI); + EXPECT_DOUBLE_EQ(Base::toRadians(90.0), M_PI / 2.0); + EXPECT_DOUBLE_EQ(Base::toRadians(0.0), 0.0); +} + +TEST(Tools, TestDegree) +{ + EXPECT_EQ(Base::toDegrees(3), 171); + EXPECT_DOUBLE_EQ(Base::toDegrees(M_PI), 180.0); + EXPECT_DOUBLE_EQ(Base::toDegrees(M_PI / 2.0), 90.0); + EXPECT_DOUBLE_EQ(Base::toDegrees(0.0), 0.0); +} + +TEST(Tools, TestToggle) +{ + bool value = true; + { + Base::FlagToggler toggle(value); + EXPECT_EQ(value, false); + } + EXPECT_EQ(value, true); +} + +TEST(Tools, TestStateLocker) +{ + bool value = true; + { + Base::StateLocker lock(value); + EXPECT_EQ(value, true); + } + EXPECT_EQ(value, true); + { + Base::StateLocker lock(value, false); + EXPECT_EQ(value, false); + } + EXPECT_EQ(value, true); +} + +TEST(Tools, TestBitsetLocker) +{ + std::bitset<8> value; + { + Base::BitsetLocker lock(value, 1); + EXPECT_EQ(value.test(1), true); + } + EXPECT_EQ(value.test(1), false); + { + Base::BitsetLocker lock(value, 2, false); + EXPECT_EQ(value.test(2), false); + } + EXPECT_EQ(value.test(2), false); + + value.set(3, true); + { + Base::BitsetLocker lock(value, 3, false); + EXPECT_EQ(value.test(3), false); + } + EXPECT_EQ(value.test(3), true); +} TEST(BaseToolsSuite, TestQuote) { EXPECT_EQ(Base::Tools::quoted("Test"), "\"Test\""); @@ -50,3 +145,4 @@ TEST(BaseToolsSuite, TestJoinList) { EXPECT_EQ(Base::Tools::joinList({"AB", "CD"}), "AB, CD, "); } +// NOLINTEND(cppcoreguidelines-*,readability-*)