File: UTF8.cpp

package info (click to toggle)
hyprtoolkit 0.5.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,664 kB
  • sloc: cpp: 11,582; xml: 337; sh: 17; makefile: 4
file content (121 lines) | stat: -rw-r--r-- 4,983 bytes parent folder | download
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#include <helpers/UTF8.hpp>

#include <gtest/gtest.h>

using namespace Hyprtoolkit;

TEST(UTF8, codepointLen) {
    const auto str = std::string("δΈ– hello πŸ§‘β€πŸŒΎ");
    EXPECT_EQ(UTF8::codepointLen(&str[0], str.length()), 3);
    EXPECT_EQ(UTF8::codepointLen(&str[3], str.length() - 3), 1);
    EXPECT_EQ(UTF8::codepointLen(&str[10], str.length() - 10), 4);
}

TEST(UTF8, codepointLenBefore) {
    const auto str = std::string("δΈ– hello πŸ§‘β€πŸŒΎ");
    EXPECT_EQ(UTF8::codepointLenBefore(str, 0), 0);
    EXPECT_EQ(UTF8::codepointLenBefore(str, 3), 3);
    EXPECT_EQ(UTF8::codepointLenBefore(str, 10), 1);
    EXPECT_EQ(UTF8::codepointLenBefore(str, 14), 4);
}

TEST(UTF8, length) {
    EXPECT_EQ(UTF8::length(""), 0);
    EXPECT_EQ(UTF8::length("Hello"), 5);
    EXPECT_EQ(UTF8::length("δΈ–η•Œ"), 2);
    EXPECT_EQ(UTF8::length("δΈ–η•Œisι…·θ–„"), 6);
}

TEST(UTF8, substr) {
    EXPECT_EQ(UTF8::substr("", 0, 0), "");
    EXPECT_EQ(UTF8::substr("ζ­»", 1), "");
    EXPECT_EQ(UTF8::substr("ζ­»", 0, 0), "");
    EXPECT_EQ(UTF8::substr("Hello", 0, 3), "Hel");
    EXPECT_EQ(UTF8::substr("δΈ–η•Œ", 1, 1), "η•Œ");
    EXPECT_EQ(UTF8::substr("δΈ–η•Œisι…·θ–„", 1), "η•Œisι…·θ–„");
    EXPECT_EQ(UTF8::substr("ハむパーランド", 1, 2), "むパ");
}

TEST(UTF8, utf8ToOffset) {
    EXPECT_EQ(UTF8::utf8ToOffset("", 0), 0);
    EXPECT_EQ(UTF8::utf8ToOffset("Hello", 20000), 5);
    EXPECT_EQ(UTF8::utf8ToOffset("Hello", 3), 3);
    EXPECT_EQ(UTF8::utf8ToOffset("ι­‘ι­…ι­ι­Ž", 3), 9);
    EXPECT_EQ(UTF8::utf8ToOffset("aι­‘ι­…ι­ι­Ž", 3), 7);
}

TEST(UTF8, offsetToUTF8Len) {
    EXPECT_EQ(UTF8::offsetToUTF8Len("", 0), 0);
    EXPECT_EQ(UTF8::offsetToUTF8Len("Hello", 3), 3);
    EXPECT_EQ(UTF8::offsetToUTF8Len("ι­‘ι­…ι­ι­Ž", 3), 1);
    EXPECT_EQ(UTF8::offsetToUTF8Len("aι­‘ι­…ι­ι­Ž", 4), 2);
    EXPECT_EQ(UTF8::offsetToUTF8Len("ι­‘aι­…", 1), 1);
}

TEST(UTF8, findFirstOf) {
    // weird values
    EXPECT_EQ(UTF8::findFirstOf("", ""), std::string::npos);
    EXPECT_EQ(UTF8::findFirstOf("", "aba"), std::string::npos);
    EXPECT_EQ(UTF8::findFirstOf("", "aba", 1000), std::string::npos);
    EXPECT_EQ(UTF8::findFirstOf("aba", ""), std::string::npos);
    EXPECT_EQ(UTF8::findFirstOf("aba", "", 1000), std::string::npos);
    EXPECT_EQ(UTF8::findFirstOf("aba", "a", 1000), std::string::npos);

    const auto str = "is πŸ§‘β€πŸŒΎ the same as πŸ§‘πŸŒΎ?";
    EXPECT_EQ(UTF8::findFirstOf(str, "i", 2), std::string::npos);
    EXPECT_EQ(UTF8::findFirstOf(str, "I"), std::string::npos);
    EXPECT_EQ(UTF8::findFirstOf(str, "i"), 0);
    EXPECT_EQ(UTF8::findFirstOf(str, "?"), 35);
    EXPECT_EQ(UTF8::findFirstOf(str, "πŸ§‘"), 3);
}

