Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(444)

Side by Side Diff: third_party/WebKit/Source/wtf/text/StringViewTest.cpp

Issue 2025503002: Revert of Expand WTF::StringView's API to be more like StringPiece. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "wtf/text/StringView.h"
6
7 #include "testing/gtest/include/gtest/gtest.h"
8 #include "wtf/text/AtomicString.h"
9 #include "wtf/text/StringImpl.h"
10 #include "wtf/text/WTFString.h"
11
12 namespace WTF {
13
14 const char* kChars = "12345";
15 const LChar* kChars8 = reinterpret_cast<const LChar*>(kChars);
16 const UChar* kChars16 = reinterpret_cast<const UChar*>(u"12345");
17
18 TEST(StringViewTest, ConstructionStringImpl8)
19 {
20 RefPtr<StringImpl> impl8Bit = StringImpl::create(kChars8, 5);
21
22 // StringView(StringImpl*);
23 ASSERT_TRUE(StringView(impl8Bit.get()).is8Bit());
24 EXPECT_FALSE(StringView(impl8Bit.get()).isNull());
25 EXPECT_EQ(impl8Bit->characters8(), StringView(impl8Bit.get()).characters8()) ;
26 EXPECT_EQ(impl8Bit->length(), StringView(impl8Bit.get()).length());
27 EXPECT_STREQ(kChars, StringView(impl8Bit.get()).toString().utf8().data());
28
29 // StringView(StringImpl*, unsigned offset);
30 ASSERT_TRUE(StringView(impl8Bit.get(), 2).is8Bit());
31 EXPECT_FALSE(StringView(impl8Bit.get(), 2).isNull());
32 EXPECT_EQ(impl8Bit->characters8() + 2, StringView(impl8Bit.get(), 2).charact ers8());
33 EXPECT_EQ(3u, StringView(impl8Bit.get(), 2).length());
34 EXPECT_EQ(StringView("345"), StringView(impl8Bit.get(), 2));
35 EXPECT_STREQ("345", StringView(impl8Bit.get(), 2).toString().utf8().data());
36
37 // StringView(StringImpl*, unsigned offset, unsigned length);
38 ASSERT_TRUE(StringView(impl8Bit.get(), 2, 1).is8Bit());
39 EXPECT_FALSE(StringView(impl8Bit.get(), 2, 1).isNull());
40 EXPECT_EQ(impl8Bit->characters8() + 2, StringView(impl8Bit.get(), 2, 1).char acters8());
41 EXPECT_EQ(1u, StringView(impl8Bit.get(), 2, 1).length());
42 EXPECT_EQ(StringView("3"), StringView(impl8Bit.get(), 2, 1));
43 EXPECT_STREQ("3", StringView(impl8Bit.get(), 2, 1).toString().utf8().data()) ;
44 }
45
46 TEST(StringViewTest, ConstructionStringImpl16)
47 {
48 RefPtr<StringImpl> impl16Bit = StringImpl::create(kChars16, 5);
49
50 // StringView(StringImpl*);
51 ASSERT_FALSE(StringView(impl16Bit.get()).is8Bit());
52 EXPECT_FALSE(StringView(impl16Bit.get()).isNull());
53 EXPECT_EQ(impl16Bit->characters16(), StringView(impl16Bit.get()).characters1 6());
54 EXPECT_EQ(impl16Bit->length(), StringView(impl16Bit.get()).length());
55 EXPECT_STREQ(kChars, StringView(impl16Bit.get()).toString().utf8().data());
56
57 // StringView(StringImpl*, unsigned offset);
58 ASSERT_FALSE(StringView(impl16Bit.get(), 2).is8Bit());
59 EXPECT_FALSE(StringView(impl16Bit.get(), 2).isNull());
60 EXPECT_EQ(impl16Bit->characters16() + 2, StringView(impl16Bit.get(), 2).char acters16());
61 EXPECT_EQ(3u, StringView(impl16Bit.get(), 2).length());
62 EXPECT_EQ(StringView("345"), StringView(impl16Bit.get(), 2));
63 EXPECT_STREQ("345", StringView(impl16Bit.get(), 2).toString().utf8().data()) ;
64
65 // StringView(StringImpl*, unsigned offset, unsigned length);
66 ASSERT_FALSE(StringView(impl16Bit.get(), 2, 1).is8Bit());
67 EXPECT_FALSE(StringView(impl16Bit.get(), 2, 1).isNull());
68 EXPECT_EQ(impl16Bit->characters16() + 2, StringView(impl16Bit.get(), 2, 1).c haracters16());
69 EXPECT_EQ(1u, StringView(impl16Bit.get(), 2, 1).length());
70 EXPECT_EQ(StringView("3"), StringView(impl16Bit.get(), 2, 1));
71 EXPECT_STREQ("3", StringView(impl16Bit.get(), 2, 1).toString().utf8().data() );
72 }
73
74 TEST(StringViewTest, ConstructionString8)
75 {
76 String string8Bit = String(StringImpl::create(kChars8, 5));
77
78 // StringView(const String&);
79 ASSERT_TRUE(StringView(string8Bit).is8Bit());
80 EXPECT_FALSE(StringView(string8Bit).isNull());
81 EXPECT_EQ(string8Bit.characters8(), StringView(string8Bit).characters8());
82 EXPECT_EQ(string8Bit.length(), StringView(string8Bit).length());
83 EXPECT_STREQ(kChars, StringView(string8Bit).toString().utf8().data());
84
85 // StringView(const String&, unsigned offset);
86 ASSERT_TRUE(StringView(string8Bit, 2).is8Bit());
87 EXPECT_FALSE(StringView(string8Bit, 2).isNull());
88 EXPECT_EQ(string8Bit.characters8() + 2, StringView(string8Bit, 2).characters 8());
89 EXPECT_EQ(3u, StringView(string8Bit, 2).length());
90 EXPECT_EQ(StringView("345"), StringView(string8Bit, 2));
91 EXPECT_STREQ("345", StringView(string8Bit, 2).toString().utf8().data());
92
93 // StringView(const String&, unsigned offset, unsigned length);
94 ASSERT_TRUE(StringView(string8Bit, 2, 1).is8Bit());
95 EXPECT_FALSE(StringView(string8Bit, 2, 1).isNull());
96 EXPECT_EQ(string8Bit.characters8() + 2, StringView(string8Bit, 2, 1).charact ers8());
97 EXPECT_EQ(1u, StringView(string8Bit, 2, 1).length());
98 EXPECT_EQ(StringView("3"), StringView(string8Bit, 2, 1));
99 EXPECT_STREQ("3", StringView(string8Bit, 2, 1).toString().utf8().data());
100 }
101
102 TEST(StringViewTest, ConstructionString16)
103 {
104 String string16Bit = String(StringImpl::create(kChars16, 5));
105
106 // StringView(const String&);
107 ASSERT_FALSE(StringView(string16Bit).is8Bit());
108 EXPECT_FALSE(StringView(string16Bit).isNull());
109 EXPECT_EQ(string16Bit.characters16(), StringView(string16Bit).characters16() );
110 EXPECT_EQ(string16Bit.length(), StringView(string16Bit).length());
111 EXPECT_STREQ(kChars, StringView(string16Bit).toString().utf8().data());
112
113 // StringView(const String&, unsigned offset);
114 ASSERT_FALSE(StringView(string16Bit, 2).is8Bit());
115 EXPECT_FALSE(StringView(string16Bit, 2).isNull());
116 EXPECT_EQ(string16Bit.characters16() + 2, StringView(string16Bit, 2).charact ers16());
117 EXPECT_EQ(3u, StringView(string16Bit, 2).length());
118 EXPECT_EQ(StringView("345"), StringView(string16Bit, 2));
119 EXPECT_STREQ("345", StringView(string16Bit, 2).toString().utf8().data());
120
121 // StringView(const String&, unsigned offset, unsigned length);
122 ASSERT_FALSE(StringView(string16Bit, 2, 1).is8Bit());
123 EXPECT_FALSE(StringView(string16Bit, 2, 1).isNull());
124 EXPECT_EQ(string16Bit.characters16() + 2, StringView(string16Bit, 2, 1).char acters16());
125 EXPECT_EQ(1u, StringView(string16Bit, 2, 1).length());
126 EXPECT_EQ(StringView("3"), StringView(string16Bit, 2, 1));
127 EXPECT_STREQ("3", StringView(string16Bit, 2, 1).toString().utf8().data());
128 }
129
130 TEST(StringViewTest, ConstructionAtomicString8)
131 {
132 AtomicString atom8Bit = AtomicString(StringImpl::create(kChars8, 5));
133
134 // StringView(const AtomicString&);
135 ASSERT_TRUE(StringView(atom8Bit).is8Bit());
136 EXPECT_FALSE(StringView(atom8Bit).isNull());
137 EXPECT_EQ(atom8Bit.characters8(), StringView(atom8Bit).characters8());
138 EXPECT_EQ(atom8Bit.length(), StringView(atom8Bit).length());
139 EXPECT_STREQ(kChars, StringView(atom8Bit).toString().utf8().data());
140
141 // StringView(const AtomicString&, unsigned offset);
142 ASSERT_TRUE(StringView(atom8Bit, 2).is8Bit());
143 EXPECT_FALSE(StringView(atom8Bit, 2).isNull());
144 EXPECT_EQ(atom8Bit.characters8() + 2, StringView(atom8Bit, 2).characters8()) ;
145 EXPECT_EQ(3u, StringView(atom8Bit, 2).length());
146 EXPECT_EQ(StringView("345"), StringView(atom8Bit, 2));
147 EXPECT_STREQ("345", StringView(atom8Bit, 2).toString().utf8().data());
148
149 // StringView(const AtomicString&, unsigned offset, unsigned length);
150 ASSERT_TRUE(StringView(atom8Bit, 2, 1).is8Bit());
151 EXPECT_FALSE(StringView(atom8Bit, 2, 1).isNull());
152 EXPECT_EQ(atom8Bit.characters8() + 2, StringView(atom8Bit, 2, 1).characters8 ());
153 EXPECT_EQ(1u, StringView(atom8Bit, 2, 1).length());
154 EXPECT_EQ(StringView("3"), StringView(atom8Bit, 2, 1));
155 EXPECT_STREQ("3", StringView(atom8Bit, 2, 1).toString().utf8().data());
156 }
157
158 TEST(StringViewTest, ConstructionAtomicString16)
159 {
160 AtomicString atom16Bit = AtomicString(StringImpl::create(kChars16, 5));
161
162 // StringView(const AtomicString&);
163 ASSERT_FALSE(StringView(atom16Bit).is8Bit());
164 EXPECT_FALSE(StringView(atom16Bit).isNull());
165 EXPECT_EQ(atom16Bit.characters16(), StringView(atom16Bit).characters16());
166 EXPECT_EQ(atom16Bit.length(), StringView(atom16Bit).length());
167 EXPECT_STREQ(kChars, StringView(atom16Bit).toString().utf8().data());
168
169 // StringView(const AtomicString&, unsigned offset);
170 ASSERT_FALSE(StringView(atom16Bit, 2).is8Bit());
171 EXPECT_FALSE(StringView(atom16Bit, 2).isNull());
172 EXPECT_EQ(atom16Bit.characters16() + 2, StringView(atom16Bit, 2).characters1 6());
173 EXPECT_EQ(3u, StringView(atom16Bit, 2).length());
174 EXPECT_EQ(StringView("345"), StringView(atom16Bit, 2));
175 EXPECT_STREQ("345", StringView(atom16Bit, 2).toString().utf8().data());
176
177 // StringView(const AtomicString&, unsigned offset, unsigned length);
178 ASSERT_FALSE(StringView(atom16Bit, 2, 1).is8Bit());
179 EXPECT_FALSE(StringView(atom16Bit, 2, 1).isNull());
180 EXPECT_EQ(atom16Bit.characters16() + 2, StringView(atom16Bit, 2, 1).characte rs16());
181 EXPECT_EQ(1u, StringView(atom16Bit, 2, 1).length());
182 EXPECT_EQ(StringView("3"), StringView(atom16Bit, 2, 1));
183 EXPECT_STREQ("3", StringView(atom16Bit, 2, 1).toString().utf8().data());
184 }
185
186 TEST(StringViewTest, ConstructionStringView8)
187 {
188 StringView view8Bit = StringView(kChars8, 5);
189
190 // StringView(StringView&);
191 ASSERT_TRUE(StringView(view8Bit).is8Bit());
192 EXPECT_FALSE(StringView(view8Bit).isNull());
193 EXPECT_EQ(view8Bit.characters8(), StringView(view8Bit).characters8());
194 EXPECT_EQ(view8Bit.length(), StringView(view8Bit).length());
195 EXPECT_STREQ(kChars, StringView(view8Bit).toString().utf8().data());
196
197 // StringView(const StringView&, unsigned offset);
198 ASSERT_TRUE(StringView(view8Bit, 2).is8Bit());
199 EXPECT_FALSE(StringView(view8Bit, 2).isNull());
200 EXPECT_EQ(view8Bit.characters8() + 2, StringView(view8Bit, 2).characters8()) ;
201 EXPECT_EQ(3u, StringView(view8Bit, 2).length());
202 EXPECT_EQ(StringView("345"), StringView(view8Bit, 2));
203 EXPECT_STREQ("345", StringView(view8Bit, 2).toString().utf8().data());
204
205 // StringView(const StringView&, unsigned offset, unsigned length);
206 ASSERT_TRUE(StringView(view8Bit, 2, 1).is8Bit());
207 EXPECT_FALSE(StringView(view8Bit, 2, 1).isNull());
208 EXPECT_EQ(view8Bit.characters8() + 2, StringView(view8Bit, 2, 1).characters8 ());
209 EXPECT_EQ(1u, StringView(view8Bit, 2, 1).length());
210 EXPECT_EQ(StringView("3"), StringView(view8Bit, 2, 1));
211 EXPECT_STREQ("3", StringView(view8Bit, 2, 1).toString().utf8().data());
212 }
213
214 TEST(StringViewTest, ConstructionStringView16)
215 {
216 StringView view16Bit = StringView(kChars16, 5);
217
218 // StringView(StringView&);
219 ASSERT_FALSE(StringView(view16Bit).is8Bit());
220 EXPECT_FALSE(StringView(view16Bit).isNull());
221 EXPECT_EQ(view16Bit.characters16(), StringView(view16Bit).characters16());
222 EXPECT_EQ(view16Bit.length(), StringView(view16Bit).length());
223 EXPECT_EQ(kChars, StringView(view16Bit).toString());
224
225 // StringView(const StringView&, unsigned offset);
226 ASSERT_FALSE(StringView(view16Bit, 2).is8Bit());
227 EXPECT_FALSE(StringView(view16Bit, 2).isNull());
228 EXPECT_EQ(view16Bit.characters16() + 2, StringView(view16Bit, 2).characters1 6());
229 EXPECT_EQ(3u, StringView(view16Bit, 2).length());
230 EXPECT_EQ(StringView("345"), StringView(view16Bit, 2));
231 EXPECT_STREQ("345", StringView(view16Bit, 2).toString().utf8().data());
232
233 // StringView(const StringView&, unsigned offset, unsigned length);
234 ASSERT_FALSE(StringView(view16Bit, 2, 1).is8Bit());
235 EXPECT_FALSE(StringView(view16Bit, 2, 1).isNull());
236 EXPECT_EQ(view16Bit.characters16() + 2, StringView(view16Bit, 2, 1).characte rs16());
237 EXPECT_EQ(1u, StringView(view16Bit, 2, 1).length());
238 EXPECT_EQ(StringView("3"), StringView(view16Bit, 2, 1));
239 EXPECT_STREQ("3", StringView(view16Bit, 2, 1).toString().utf8().data());
240 }
241
242 TEST(StringViewTest, ConstructionLiteral8)
243 {
244 // StringView(const LChar* chars);
245 ASSERT_TRUE(StringView(kChars8).is8Bit());
246 EXPECT_FALSE(StringView(kChars8).isNull());
247 EXPECT_EQ(kChars8, StringView(kChars8).characters8());
248 EXPECT_EQ(5u, StringView(kChars8).length());
249 EXPECT_STREQ(kChars, StringView(kChars8).toString().utf8().data());
250
251 // StringView(const char* chars);
252 ASSERT_TRUE(StringView(kChars).is8Bit());
253 EXPECT_FALSE(StringView(kChars).isNull());
254 EXPECT_EQ(kChars8, StringView(kChars).characters8());
255 EXPECT_EQ(5u, StringView(kChars).length());
256 EXPECT_STREQ(kChars, StringView(kChars).toString().utf8().data());
257
258 // StringView(const LChar* chars, unsigned length);
259 ASSERT_TRUE(StringView(kChars8, 2).is8Bit());
260 EXPECT_FALSE(StringView(kChars8, 2).isNull());
261 EXPECT_EQ(2u, StringView(kChars8, 2).length());
262 EXPECT_EQ(StringView("12"), StringView(kChars8, 2));
263 EXPECT_STREQ("12", StringView(kChars8, 2).toString().utf8().data());
264
265 // StringView(const char* chars, unsigned length);
266 ASSERT_TRUE(StringView(kChars, 2).is8Bit());
267 EXPECT_FALSE(StringView(kChars, 2).isNull());
268 EXPECT_EQ(2u, StringView(kChars, 2).length());
269 EXPECT_EQ(StringView("12"), StringView(kChars, 2));
270 EXPECT_STREQ("12", StringView(kChars, 2).toString().utf8().data());
271 }
272
273 TEST(StringViewTest, ConstructionLiteral16)
274 {
275 // StringView(const UChar* chars);
276 ASSERT_FALSE(StringView(kChars16).is8Bit());
277 EXPECT_FALSE(StringView(kChars16).isNull());
278 EXPECT_EQ(kChars16, StringView(kChars16).characters16());
279 EXPECT_EQ(5u, StringView(kChars16).length());
280 EXPECT_EQ(String(kChars16), StringView(kChars16).toString().utf8().data());
281
282 // StringView(const UChar* chars, unsigned length);
283 ASSERT_FALSE(StringView(kChars16, 2).is8Bit());
284 EXPECT_FALSE(StringView(kChars16, 2).isNull());
285 EXPECT_EQ(kChars16, StringView(kChars16, 2).characters16());
286 EXPECT_EQ(StringView("12"), StringView(kChars16, 2));
287 EXPECT_EQ(StringView(reinterpret_cast<const UChar*>(u"12")), StringView(kCha rs16, 2));
288 EXPECT_EQ(2u, StringView(kChars16, 2).length());
289 EXPECT_EQ(String("12"), StringView(kChars16, 2).toString());
290 }
291
292 TEST(StringViewTest, IsEmpty)
293 {
294 EXPECT_FALSE(StringView(kChars).isEmpty());
295 EXPECT_TRUE(StringView(kChars, 0).isEmpty());
296 EXPECT_FALSE(StringView(String(kChars)).isEmpty());
297 EXPECT_TRUE(StringView(String(kChars), 5).isEmpty());
298 EXPECT_TRUE(StringView(String(kChars), 4, 0).isEmpty());
299 EXPECT_TRUE(StringView().isEmpty());
300 EXPECT_TRUE(StringView("").isEmpty());
301 EXPECT_TRUE(StringView(reinterpret_cast<const UChar*>(u"")).isEmpty());
302 EXPECT_FALSE(StringView(kChars16).isEmpty());
303 }
304
305 TEST(StringViewTest, ToString)
306 {
307 // Empty string optimization.
308 EXPECT_EQ(emptyString().impl(), StringView("").toString().impl());
309 // NOTE: All the construction tests also check toString().
310 }
311
312 TEST(StringViewTest, NullString)
313 {
314 EXPECT_TRUE(StringView().isNull());
315 EXPECT_TRUE(StringView(String()).isNull());
316 EXPECT_TRUE(StringView(AtomicString()).isNull());
317 EXPECT_TRUE(StringView(static_cast<const char*>(nullptr)).isNull());
318 StringView view(kChars);
319 EXPECT_FALSE(view.isNull());
320 view.clear();
321 EXPECT_TRUE(view.isNull());
322 EXPECT_EQ(String(), StringView());
323 EXPECT_TRUE(StringView().toString().isNull());
324 }
325
326 } // namespace WTF
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/wtf/text/StringView.cpp ('k') | third_party/WebKit/Source/wtf/text/WTFString.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698