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-*)