TEST(UTF8, findLastOf) {
    // weird values
    EXPECT_EQ(UTF8::findLastOf("", ""), std::string::npos);
    EXPECT_EQ(UTF8::findLastOf("", "aba"), std::string::npos);
    EXPECT_EQ(UTF8::findLastOf("", "aba", 1000), std::string::npos);
    EXPECT_EQ(UTF8::findLastOf("aba", ""), std::string::npos);
    EXPECT_EQ(UTF8::findLastOf("aba", "", 1000), std::string::npos);
    EXPECT_EQ(UTF8::findLastOf("aba", "a", 1000), 2);

    const auto str = "is πŸ§‘β€πŸŒΎ the same as πŸ§‘πŸŒΎ?";
    EXPECT_EQ(UTF8::findLastOf(str, "i", 2), 0);
    EXPECT_EQ(UTF8::findLastOf(str, "I"), std::string::npos);
    EXPECT_EQ(UTF8::findLastOf(str, "i"), 0);
    EXPECT_EQ(UTF8::findLastOf(str, "?"), 35);
    EXPECT_EQ(UTF8::findLastOf(str, "πŸ§‘"), 27);
}

TEST(UTF8, findFirstNotOf) {
    // weird values
    EXPECT_EQ(UTF8::findFirstNotOf("", ""), std::string::npos);
    EXPECT_EQ(UTF8::findFirstNotOf("", "aba"), std::string::npos);
    EXPECT_EQ(UTF8::findFirstNotOf("", "aba", 1000), std::string::npos);
    EXPECT_EQ(UTF8::findFirstNotOf("aba", "", 1000), std::string::npos);
    EXPECT_EQ(UTF8::findFirstNotOf("aba", "a", 1000), std::string::npos);

    EXPECT_EQ(UTF8::findFirstNotOf("aba", ""), 0);
    EXPECT_EQ(UTF8::findFirstNotOf("is?", "i", 2), 2);
    EXPECT_EQ(UTF8::findFirstNotOf("is?", "i"), 1);
    EXPECT_EQ(UTF8::findFirstNotOf("is?", "?", 2), std::string::npos);
    EXPECT_EQ(UTF8::findFirstNotOf("is?", "?"), 0);
    EXPECT_EQ(UTF8::findFirstNotOf("bbbbb", "b"), std::string::npos);
    EXPECT_EQ(UTF8::findFirstNotOf("πŸ§‘πŸ§‘πŸŒΎπŸŒΎπŸ§‘", "πŸ§‘"), 8);
}

TEST(UTF8, findLastNotOf) {
    // weird values
    EXPECT_EQ(UTF8::findLastNotOf("", ""), std::string::npos);
    EXPECT_EQ(UTF8::findLastNotOf("", "aba"), std::string::npos);
    EXPECT_EQ(UTF8::findLastNotOf("", "aba", 1000), std::string::npos);
    EXPECT_EQ(UTF8::findLastNotOf("aba", "", 1000), 2);
    EXPECT_EQ(UTF8::findLastNotOf("aba", "a", 1000), 1);

    EXPECT_EQ(UTF8::findLastNotOf("aba", ""), 2);
    EXPECT_EQ(UTF8::findLastNotOf("is?", "i", 3), 2);
    EXPECT_EQ(UTF8::findLastNotOf("is?", "i"), 2);
    EXPECT_EQ(UTF8::findLastNotOf("is?", "?", 2), 1);
    EXPECT_EQ(UTF8::findLastNotOf("is?", "?"), 1);
    EXPECT_EQ(UTF8::findLastNotOf("bbbbb", "b"), std::string::npos);
    EXPECT_EQ(UTF8::findLastNotOf("πŸ§‘πŸ§‘πŸŒΎπŸŒΎπŸ§‘", "πŸ§‘"), 12);
}