1 //===-- Unittests for StringView ------------------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8
9 #include "utils/CPP/StringView.h"
10 #include "utils/UnitTest/Test.h"
11
TEST(LlvmLibcStringViewTest,InitializeCheck)12 TEST(LlvmLibcStringViewTest, InitializeCheck) {
13 __llvm_libc::cpp::StringView v;
14 ASSERT_EQ(v.size(), size_t(0));
15 ASSERT_TRUE(v.data() == nullptr);
16
17 v = __llvm_libc::cpp::StringView("");
18 ASSERT_EQ(v.size(), size_t(0));
19 ASSERT_TRUE(v.data() == nullptr);
20
21 v = __llvm_libc::cpp::StringView(nullptr);
22 ASSERT_EQ(v.size(), size_t(0));
23 ASSERT_TRUE(v.data() == nullptr);
24
25 v = __llvm_libc::cpp::StringView(nullptr, 10);
26 ASSERT_EQ(v.size(), size_t(0));
27 ASSERT_TRUE(v.data() == nullptr);
28
29 v = __llvm_libc::cpp::StringView("abc", 0);
30 ASSERT_EQ(v.size(), size_t(0));
31 ASSERT_TRUE(v.data() == nullptr);
32
33 v = __llvm_libc::cpp::StringView("123456789");
34 ASSERT_EQ(v.size(), size_t(9));
35 }
36
TEST(LlvmLibcStringViewTest,Equals)37 TEST(LlvmLibcStringViewTest, Equals) {
38 __llvm_libc::cpp::StringView v("abc");
39 ASSERT_TRUE(v.equals(__llvm_libc::cpp::StringView("abc")));
40 ASSERT_FALSE(v.equals(__llvm_libc::cpp::StringView()));
41 ASSERT_FALSE(v.equals(__llvm_libc::cpp::StringView("")));
42 ASSERT_FALSE(v.equals(__llvm_libc::cpp::StringView("123")));
43 ASSERT_FALSE(v.equals(__llvm_libc::cpp::StringView("abd")));
44 ASSERT_FALSE(v.equals(__llvm_libc::cpp::StringView("aaa")));
45 ASSERT_FALSE(v.equals(__llvm_libc::cpp::StringView("abcde")));
46 }
47
TEST(LlvmLibcStringViewTest,RemovePrefix)48 TEST(LlvmLibcStringViewTest, RemovePrefix) {
49 __llvm_libc::cpp::StringView v("123456789");
50
51 auto p = v.remove_prefix(0);
52 ASSERT_EQ(p.size(), size_t(9));
53 ASSERT_TRUE(p.equals(__llvm_libc::cpp::StringView("123456789")));
54
55 p = v.remove_prefix(4);
56 ASSERT_EQ(p.size(), size_t(5));
57 ASSERT_TRUE(p.equals(__llvm_libc::cpp::StringView("56789")));
58
59 p = v.remove_prefix(9);
60 ASSERT_EQ(p.size(), size_t(0));
61 ASSERT_TRUE(p.data() == nullptr);
62
63 p = v.remove_prefix(10);
64 ASSERT_EQ(p.size(), size_t(0));
65 ASSERT_TRUE(p.data() == nullptr);
66 }
67
TEST(LlvmLibcStringViewTest,RemoveSuffix)68 TEST(LlvmLibcStringViewTest, RemoveSuffix) {
69 __llvm_libc::cpp::StringView v("123456789");
70
71 auto p = v.remove_suffix(0);
72 ASSERT_EQ(p.size(), size_t(9));
73 ASSERT_TRUE(p.equals(__llvm_libc::cpp::StringView("123456789")));
74
75 p = v.remove_suffix(4);
76 ASSERT_EQ(p.size(), size_t(5));
77 ASSERT_TRUE(p.equals(__llvm_libc::cpp::StringView("12345")));
78
79 p = v.remove_suffix(9);
80 ASSERT_EQ(p.size(), size_t(0));
81 ASSERT_TRUE(p.data() == nullptr);
82
83 p = v.remove_suffix(10);
84 ASSERT_EQ(p.size(), size_t(0));
85 ASSERT_TRUE(p.data() == nullptr);
86 }
87
TEST(LlvmLibcStringViewTest,TrimSingleChar)88 TEST(LlvmLibcStringViewTest, TrimSingleChar) {
89 __llvm_libc::cpp::StringView v(" 123456789 ");
90 auto t = v.trim(' ');
91 ASSERT_EQ(t.size(), size_t(9));
92 ASSERT_TRUE(t.equals(__llvm_libc::cpp::StringView("123456789")));
93
94 v = __llvm_libc::cpp::StringView("====12345==");
95 t = v.trim(' ');
96 ASSERT_EQ(v.size(), size_t(11));
97 ASSERT_TRUE(t.equals(__llvm_libc::cpp::StringView("====12345==")));
98
99 t = v.trim('=');
100 ASSERT_EQ(t.size(), size_t(5));
101 ASSERT_TRUE(t.equals(__llvm_libc::cpp::StringView("12345")));
102
103 v = __llvm_libc::cpp::StringView("12345===");
104 t = v.trim('=');
105 ASSERT_EQ(t.size(), size_t(5));
106 ASSERT_TRUE(t.equals(__llvm_libc::cpp::StringView("12345")));
107
108 v = __llvm_libc::cpp::StringView("===========12345");
109 t = v.trim('=');
110 ASSERT_EQ(t.size(), size_t(5));
111 ASSERT_TRUE(t.equals(__llvm_libc::cpp::StringView("12345")));
112
113 v = __llvm_libc::cpp::StringView("============");
114 t = v.trim('=');
115 ASSERT_EQ(t.size(), size_t(0));
116 ASSERT_TRUE(t.data() == nullptr);
117
118 v = __llvm_libc::cpp::StringView();
119 t = v.trim(' ');
120 ASSERT_EQ(t.size(), size_t(0));
121 ASSERT_TRUE(t.data() == nullptr);
122
123 v = __llvm_libc::cpp::StringView("");
124 t = v.trim(' ');
125 ASSERT_EQ(t.size(), size_t(0));
126 ASSERT_TRUE(t.data() == nullptr);
127 }
128