File: string-utils-test.h

package info (click to toggle)
easyloggingpp 9.97.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye
  • size: 2,840 kB
  • sloc: cpp: 11,415; python: 2,336; sh: 337; makefile: 29
file content (107 lines) | stat: -rw-r--r-- 4,382 bytes parent folder | download | duplicates (6)
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
100
101
102
103
104
105
106
107
#ifndef STRING_UTILS_TEST_H
#define STRING_UTILS_TEST_H

#include "test.h"

TEST(StringUtilsTest, WildCardMatch) {
    EXPECT_TRUE(Str::wildCardMatch("main", "m*"));
    EXPECT_TRUE(Str::wildCardMatch("mei.cpp", "m*cpp"));
    EXPECT_TRUE(Str::wildCardMatch("me.cpp", "me.cpp"));
    EXPECT_TRUE(Str::wildCardMatch("me.cpp", "m?.cpp"));
    EXPECT_TRUE(Str::wildCardMatch("m/f.cpp", "m??.cpp"));
    EXPECT_TRUE(Str::wildCardMatch("", "*"));
    EXPECT_FALSE(Str::wildCardMatch("", "?"));
    EXPECT_TRUE(Str::wildCardMatch("fastquery--and anything after or before", "*****************fast*****query*****"));
    EXPECT_FALSE(Str::wildCardMatch("some thing not matching", "some * matching all"));
}

TEST(StringUtilsTest, Trim) {
    std::string strLeftWhiteSpace(" string 1");
    std::string strLeftRightWhiteSpace(" string 2 ");
    std::string strRightWhiteSpace("string 3 ");
    std::string strLeftRightWhiteSpaceWithTabAndNewLine("  string 4 \t\n");
    EXPECT_EQ("string 1", Str::trim(strLeftWhiteSpace));
    EXPECT_EQ("string 2", Str::trim(strLeftRightWhiteSpace));
    EXPECT_EQ("string 3", Str::trim(strRightWhiteSpace));
    EXPECT_EQ("string 4", Str::trim(strLeftRightWhiteSpaceWithTabAndNewLine));
}

TEST(StringUtilsTest, StartsAndEndsWith) {
    EXPECT_TRUE(Str::startsWith("Dotch this", "Dotch"));
    EXPECT_FALSE(Str::startsWith("Dotch this", "dotch"));
    EXPECT_FALSE(Str::startsWith("    Dotch this", "dotch"));
    EXPECT_TRUE(Str::endsWith("Dotch this", "this"));
    EXPECT_FALSE(Str::endsWith("Dotch this", "This"));
}

TEST(StringUtilsTest, ReplaceAll) {
    std::string str = "This is cool";
    char replaceWhat = 'o';
    char replaceWith = '0';
    EXPECT_EQ("This is c00l", Str::replaceAll(str, replaceWhat, replaceWith));
}

TEST(StringUtilsTest, ToUpper) {
    std::string str = "This iS c0ol";
    EXPECT_EQ("THIS IS C0OL", Str::toUpper(str));
    str = "enabled = ";
    EXPECT_EQ("ENABLED = ", Str::toUpper(str));
}

TEST(StringUtilsTest, CStringEq) {
    EXPECT_TRUE(Str::cStringEq("this", "this"));
    EXPECT_FALSE(Str::cStringEq(nullptr, "this"));
    EXPECT_TRUE(Str::cStringEq(nullptr, nullptr));
}

TEST(StringUtilsTest, CStringCaseEq) {
    EXPECT_TRUE(Str::cStringCaseEq("this", "This"));
    EXPECT_TRUE(Str::cStringCaseEq("this", "this"));
    EXPECT_TRUE(Str::cStringCaseEq(nullptr, nullptr));
    EXPECT_FALSE(Str::cStringCaseEq(nullptr, "nope"));
}

TEST(StringUtilsTest, Contains) {
    EXPECT_TRUE(Str::contains("the quick brown fox jumped over the lazy dog", 'a'));
    EXPECT_FALSE(Str::contains("the quick brown fox jumped over the lazy dog", '9'));
}

TEST(StringUtilsTest, ReplaceFirstWithEscape) {
    el::base::type::string_t str = ELPP_LITERAL("Rolling in the deep");
    Str::replaceFirstWithEscape(str, ELPP_LITERAL("Rolling"), ELPP_LITERAL("Swimming"));
    EXPECT_EQ(ELPP_LITERAL("Swimming in the deep"), str);
    str = ELPP_LITERAL("this is great and this is not");
    Str::replaceFirstWithEscape(str, ELPP_LITERAL("this is"), ELPP_LITERAL("that was"));
    EXPECT_EQ(ELPP_LITERAL("that was great and this is not"), str);
    str = ELPP_LITERAL("%this is great and this is not");
    Str::replaceFirstWithEscape(str, ELPP_LITERAL("this is"), ELPP_LITERAL("that was"));
    EXPECT_EQ(ELPP_LITERAL("this is great and that was not"), str);
    str = ELPP_LITERAL("%datetime %level %msg");
    Str::replaceFirstWithEscape(str, ELPP_LITERAL("%level"), LevelHelper::convertToString(Level::Info));
    EXPECT_EQ(ELPP_LITERAL("%datetime INFO %msg"), str);
}

TEST(StringUtilsTest, AddToBuff) {
    char buf[100];
    char* bufLim = buf + 100;
    char* buffPtr = buf;

    buffPtr = Str::addToBuff("The quick brown fox", buffPtr, bufLim);
    EXPECT_STREQ("The quick brown fox", buf);
    buffPtr = Str::addToBuff(" jumps over the lazy dog", buffPtr, bufLim);
    EXPECT_STREQ("The quick brown fox jumps over the lazy dog", buf);
}

TEST(StringUtilsTest, ConvertAndAddToBuff) {
    char buf[100];
    char* bufLim = buf + 100;
    char* buffPtr = buf;

    buffPtr = Str::addToBuff("Today is lets say ", buffPtr, bufLim);
    buffPtr = Str::convertAndAddToBuff(5, 1, buffPtr, bufLim);
    buffPtr = Str::addToBuff(" but we write it as ", buffPtr, bufLim);
    buffPtr = Str::convertAndAddToBuff(5, 2, buffPtr, bufLim);
    EXPECT_STREQ("Today is lets say 5 but we write it as 05", buf);
}

#endif // STRING_UTILS_TEST_H