summaryrefslogtreecommitdiff
path: root/tests/helpers/MiscFunctions.cpp
blob: 4eefb5d35f65af904979cdbf537788220bdd3620 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#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"));
}