diff options
| author | Ioannis Tzavaras <tzavaras.jannis@gmail.com> | 2026-04-03 00:14:42 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-04-02 22:14:42 +0100 |
| commit | b2a29e1bf2792099dd0208d23cdf127feefbb89d (patch) | |
| tree | 92d24642c9e7a86bfbb52b6088a98cd21e80e546 /tests/helpers/MiscFunctions.cpp | |
| parent | 90a79dc9906c85f8aa76f812f33dee1283494b9c (diff) | |
tests: add unit tests for MiscFunctions helpers (#13934)
Diffstat (limited to 'tests/helpers/MiscFunctions.cpp')
| -rw-r--r-- | tests/helpers/MiscFunctions.cpp | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/tests/helpers/MiscFunctions.cpp b/tests/helpers/MiscFunctions.cpp new file mode 100644 index 00000000..e0857987 --- /dev/null +++ b/tests/helpers/MiscFunctions.cpp @@ -0,0 +1,145 @@ +#include <helpers/MiscFunctions.hpp> + +#include <gtest/gtest.h> + +// escapeJSONStrings + +TEST(Helpers, escapeJSONStringsBasic) { + EXPECT_EQ(escapeJSONStrings("hello"), "hello"); + EXPECT_EQ(escapeJSONStrings(""), ""); +} + +TEST(Helpers, escapeJSONStringsSpecialChars) { + EXPECT_EQ(escapeJSONStrings("say \"hello\""), "say \\\"hello\\\""); + EXPECT_EQ(escapeJSONStrings("back\\slash"), "back\\\\slash"); + EXPECT_EQ(escapeJSONStrings("line\nbreak"), "line\\nbreak"); + EXPECT_EQ(escapeJSONStrings("tab\there"), "tab\\there"); + EXPECT_EQ(escapeJSONStrings("cr\rhere"), "cr\\rhere"); +} + +// isDirection + +TEST(Helpers, isDirectionString) { + EXPECT_TRUE(isDirection("l")); + EXPECT_TRUE(isDirection("r")); + EXPECT_TRUE(isDirection("u")); + EXPECT_TRUE(isDirection("d")); + EXPECT_TRUE(isDirection("t")); + EXPECT_TRUE(isDirection("b")); + EXPECT_FALSE(isDirection("x")); + EXPECT_FALSE(isDirection("left")); + EXPECT_FALSE(isDirection("")); +} + +TEST(Helpers, isDirectionChar) { + EXPECT_TRUE(isDirection('l')); + EXPECT_TRUE(isDirection('r')); + EXPECT_TRUE(isDirection('u')); + EXPECT_TRUE(isDirection('d')); + EXPECT_TRUE(isDirection('t')); + EXPECT_TRUE(isDirection('b')); + EXPECT_FALSE(isDirection('x')); + EXPECT_FALSE(isDirection('0')); + EXPECT_FALSE(isDirection(' ')); +} + +// normalizeAngleRad + +TEST(Helpers, normalizeAngleRadInRange) { + EXPECT_DOUBLE_EQ(normalizeAngleRad(0.0), 0.0); + EXPECT_DOUBLE_EQ(normalizeAngleRad(M_PI), M_PI); + EXPECT_DOUBLE_EQ(normalizeAngleRad(M_PI * 2), M_PI * 2); +} + +TEST(Helpers, normalizeAngleRadNegative) { + EXPECT_NEAR(normalizeAngleRad(-M_PI), M_PI, 0.001); + EXPECT_NEAR(normalizeAngleRad(-M_PI / 2), 3 * M_PI / 2, 0.001); +} + +TEST(Helpers, normalizeAngleRadLarge) { + EXPECT_NEAR(normalizeAngleRad(3 * M_PI), M_PI, 0.001); + EXPECT_NEAR(normalizeAngleRad(5 * M_PI), M_PI, 0.001); +} + +// stringToPercentage + +TEST(Helpers, stringToPercentagePercent) { + EXPECT_FLOAT_EQ(stringToPercentage("50%", 200.0f), 100.0f); + EXPECT_FLOAT_EQ(stringToPercentage("100%", 500.0f), 500.0f); + EXPECT_FLOAT_EQ(stringToPercentage("0%", 1000.0f), 0.0f); + EXPECT_FLOAT_EQ(stringToPercentage("25%", 400.0f), 100.0f); +} + +TEST(Helpers, stringToPercentageAbsolute) { + EXPECT_FLOAT_EQ(stringToPercentage("42", 999.0f), 42.0f); + EXPECT_FLOAT_EQ(stringToPercentage("0", 999.0f), 0.0f); + EXPECT_FLOAT_EQ(stringToPercentage("1.5", 999.0f), 1.5f); +} + +// truthy + +TEST(Helpers, truthyTrue) { + EXPECT_TRUE(truthy("1")); + EXPECT_TRUE(truthy("true")); + EXPECT_TRUE(truthy("True")); + EXPECT_TRUE(truthy("TRUE")); + EXPECT_TRUE(truthy("yes")); + EXPECT_TRUE(truthy("Yes")); + EXPECT_TRUE(truthy("on")); + EXPECT_TRUE(truthy("On")); +} + +TEST(Helpers, truthyFalse) { + EXPECT_FALSE(truthy("0")); + EXPECT_FALSE(truthy("false")); + EXPECT_FALSE(truthy("no")); + EXPECT_FALSE(truthy("off")); + EXPECT_FALSE(truthy("")); + EXPECT_FALSE(truthy("random")); +} + +// configStringToInt + +TEST(Helpers, configStringToIntDecimal) { + EXPECT_EQ(configStringToInt("42").value(), 42); + EXPECT_EQ(configStringToInt("0").value(), 0); + EXPECT_EQ(configStringToInt("-1").value(), -1); +} + +TEST(Helpers, configStringToIntHex) { + EXPECT_EQ(configStringToInt("0xFF").value(), 255); + EXPECT_EQ(configStringToInt("0x00").value(), 0); + EXPECT_EQ(configStringToInt("0x10").value(), 16); +} + +TEST(Helpers, configStringToIntRgba) { + auto result = configStringToInt("rgba(255, 0, 0, 1.0)"); + EXPECT_TRUE(result.has_value()); +} + +TEST(Helpers, configStringToIntBooleanStrings) { + // "true", "yes", "on" -> 1; "false", "no", "off" -> 0 + EXPECT_EQ(configStringToInt("true").value(), 1); + EXPECT_EQ(configStringToInt("yes").value(), 1); + EXPECT_EQ(configStringToInt("on").value(), 1); + EXPECT_EQ(configStringToInt("false").value(), 0); + EXPECT_EQ(configStringToInt("no").value(), 0); + EXPECT_EQ(configStringToInt("off").value(), 0); +} + +TEST(Helpers, configStringToIntInvalid) { + EXPECT_FALSE(configStringToInt("").has_value()); + EXPECT_FALSE(configStringToInt("abc").has_value()); +} + +// configStringToVector2D + +TEST(Helpers, configStringToVector2DValid) { + EXPECT_EQ(configStringToVector2D("1920 1080"), Vector2D(1920, 1080)); + EXPECT_EQ(configStringToVector2D("0 0"), Vector2D(0, 0)); +} + +TEST(Helpers, configStringToVector2DInvalid) { + EXPECT_THROW(configStringToVector2D("notvalid"), std::invalid_argument); + EXPECT_THROW(configStringToVector2D(""), std::invalid_argument); +} |
