1 /*
2 * Copyright (c) 2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include <gtest/gtest.h>
17
18 #include <base/containers/array_view.h>
19 #include <base/containers/fixed_string.h>
20 #include <base/containers/string_view.h>
21
22 using namespace testing::ext;
23
24 class StringViewTest : public testing::Test {
25 public:
SetUpTestSuite()26 static void SetUpTestSuite() {}
TearDownTestSuite()27 static void TearDownTestSuite() {}
SetUp()28 void SetUp() override {}
TearDown()29 void TearDown() override {}
30 };
31
32 HWTEST_F(StringViewTest, emptyStringView, TestSize.Level1)
33 {
34 {
35 const BASE_NS::string_view testString;
36
37 EXPECT_TRUE(testString.empty());
38 EXPECT_EQ(0, testString.size());
39
40 EXPECT_EQ(testString.begin(), testString.end());
41 EXPECT_EQ(testString.cbegin(), testString.cend());
42 EXPECT_EQ(testString.rbegin(), testString.rend());
43 EXPECT_EQ(testString.crbegin(), testString.crend());
44 }
45 {
46 constexpr const char* testStringStr = "\0";
47 constexpr const BASE_NS::string_view testString(testStringStr);
48
49 EXPECT_TRUE(testString.empty());
50 EXPECT_EQ(strlen(testStringStr), testString.size());
51
52 const char* str = testStringStr;
53 for (const auto c : testString) {
54 EXPECT_EQ(*str++, c);
55 }
56
57 for (auto begin = testString.rbegin(), end = testString.rend(); begin != end; ++begin) {
58 EXPECT_EQ(*--str, *begin);
59 }
60 }
61 {
62 constexpr const char testStringStr[] = { '\0' };
63 const BASE_NS::string_view testString(testStringStr);
64
65 EXPECT_TRUE(testString.empty());
66 EXPECT_EQ(strlen(testStringStr), testString.size());
67
68 const char* str = testStringStr;
69 for (const auto c : testString) {
70 EXPECT_EQ(*str++, c);
71 }
72
73 for (auto begin = testString.rbegin(), end = testString.rend(); begin != end; ++begin) {
74 EXPECT_EQ(*--str, *begin);
75 }
76 }
77 }
78
79 HWTEST_F(StringViewTest, stringView001, TestSize.Level1)
80 {
81 {
82 constexpr const char* testStringStr = "ABCDEF";
83 constexpr const BASE_NS::string_view testString(testStringStr);
84
85 EXPECT_FALSE(testString.empty());
86 EXPECT_EQ(strlen(testStringStr), testString.size());
87 EXPECT_EQ('B', testString[1]);
88 EXPECT_EQ('B', testString.at(1));
89 EXPECT_EQ(testString.max_size(), SIZE_MAX - 1);
90
91 EXPECT_EQ(testString.front(), testString[0]);
92 EXPECT_EQ(testString.back(), testString[testString.size() - 1]);
93
94 EXPECT_NE(testString.begin(), testString.end());
95 EXPECT_NE(testString.cbegin(), testString.cend());
96 EXPECT_NE(testString.rbegin(), testString.rend());
97 EXPECT_NE(testString.crbegin(), testString.crend());
98
99 const char* str = testStringStr;
100 for (const auto c : testString) {
101 EXPECT_EQ(*str++, c);
102 }
103
104 for (auto begin = testString.rbegin(), end = testString.rend(); begin != end; ++begin) {
105 EXPECT_EQ(*--str, *begin);
106 }
107 }
108 }
109
110 HWTEST_F(StringViewTest, stringView002, TestSize.Level1)
111 {
112 {
113 constexpr const char testStringStr[] = { 'A', 'B', 'C', 'D', 'E', 'F' };
114 const BASE_NS::string_view testString(testStringStr, BASE_NS::countof(testStringStr));
115
116 EXPECT_FALSE(testString.empty());
117 EXPECT_EQ(sizeof(testStringStr), testString.size());
118 EXPECT_EQ('B', testString[1]);
119 EXPECT_EQ('B', testString.at(1));
120 EXPECT_EQ(testString.front(), testString[0]);
121 EXPECT_EQ(testString.back(), testString[testString.size() - 1]);
122
123 EXPECT_NE(testString.begin(), testString.end());
124 EXPECT_NE(testString.cbegin(), testString.cend());
125 EXPECT_NE(testString.rbegin(), testString.rend());
126 EXPECT_NE(testString.crbegin(), testString.crend());
127
128 const char* str = testStringStr;
129 for (const auto c : testString) {
130 EXPECT_EQ(*str++, c);
131 }
132
133 for (auto begin = testString.rbegin(), end = testString.rend(); begin != end; ++begin) {
134 EXPECT_EQ(*--str, *begin);
135 }
136 }
137 }
138
139 HWTEST_F(StringViewTest, swap, TestSize.Level1)
140 {
141 constexpr const char* testStringStr = "ABCDEF";
142 constexpr const BASE_NS::string_view testString(testStringStr);
143 constexpr const char* testStringStr2 = "FEDCBA";
144 constexpr const BASE_NS::string_view testString2(testStringStr2);
145 BASE_NS::string_view t(testStringStr);
146 BASE_NS::string_view t2(testStringStr2);
147 EXPECT_EQ(testString, t);
148 EXPECT_EQ(testString2, t2);
149 t.swap(t2);
150 EXPECT_EQ(testString, t2);
151 EXPECT_EQ(testString2, t);
152 }
153
154 HWTEST_F(StringViewTest, subStringView001, TestSize.Level1)
155 {
156 // remove_prefix
157 {
158 const char* testStringStr = "ABCDEF";
159 const auto prefixLen = 3u;
__anonf7bea4d30102(const char* str, size_t len) 160 const BASE_NS::string_view testString = [](const char* str, size_t len) {
161 BASE_NS::string_view a = str;
162 a.remove_prefix(len);
163 return a;
164 }(testStringStr, prefixLen);
165
166 EXPECT_EQ(strlen(testStringStr) - prefixLen, testString.size());
167
168 const char* str = testStringStr + prefixLen;
169 for (const auto c : testString) {
170 EXPECT_EQ(*str++, c);
171 }
172 }
173 // remove_prefix huge
174 {
175 constexpr const char* testStringStr = "ABCDEF";
176 constexpr const auto prefixLen = 8u;
__anonf7bea4d30202(const char* str, size_t len) 177 constexpr const BASE_NS::string_view testString = [](const char* str, size_t len) {
178 BASE_NS::string_view a = str;
179 a.remove_prefix(len);
180 return a;
181 }(testStringStr, prefixLen);
182
183 EXPECT_EQ(0, testString.size());
184 }
185 }
186
187 HWTEST_F(StringViewTest, subStringView002, TestSize.Level1)
188 {
189 // remove_suffix
190 {
191 constexpr const char* testStringStr = "ABCDEF";
192 constexpr const auto suffixLen = 3u;
__anonf7bea4d30302(const char* str, size_t len) 193 constexpr const BASE_NS::string_view testString = [](const char* str, size_t len) {
194 BASE_NS::string_view a = str;
195 a.remove_suffix(len);
196 return a;
197 }(testStringStr, suffixLen);
198
199 EXPECT_EQ(strlen(testStringStr) - suffixLen, testString.size());
200
201 const char* str = testStringStr;
202 for (const auto c : testString) {
203 EXPECT_EQ(*str++, c);
204 }
205 }
206 // remove_suffix huge
207 {
208 constexpr const char* testStringStr = "ABCDEF";
209 constexpr const auto suffixLen = 8u;
__anonf7bea4d30402(const char* str, size_t len) 210 constexpr const BASE_NS::string_view testString = [](const char* str, size_t len) {
211 BASE_NS::string_view a = str;
212 a.remove_suffix(len);
213 return a;
214 }(testStringStr, suffixLen);
215
216 EXPECT_EQ(0, testString.size());
217 }
218 }
219
220 HWTEST_F(StringViewTest, subStringView003, TestSize.Level1)
221 {
222 // substr
223 {
224 constexpr const char* testStringStr = "ABCDEF";
225 constexpr const BASE_NS::string_view testString(testStringStr);
226
227 constexpr const BASE_NS::string_view copy = testString.substr();
228 constexpr const BASE_NS::string_view prefix = testString.substr(0, 3);
229 constexpr const BASE_NS::string_view suffix = testString.substr(3);
230
231 EXPECT_EQ(0, testString.compare(copy));
232 EXPECT_TRUE(testString == copy);
233 EXPECT_FALSE(testString != copy);
234 EXPECT_FALSE(testString < copy);
235 EXPECT_TRUE(testString <= copy);
236 EXPECT_FALSE(testString > copy);
237 EXPECT_TRUE(testString >= copy);
238
239 EXPECT_GT(testString.compare(prefix), 0);
240 EXPECT_FALSE(testString == prefix);
241 EXPECT_TRUE(testString != prefix);
242 EXPECT_FALSE(testString < prefix);
243 EXPECT_FALSE(testString <= prefix);
244 EXPECT_TRUE(testString > prefix);
245 EXPECT_TRUE(testString >= prefix);
246
247 EXPECT_LT(testString.compare(suffix), 0);
248 EXPECT_FALSE(testString == suffix);
249 EXPECT_TRUE(testString != suffix);
250 EXPECT_TRUE(testString < suffix);
251 EXPECT_TRUE(testString <= suffix);
252 EXPECT_FALSE(testString > suffix);
253 EXPECT_FALSE(testString >= suffix);
254
255 EXPECT_GT(suffix.compare(testString), 0);
256 EXPECT_GT(suffix.compare(prefix), 0);
257
258 EXPECT_LT(prefix.compare(testString), 0);
259 EXPECT_LT(prefix.compare(suffix), 0);
260 }
261 }
262
263 HWTEST_F(StringViewTest, subStringView004, TestSize.Level1)
264 {
265 {
266 constexpr const char* testStringStr = "ABCDEF";
267 constexpr const BASE_NS::string_view testString(testStringStr);
268 constexpr const BASE_NS::string_view prefix = testString.substr(0, 3);
269 constexpr const BASE_NS::string_view suffix = testString.substr(3);
270
271 EXPECT_EQ(prefix.compare(0, 3, testString), prefix.compare(testString));
272 EXPECT_EQ(testString.compare(1, 3, prefix), -prefix.compare("BCD"));
273 EXPECT_EQ(testString.compare(1, 3, "ABC"), -prefix.compare("BCD"));
274 EXPECT_GT(suffix.compare("ABC"), 0);
275 EXPECT_EQ(prefix.compare(0, 3, testString, 0, 3), prefix.compare("ABC"));
276 EXPECT_EQ(prefix.compare(0, 3, testString, 1, 3), prefix.compare("BCD"));
277 EXPECT_EQ(prefix.compare(0, 3, "ABCDEF", 6), prefix.compare("ABCDEF"));
278 EXPECT_EQ(prefix.compare(0, 3, "ABCDEF", 1), prefix.compare("A"));
279
280 EXPECT_FALSE(prefix == suffix);
281 EXPECT_TRUE(prefix != suffix);
282 EXPECT_TRUE(prefix < suffix);
283 EXPECT_TRUE(prefix <= suffix);
284 EXPECT_FALSE(prefix > suffix);
285 EXPECT_FALSE(prefix >= suffix);
286
287 {
288 char array[6] = {};
289 auto const size = testString.copy(array, 1);
290 EXPECT_TRUE(testString.substr(0, 1) == BASE_NS::string_view(array, size));
291 }
292 {
293 char array[6] = {};
294 auto const size = testString.copy(array, 7);
295 EXPECT_TRUE(testString == BASE_NS::string_view(array, size));
296 }
297 {
298 char array[6] = {};
299 auto const size = testString.copy(array, 2, 1);
300 EXPECT_TRUE(testString.substr(1, 2) == BASE_NS::string_view(array, size));
301 }
302 {
303 char array[6] = {};
304 auto const size = testString.copy(array, 7, 1);
305 EXPECT_TRUE(testString.substr(1) == BASE_NS::string_view(array, size));
306 }
307 {
308 char array[6] = {};
309 auto const size = testString.copy(array, 1, 7);
310 EXPECT_TRUE(size == 0);
311 EXPECT_TRUE(testString.substr(7) == BASE_NS::string_view({}));
312 }
313 }
314 }
315
316 HWTEST_F(StringViewTest, subStringView005, TestSize.Level1)
317 {
318 // fixed string copy test. Substr not implemented in fixed strings. Used string view instead.
319 {
320 constexpr const char* testStringStr = "ABCDEF";
321 constexpr const BASE_NS::fixed_string<6> testString(testStringStr);
322 constexpr const BASE_NS::string_view testStringSW(testStringStr);
323 {
324 char array[6] = {};
325 auto const size = testString.copy(array, 1);
326 EXPECT_TRUE(testStringSW.substr(0, 1) == BASE_NS::string_view(array, size));
327 }
328 {
329 char array[6] = {};
330 auto const size = testString.copy(array, 7);
331 EXPECT_TRUE(testStringSW == BASE_NS::string_view(array, size));
332 }
333 {
334 char array[6] = {};
335 auto const size = testString.copy(array, 2, 1);
336 EXPECT_TRUE(testStringSW.substr(1, 2) == BASE_NS::string_view(array, size));
337 }
338 {
339 char array[6] = {};
340 auto const size = testString.copy(array, 7, 1);
341 EXPECT_TRUE(testStringSW.substr(1) == BASE_NS::string_view(array, size));
342 }
343 {
344 char array[6] = {};
345 auto const size = testString.copy(array, 1, 7);
346 EXPECT_TRUE(size == 0);
347 EXPECT_TRUE(testStringSW.substr(7) == BASE_NS::string_view({}));
348 }
349 }
350 }
351
352 HWTEST_F(StringViewTest, FixedString_ToString, TestSize.Level1)
353 {
354 {
355 constexpr uint64_t num = 1234567890123456789;
356 constexpr auto str = BASE_NS::to_string(num);
357 EXPECT_EQ(str, "1234567890123456789");
358 }
359 {
360 constexpr int64_t num = -1234567890123456789;
361 constexpr auto str = BASE_NS::to_string(num);
362 EXPECT_EQ(str, "-1234567890123456789");
363 }
364 {
365 constexpr auto someStr { "Test_" };
366
367 constexpr auto str0 = BASE_NS::basic_fixed_string("Test_");
368 constexpr auto str1 = BASE_NS::fixed_string<BASE_NS::constexpr_strlen(someStr)>(someStr);
369 EXPECT_EQ(str0, str1);
370
371 constexpr uint64_t num = 1234567890123456789;
372 constexpr auto numStr = BASE_NS::to_string(num);
373 constexpr auto result = str0 + numStr;
374 EXPECT_EQ(result, "Test_1234567890123456789");
375 }
376 {
377 constexpr auto someStr { "" };
378 constexpr auto str0 = BASE_NS::basic_fixed_string("");
379 constexpr auto str1 = BASE_NS::fixed_string<BASE_NS::constexpr_strlen(someStr)>(someStr);
380 EXPECT_TRUE(str0.empty());
381 EXPECT_EQ(str0, str1);
382 constexpr char* emptyChar = nullptr;
383 EXPECT_EQ(BASE_NS::constexpr_strlen(emptyChar), BASE_NS::constexpr_strlen(someStr));
384
385 constexpr uint64_t num = 1234567890123456789;
386 constexpr auto numStr = BASE_NS::to_string(num);
387 constexpr auto result = str0 + numStr;
388 EXPECT_EQ(result, "1234567890123456789");
389 }
390 }
391
392 HWTEST_F(StringViewTest, FixedString_ToHex, TestSize.Level1)
393 {
394 {
395 constexpr uint64_t num = 0;
396 constexpr auto str = BASE_NS::to_hex(num);
397 EXPECT_EQ(str, "0");
398 }
399 {
400 constexpr uint64_t num = 1234567890123456789;
401 constexpr auto str = BASE_NS::to_hex(num);
402 EXPECT_EQ(str, "112210F47DE98115");
403 }
404 {
405 constexpr uint64_t num = static_cast<uint64_t>(-1234567890123456789);
406 constexpr auto str = BASE_NS::to_hex(num);
407 EXPECT_EQ(str, "EEDDEF0B82167EEB");
408 }
409 {
410 constexpr int64_t num = static_cast<uint64_t>(-1234567890123456789);
411 constexpr auto str = BASE_NS::to_hex(num);
412 EXPECT_EQ(str, "-112210F47DE98115");
413 }
414 }
415
416 HWTEST_F(StringViewTest, FixedString_Hash, TestSize.Level1)
417 {
418 {
419 constexpr uint64_t num = 0;
420 constexpr auto str0 = BASE_NS::to_string(num);
421 auto h1 = BASE_NS::hash<21u>(str0);
422 auto h2 = BASE_NS::FNV1aHash("0", strlen("0"));
423 EXPECT_EQ(h1, h2);
424 }
425 {
426 constexpr uint64_t num = 1234567890123456789;
427 constexpr auto str0 = BASE_NS::to_string(num);
428 auto h1 = BASE_NS::hash<21u>(str0);
429 auto h2 = BASE_NS::FNV1aHash("1234567890123456789", strlen("1234567890123456789"));
430 EXPECT_EQ(h1, h2);
431 }
432 {
433 constexpr uint64_t num = static_cast<uint64_t>(-1234567890123456789);
434 constexpr auto str0 = BASE_NS::to_string(num);
435 auto h1 = BASE_NS::hash<21u>(str0);
436 auto h2 = BASE_NS::FNV1aHash("17212176183586094827", strlen("17212176183586094827"));
437 EXPECT_EQ(h1, h2);
438 }
439 {
440 constexpr int64_t num = static_cast<uint64_t>(-1234567890123456789);
441 constexpr auto str0 = BASE_NS::to_string(num);
442 auto h1 = BASE_NS::hash<21u>(str0);
443 auto h2 = BASE_NS::FNV1aHash("-1234567890123456789", strlen("-1234567890123456789"));
444 EXPECT_EQ(h1, h2);
445 }
446 }
447
448 HWTEST_F(StringViewTest, FixedString_Replace, TestSize.Level1)
449 {
450 {
451 auto str0 = BASE_NS::basic_fixed_string("ABCDEFGHIJKLMNOPQRSTU");
452 str0.replace(3, 6, "def");
453 EXPECT_EQ(str0, "ABCdefGHIJKLMNOPQRSTU");
454 }
455 {
456 auto str0 = BASE_NS::basic_fixed_string<char, sizeof("ABCDEFGHIJKLMNOPQRSTU") + 3u>("ABCDEFGHIJKLMNOPQRSTU");
457 str0.replace(3, 4, "def");
458 EXPECT_EQ(str0, "ABCdefEFGHIJKLMNOPQRSTU");
459 }
460 {
461 auto str0 = BASE_NS::basic_fixed_string("ABCDEFGHIJKLMNOPQRSTU");
462 str0.replace(3, 4, "def");
463 EXPECT_EQ(str0, "ABCdefEFGHIJKLMNOPQRS");
464 }
465 {
466 auto str0 = BASE_NS::basic_fixed_string("ABCDEFGHIJKLMNOPQRSTU");
467 str0.replace(3, 8, "def");
468 EXPECT_EQ(str0, "ABCdefIJKLMNOPQRSTU");
469 }
470 }
471
472 HWTEST_F(StringViewTest, FixedString_Construct001, TestSize.Level1)
473 {
474 {
475 constexpr auto str0 = BASE_NS::fixed_string<6>("ABC");
476 constexpr auto str1 = str0;
477 EXPECT_EQ(str1, "ABC");
478 }
479
480 {
481 constexpr auto str0 = BASE_NS::fixed_string<6>("ABC");
482 constexpr auto str1 = BASE_NS::fixed_string<6>("DEF");
483 BASE_NS::fixed_string<6> str2 = str0 + str1;
484 EXPECT_EQ(str2, "ABCDEF");
485 }
486 {
487 constexpr auto str0 = BASE_NS::basic_fixed_string("ABC");
488 constexpr auto str1 = BASE_NS::basic_fixed_string("DEF");
489 BASE_NS::fixed_string<6> str2 = str0 + str1;
490 EXPECT_EQ(str2, "ABCDEF");
491 }
492 {
493 constexpr BASE_NS::basic_fixed_string<char, 7> str0("ABC");
494 char str1[4] = "DEF";
495 BASE_NS::basic_fixed_string<char, 7> str2 = str0 + str1;
496 EXPECT_EQ(str2, "ABCDEF");
497 }
498 {
499 char str0[4] = "ABC";
500 constexpr auto str1 = BASE_NS::basic_fixed_string<char, 7>("DEF");
501 BASE_NS::basic_fixed_string<char, 7> str2 = str0 + str1;
502 EXPECT_EQ(str2, "ABCDEF");
503 }
504 }
505
506 HWTEST_F(StringViewTest, FixedString_Construct002, TestSize.Level1)
507 {
508 {
509 constexpr auto str0 = BASE_NS::basic_fixed_string<char, 7>("ABC");
510 BASE_NS::basic_fixed_string<char, 7> str2 = 'D' + str0;
511 EXPECT_EQ(str2, "DABC");
512 }
513 {
514 auto str0 = BASE_NS::basic_fixed_string<char, 7>("ABC");
515 const char* str1 = "DEF";
516 str0.append(str1);
517 EXPECT_EQ(str0, "ABCDEF");
518 }
519 {
__anonf7bea4d30502() 520 auto concat = []() {
521 auto str0 = BASE_NS::fixed_string<6>("ABC");
522 str0 += "DEF";
523 return str0;
524 };
525 static constexpr const auto str0 = concat();
526 EXPECT_EQ(str0, "ABCDEF");
527 }
528 {
529 auto str0 = BASE_NS::basic_fixed_string<char, 7>('A');
530 str0 += 'B';
531 str0.append('C');
532 EXPECT_EQ(str0, "ABC");
533 }
534 {
__anonf7bea4d30602() 535 auto concat = []() {
536 auto str0 = BASE_NS::basic_fixed_string<char, 7>('A');
537 str0 += 'B';
538 str0.append('C');
539 return str0;
540 };
541 static constexpr const auto str0 = concat();
542 EXPECT_EQ(str0, "ABC");
543 }
544 }
545
546 template<typename T, typename U>
FixedStringCompare001()547 void FixedStringCompare001()
548 {
549 {
550 auto str0 = T("");
551 auto str1 = U("");
552 EXPECT_TRUE(str0 == str1);
553 EXPECT_FALSE(str0 != str1);
554 EXPECT_FALSE(str1 != str0);
555 EXPECT_FALSE(str0 < str1);
556 EXPECT_FALSE(str1 < str0);
557 }
558 {
559 auto str0 = T("1234567890123456789");
560 auto str1 = U("1234567890123456789");
561 EXPECT_TRUE(str0 == str1);
562 EXPECT_FALSE(str0 != str1);
563 EXPECT_FALSE(str1 != str0);
564 EXPECT_FALSE(str0 < str1);
565 EXPECT_FALSE(str1 < str0);
566 }
567 {
568 auto str0 = T("ABCDEFGHIJKLMNOPQRSTU");
569 auto str1 = U("ABCDEFGHIJKLMNOPQRSTU");
570 EXPECT_TRUE(str0 == str1);
571 EXPECT_FALSE(str0 != str1);
572 EXPECT_FALSE(str1 != str0);
573 EXPECT_FALSE(str0 < str1);
574 EXPECT_FALSE(str1 < str0);
575 }
576 {
577 auto str0 = T("");
578 auto str1 = U("123");
579 EXPECT_FALSE(str0 == str1);
580 EXPECT_TRUE(str0 != str1);
581 EXPECT_TRUE(str1 != str0);
582 EXPECT_TRUE(str0 < str1);
583 EXPECT_FALSE(str1 < str0);
584 }
585 }
586
587 template<typename T, typename U>
FixedStringCompare002()588 void FixedStringCompare002()
589 {
590 {
591 auto str0 = T("1234567890123456789");
592 auto str1 = U("123");
593 EXPECT_FALSE(str0 == str1);
594 EXPECT_TRUE(str0 != str1);
595 EXPECT_TRUE(str1 != str0);
596 EXPECT_FALSE(str0 < str1);
597 EXPECT_TRUE(str1 < str0);
598 }
599 {
600 auto str0 = T("1234567890123456789");
601 auto str1 = U("1234567890123456780");
602 EXPECT_FALSE(str0 == str1);
603 EXPECT_TRUE(str0 != str1);
604 EXPECT_TRUE(str1 != str0);
605 EXPECT_FALSE(str0 < str1);
606 EXPECT_TRUE(str1 < str0);
607 }
608 {
609 auto str0 = T("ABCDEFGHIJKLMNOPQRSTU");
610 auto str1 = U("ABCDEFGHIJKLMNOPQRSTA");
611 EXPECT_FALSE(str0 == str1);
612 EXPECT_TRUE(str0 != str1);
613 EXPECT_TRUE(str1 != str0);
614 EXPECT_FALSE(str0 < str1);
615 EXPECT_TRUE(str1 < str0);
616 }
617 {
618 auto str0 = T("ABCDEFGHIJKLMNOPQRSTU");
619 auto str1 = U("ABCDEF");
620 EXPECT_FALSE(str0 == str1);
621 EXPECT_TRUE(str0 != str1);
622 EXPECT_TRUE(str1 != str0);
623 EXPECT_FALSE(str0 < str1);
624 EXPECT_TRUE(str1 < str0);
625 }
626 }
627
628 HWTEST_F(StringViewTest, FixedString_Compare, TestSize.Level1)
629 {
630 constexpr const char* testStringStr = "ABCDEF";
631 constexpr const BASE_NS::string_view testString(testStringStr);
632 constexpr const char* testStringStr2 = "FEDCBA";
633 constexpr const BASE_NS::string_view testString2(testStringStr2);
634 constexpr const char* testStringStr3 = "FED";
635 constexpr const BASE_NS::string_view testString3(testStringStr3);
636
637 EXPECT_TRUE(testString == testString);
638 EXPECT_TRUE(testString == testStringStr);
639 EXPECT_TRUE(testStringStr == testString);
640 EXPECT_FALSE(testString == testString2);
641 EXPECT_FALSE(testString == testStringStr2);
642 EXPECT_FALSE(testStringStr == testString2);
643 EXPECT_FALSE(testString2 == testString3);
644 EXPECT_FALSE(testString2 == testStringStr3);
645 EXPECT_FALSE(testStringStr2 == testString3);
646
647 EXPECT_FALSE(testString != testString);
648 EXPECT_FALSE(testString != testStringStr);
649 EXPECT_FALSE(testStringStr != testString);
650 EXPECT_TRUE(testString != testString2);
651 EXPECT_TRUE(testString != testStringStr2);
652 EXPECT_TRUE(testStringStr != testString2);
653 EXPECT_TRUE(testString2 != testString3);
654 EXPECT_TRUE(testString2 != testStringStr3);
655 EXPECT_TRUE(testStringStr2 != testString3);
656
657 FixedStringCompare001<BASE_NS::basic_fixed_string<char, 30>, BASE_NS::basic_fixed_string<char, 30>>();
658 FixedStringCompare001<BASE_NS::basic_fixed_string<char, 30>, BASE_NS::basic_string_view<char>>();
659 FixedStringCompare002<BASE_NS::basic_fixed_string<char, 30>, BASE_NS::basic_fixed_string<char, 30>>();
660 FixedStringCompare002<BASE_NS::basic_fixed_string<char, 30>, BASE_NS::basic_string_view<char>>();
661 }
662
663 template<typename T>
TestFindChar()664 void TestFindChar()
665 {
666 constexpr const char* testStringStr = "ABCDEF";
667 constexpr const T testString(testStringStr);
668 constexpr auto notFound = T::npos;
669 {
670 constexpr const char toFindStr = 'A';
671 constexpr const auto pos = 0U;
672 static_assert(testString.find(toFindStr, pos) == 0U);
673 EXPECT_EQ(testString.find(toFindStr, pos), 0U);
674
675 constexpr const auto pos2 = 2U;
676 static_assert(testString.find(toFindStr, pos2) == notFound);
677 EXPECT_EQ(testString.find(toFindStr, pos2), notFound);
678
679 constexpr const auto pos3 = 100U;
680 static_assert(testString.find(toFindStr, pos3) == notFound);
681 EXPECT_EQ(testString.find(toFindStr, pos3), notFound);
682 }
683 }
684
685 template<typename T>
TestFindString()686 void TestFindString()
687 {
688 constexpr const char* testStringStr = "ABCDEF";
689 constexpr const T testString(testStringStr);
690
691 {
692 constexpr const char* toFindStr = "ABC";
693 constexpr const BASE_NS::string_view toFind(toFindStr);
694 constexpr const auto pos = 0U;
695 static_assert(testString.find(toFind, pos) == 0U);
696 EXPECT_EQ(testString.find(toFind, pos), 0U);
697 }
698 }
699
700 template<typename T>
TestFindCharEnd()701 void TestFindCharEnd()
702 {
703 constexpr const char* testStringStr = "ABCDEF";
704 constexpr const T testString(testStringStr);
705
706 {
707 constexpr const char* toFindStr = "F";
708 constexpr const BASE_NS::string_view toFind(toFindStr);
709 constexpr const auto pos = 0U;
710 static_assert(testString.find(toFind, pos) == 5U);
711 EXPECT_EQ(testString.find(toFind, pos), 5U);
712 }
713 }
714
715 template<typename T>
TestFindSubString()716 void TestFindSubString()
717 {
718 {
719 constexpr const char* testStringStr2 = "BAAAAB";
720 constexpr const T testString2(testStringStr2);
721 constexpr auto notFound = T::npos;
722 constexpr const char* toFindStr = "AA";
723 constexpr const BASE_NS::string_view toFind(toFindStr);
724 constexpr const auto pos = 0U;
725
726 static_assert(testString2.find(toFind, pos) == 1U);
727 EXPECT_EQ(testString2.find(toFind, pos), 1U);
728
729 constexpr const auto pos2 = 8U;
730 static_assert(testString2.rfind(toFind, pos2) == 3U);
731 EXPECT_EQ(testString2.rfind(toFind, pos2), 3U);
732
733 static_assert(testString2.rfind('A', pos2) == 4U);
734 EXPECT_EQ(testString2.rfind('A', pos2), 4U);
735
736 static_assert(testString2.rfind('A', pos) == notFound);
737 EXPECT_EQ(testString2.rfind('A', pos), notFound);
738 }
739 }
740
741 template<typename T>
TestFindNotFound()742 void TestFindNotFound()
743 {
744 constexpr const char* testStringStr = "ABCDEF";
745 constexpr const T testString(testStringStr);
746 constexpr auto notFound = T::npos;
747 {
748 constexpr const char* toFindStr = "ZZ";
749 constexpr const BASE_NS::string_view toFind(toFindStr);
750 constexpr const auto pos = 0U;
751 static_assert(testString.find(toFind, pos) == notFound);
752 EXPECT_EQ(testString.find(toFind, pos), notFound);
753 }
754 }
755
756 template<typename T>
TestFindPartialMatch()757 void TestFindPartialMatch()
758 {
759 {
760 constexpr const char* testStringStr2 = "AAAAAA";
761 constexpr const T testString2(testStringStr2);
762 constexpr auto notFound = T::npos;
763 constexpr const char* toFindStr = "AAAB";
764 constexpr const BASE_NS::string_view toFind(toFindStr);
765 constexpr const auto pos = 0U;
766
767 static_assert(testString2.find(toFind, pos) == notFound);
768 EXPECT_EQ(testString2.find(toFind, pos), notFound);
769 }
770 }
771
772 template<typename T>
TestFindSubStringNotFound()773 void TestFindSubStringNotFound()
774 {
775 {
776 constexpr const char* testStringStr2 = "AAAAAA";
777 constexpr const T testString2(testStringStr2);
778 constexpr auto notFound = T::npos;
779 constexpr const char* toFindStr = "AB";
780 constexpr const BASE_NS::string_view toFind(toFindStr);
781 constexpr const auto pos = 0U;
782
783 static_assert(testString2.find(toFind, pos) == notFound);
784 EXPECT_EQ(testString2.find(toFind, pos), notFound);
785 }
786 }
787
788 template<typename T>
TestFindStringNotFound()789 void TestFindStringNotFound()
790 {
791 constexpr const char* testStringStr = "ABCDEF";
792 constexpr const T testString(testStringStr);
793 constexpr auto notFound = T::npos;
794 constexpr const char* toFindStr = "ABCDEFG";
795 constexpr const BASE_NS::string_view toFind(toFindStr);
796 constexpr const auto pos = 0U;
797
798 static_assert(testString.find(toFind, pos) == notFound);
799 EXPECT_EQ(testString.find(toFind, pos), notFound);
800
801 static_assert(testString.rfind(toFind, pos) == notFound);
802 EXPECT_EQ(testString.rfind(toFind, pos), notFound);
803 }
804
805 template<typename T>
TestFindSubStringNotPresent()806 void TestFindSubStringNotPresent()
807 {
808 constexpr const char* testStringStr = "ABCDEF";
809 constexpr const T testString(testStringStr);
810 constexpr auto notFound = T::npos;
811 {
812 constexpr const char* toFindStr = "EFG";
813 constexpr const BASE_NS::string_view toFind(toFindStr);
814 constexpr const auto pos = 0U;
815
816 static_assert(testString.find(toFind, pos) == notFound);
817 EXPECT_EQ(testString.find(toFind, pos), notFound);
818 }
819 }
820
821 template<typename T>
TestFindEmptyString()822 void TestFindEmptyString()
823 {
824 constexpr const char* testStringStr = "ABCDEF";
825 constexpr const T testString(testStringStr);
826 {
827 constexpr const char* toFindStr = "";
828 constexpr const BASE_NS::string_view toFind(toFindStr);
829 constexpr const auto pos = 8U;
830
831 static_assert(testString.rfind(toFind, pos) == 6U);
832 EXPECT_EQ(testString.rfind(toFind, pos), 6U);
833 }
834 }
835
836 template<typename T>
TestFindFirstOf()837 void TestFindFirstOf()
838 {
839 constexpr const char* testStringStr = "ABCDEF";
840 constexpr const T testString(testStringStr);
841 constexpr auto notFound = T::npos;
842 {
843 constexpr const char* toFindStr = "CD";
844 constexpr const BASE_NS::string_view toFind(toFindStr);
845 constexpr const auto pos = 0U;
846
847 EXPECT_EQ(testString.rfind(toFind, pos), notFound);
848
849 static_assert(testString.find_first_of('B', pos) == 1U);
850 EXPECT_EQ(testString.find_first_of('B', pos), 1U);
851
852 constexpr const auto pos2 = 8U;
853 static_assert(testString.find_first_of('B', pos2) == notFound);
854 EXPECT_EQ(testString.find_first_of('B', pos2), notFound);
855
856 static_assert(testString.find_first_of('G', pos) == notFound);
857 EXPECT_EQ(testString.find_first_of('G', pos), notFound);
858 }
859 }
860
861 template<typename T>
TestSingleStringNotFound()862 void TestSingleStringNotFound()
863 {
864 {
865 constexpr const char* testStringSingleStr = "ABC";
866 constexpr const T testStringSingle(testStringSingleStr);
867 constexpr auto notFound = T::npos;
868 constexpr const char* toFindStr = "CD";
869 constexpr const BASE_NS::string_view toFind(toFindStr);
870 constexpr const auto pos = 0u;
871
872 static_assert(testStringSingle.find(toFind, pos) == notFound);
873 EXPECT_EQ(testStringSingle.find(toFind, pos), notFound);
874 }
875 }
876
877 template<typename T>
TestEmptyStringOperations()878 void TestEmptyStringOperations()
879 {
880 {
881 constexpr const char* testStringSingleStr = "";
882 constexpr const T testStringSingle(testStringSingleStr);
883 constexpr auto notFound = T::npos;
884 constexpr const char* toFindStr = "CD";
885 constexpr const BASE_NS::string_view toFind(toFindStr);
886 constexpr const auto pos = 0u;
887
888 static_assert(testStringSingle.rfind(toFind, pos) == notFound);
889 EXPECT_EQ(testStringSingle.rfind(toFind, pos), notFound);
890 static_assert(testStringSingle.find_first_of(toFind, pos) == notFound);
891 EXPECT_EQ(testStringSingle.find_first_of(toFind, pos), notFound);
892 static_assert(testStringSingle.find_last_of(toFind, pos) == notFound);
893 EXPECT_EQ(testStringSingle.find_last_of(toFind, pos), notFound);
894 static_assert(testStringSingle.rfind('A', pos) == notFound);
895 EXPECT_EQ(testStringSingle.rfind('A', pos), notFound);
896 static_assert(testStringSingle.find_first_of('A', pos) == notFound);
897 EXPECT_EQ(testStringSingle.find_first_of('A', pos), notFound);
898 static_assert(testStringSingle.find_last_of('A', pos) == notFound);
899 EXPECT_EQ(testStringSingle.find_last_of('A', pos), notFound);
900 }
901 }
902
903 template<typename T>
FindTest()904 void FindTest()
905 {
906 TestFindChar<T>();
907 TestFindString<T>();
908 TestFindCharEnd<T>();
909 TestFindSubString<T>();
910 TestFindNotFound<T>();
911 TestFindPartialMatch<T>();
912 TestFindSubStringNotFound<T>();
913 TestFindStringNotFound<T>();
914 TestFindSubStringNotPresent<T>();
915 TestFindEmptyString<T>();
916 TestFindFirstOf<T>();
917 TestSingleStringNotFound<T>();
918 TestEmptyStringOperations<T>();
919 }
920
921 HWTEST_F(StringViewTest, FixedString_Find, TestSize.Level1)
922 {
923 FindTest<BASE_NS::string_view>();
924 FindTest<BASE_NS::fixed_string<20>>();
925 }
926
927 template<typename T>
TestFindFirstOfAndLastOf001()928 void TestFindFirstOfAndLastOf001()
929 {
930 constexpr const char* testStringStr = "ABCDEF";
931 constexpr const T testString(testStringStr);
932 constexpr auto notFound = T::npos;
933 {
934 constexpr const char* toFindStr = "ABC";
935 constexpr const BASE_NS::string_view toFind(toFindStr);
936 static_assert(testString.find_first_of(toFind, 0U) == 0U);
937 EXPECT_EQ(testString.find_first_of(toFind, 0U), 0U);
938 static_assert(testString.find_last_of(toFind, 0U) == 0U);
939 EXPECT_EQ(testString.find_last_of(toFind, 0U), 0U);
940 }
941 {
942 constexpr const char* toFindStr = "CDE";
943 constexpr const BASE_NS::string_view toFind(toFindStr);
944 static_assert(testString.find_first_of(toFind, 1U) == 2U);
945 EXPECT_EQ(testString.find_first_of(toFind, 1U), 2U);
946 static_assert(testString.find_last_of(toFind, 1U) == notFound);
947 EXPECT_EQ(testString.find_last_of(toFind, 1U), notFound);
948 }
949 {
950 constexpr const char* toFindStr = "ABC";
951 constexpr const BASE_NS::string_view toFind(toFindStr);
952 static_assert(testString.find_first_of(toFind, 8U) == notFound);
953 EXPECT_EQ(testString.find_first_of(toFind, 8U), notFound);
954 static_assert(testString.find_last_of(toFind, 8U) == 2U);
955 EXPECT_EQ(testString.find_last_of(toFind, 8U), 2U);
956 }
957 }
958
959 template<typename T>
TestFindFirstOfAndLastOf002()960 void TestFindFirstOfAndLastOf002()
961 {
962 constexpr const char* testStringStr = "ABCDEF";
963 constexpr const T testString(testStringStr);
964 constexpr auto notFound = T::npos;
965 {
966 constexpr const char* toFindStr = "ZZZZZZZA";
967 constexpr const BASE_NS::string_view toFind(toFindStr);
968 static_assert(testString.find_first_of(toFind, 8U) == notFound);
969 EXPECT_EQ(testString.find_first_of(toFind, 8U), notFound);
970 static_assert(testString.find_last_of(toFind, 8U) == 0U);
971 EXPECT_EQ(testString.find_last_of(toFind, 8U), 0U);
972 }
973 {
974 constexpr const char* toFindStr = "";
975 constexpr const BASE_NS::string_view toFind(toFindStr);
976 static_assert(testString.find_first_of(toFind, 0U) == notFound);
977 EXPECT_EQ(testString.find_first_of(toFind, 0U), notFound);
978 static_assert(testString.find_last_of(toFind, 0U) == notFound);
979 EXPECT_EQ(testString.find_last_of(toFind, 0U), notFound);
980 }
981 {
982 constexpr const char* toFindStr = "ZZZ";
983 constexpr const BASE_NS::string_view toFind(toFindStr);
984 static_assert(testString.find_first_of(toFind, 0U) == notFound);
985 EXPECT_EQ(testString.find_first_of(toFind, 0U), notFound);
986 static_assert(testString.find_last_of(toFind, 0U) == notFound);
987 EXPECT_EQ(testString.find_last_of(toFind, 0U), notFound);
988 }
989 {
990 constexpr const char toFindStr = 'A';
991 static_assert(testString.find_first_of(toFindStr, 0U) == 0U);
992 EXPECT_EQ(testString.find_first_of(toFindStr, 0U), 0U);
993 static_assert(testString.find_last_of(toFindStr, 0U) == 0U);
994 EXPECT_EQ(testString.find_last_of(toFindStr, 0U), 0U);
995 }
996 {
997 constexpr const char toFindStr = 'Z';
998 static_assert(testString.find_first_of(toFindStr, 0U) == notFound);
999 EXPECT_EQ(testString.find_first_of(toFindStr, 0U), notFound);
1000 static_assert(testString.find_last_of(toFindStr, 0U) == notFound);
1001 EXPECT_EQ(testString.find_last_of(toFindStr, 0U), notFound);
1002 }
1003 }
1004
1005 HWTEST_F(StringViewTest, FixedString_FindFirstOfAndLastOf, TestSize.Level1)
1006 {
1007 TestFindFirstOfAndLastOf001<BASE_NS::string_view>();
1008 TestFindFirstOfAndLastOf001<BASE_NS::fixed_string<20>>();
1009
1010 TestFindFirstOfAndLastOf002<BASE_NS::string_view>();
1011 TestFindFirstOfAndLastOf002<BASE_NS::fixed_string<20>>();
1012 }
1013
1014 template<typename T>
StartWithTest001()1015 void StartWithTest001()
1016 {
1017 constexpr const char* testStringStr = "ABCDEF";
1018 constexpr const T testString(testStringStr);
1019 {
1020 constexpr const char* startsWithStr = "A";
1021 constexpr const BASE_NS::string_view startsWith(startsWithStr);
1022 constexpr const bool res1 = testString.starts_with(startsWith);
1023 EXPECT_TRUE(res1);
1024 constexpr const bool res2 = testString.starts_with(startsWithStr);
1025 EXPECT_TRUE(res2);
1026 constexpr const bool res3 = testString.starts_with(*startsWithStr);
1027 EXPECT_TRUE(res3);
1028 }
1029 {
1030 constexpr const char* startsWithStr = "ABC";
1031 constexpr const BASE_NS::string_view startsWith(startsWithStr);
1032 constexpr const bool res1 = testString.starts_with(startsWith);
1033 EXPECT_TRUE(res1);
1034 constexpr const bool res2 = testString.starts_with(startsWithStr);
1035 EXPECT_TRUE(res2);
1036 constexpr const bool res3 = testString.starts_with(*startsWithStr);
1037 EXPECT_TRUE(res3);
1038 }
1039 {
1040 constexpr const char* startsWithStr = "ABCDEFG";
1041 constexpr const BASE_NS::string_view startsWith(startsWithStr);
1042 constexpr const bool res1 = testString.starts_with(startsWith);
1043 EXPECT_FALSE(res1);
1044 constexpr const bool res2 = testString.starts_with(startsWithStr);
1045 EXPECT_FALSE(res2);
1046 }
1047 }
1048
1049 template<typename T>
StartWithTest002()1050 void StartWithTest002()
1051 {
1052 constexpr const char* testStringStr = "ABCDEF";
1053 constexpr const T testString(testStringStr);
1054 {
1055 constexpr const char* startsWithStr = "AbC";
1056 constexpr const BASE_NS::string_view startsWith(startsWithStr);
1057 constexpr const bool res1 = testString.starts_with(startsWith);
1058 EXPECT_FALSE(res1);
1059 constexpr const bool res2 = testString.starts_with(startsWithStr);
1060 EXPECT_FALSE(res2);
1061 }
1062 {
1063 constexpr const char* startsWithStr = "C";
1064 constexpr const BASE_NS::string_view startsWith(startsWithStr);
1065 constexpr const bool res1 = testString.starts_with(startsWith);
1066 EXPECT_FALSE(res1);
1067 constexpr const bool res2 = testString.starts_with(startsWithStr);
1068 EXPECT_FALSE(res2);
1069 constexpr const bool res3 = testString.starts_with(*startsWithStr);
1070 EXPECT_FALSE(res3);
1071 }
1072 {
1073 constexpr const bool res1 = testString.starts_with(nullptr);
1074 EXPECT_TRUE(res1);
1075 constexpr const bool res2 = testString.starts_with("");
1076 EXPECT_TRUE(res2);
1077 constexpr const bool res3 = testString.starts_with(BASE_NS::string_view {});
1078 EXPECT_TRUE(res3);
1079 }
1080 }
1081
1082 HWTEST_F(StringViewTest, startsWith, TestSize.Level1)
1083 {
1084 StartWithTest001<BASE_NS::string_view>();
1085 StartWithTest002<BASE_NS::string_view>();
1086 }
1087
1088 template<typename T>
EndsWithTest001()1089 void EndsWithTest001()
1090 {
1091 constexpr const char* testStringStr = "ABCDEF";
1092 constexpr const T testString(testStringStr);
1093 {
1094 constexpr const char* endsWithStr = "F";
1095 constexpr const BASE_NS::string_view endsWith(endsWithStr);
1096 constexpr const bool res1 = testString.ends_with(endsWith);
1097 EXPECT_TRUE(res1);
1098 constexpr const bool res2 = testString.ends_with(endsWithStr);
1099 EXPECT_TRUE(res2);
1100 constexpr const bool res3 = testString.ends_with(*endsWithStr);
1101 EXPECT_TRUE(res3);
1102 }
1103 {
1104 constexpr const char* endsWithStr = "DEF";
1105 constexpr const BASE_NS::string_view endsWith(endsWithStr);
1106 constexpr const bool res1 = testString.ends_with(endsWith);
1107 EXPECT_TRUE(res1);
1108 constexpr const bool res2 = testString.ends_with(endsWithStr);
1109 EXPECT_TRUE(res2);
1110 }
1111 {
1112 constexpr const char* endsWithStr = "ABCDEFG";
1113 constexpr const BASE_NS::string_view endsWith(endsWithStr);
1114 constexpr const bool res1 = testString.ends_with(endsWith);
1115 EXPECT_FALSE(res1);
1116 constexpr const bool res2 = testString.ends_with(endsWithStr);
1117 EXPECT_FALSE(res2);
1118 }
1119 }
1120
1121 template<typename T>
EndsWithTest002()1122 void EndsWithTest002()
1123 {
1124 constexpr const char* testStringStr = "ABCDEF";
1125 constexpr const T testString(testStringStr);
1126 {
1127 constexpr const char* endsWithStr = "DeF";
1128 constexpr const BASE_NS::string_view endsWith(endsWithStr);
1129 constexpr const bool res1 = testString.ends_with(endsWith);
1130 EXPECT_FALSE(res1);
1131 constexpr const bool res2 = testString.ends_with(endsWithStr);
1132 EXPECT_FALSE(res2);
1133 }
1134 {
1135 constexpr const char* endsWithStr = "E";
1136 constexpr const BASE_NS::string_view endsWith(endsWithStr);
1137 constexpr const bool res1 = testString.ends_with(endsWith);
1138 EXPECT_FALSE(res1);
1139 constexpr const bool res2 = testString.ends_with(endsWithStr);
1140 EXPECT_FALSE(res2);
1141 constexpr const bool res3 = testString.ends_with(*endsWithStr);
1142 EXPECT_FALSE(res3);
1143 }
1144 {
1145 constexpr const bool res1 = testString.ends_with(nullptr);
1146 EXPECT_TRUE(res1);
1147 constexpr const bool res2 = testString.ends_with("");
1148 EXPECT_TRUE(res2);
1149 constexpr const bool res3 = testString.ends_with(BASE_NS::string_view {});
1150 EXPECT_TRUE(res3);
1151 }
1152 }
1153
1154 HWTEST_F(StringViewTest, endsWith, TestSize.Level1)
1155 {
1156 EndsWithTest001<BASE_NS::string_view>();
1157 EndsWithTest002<BASE_NS::string_view>();
1158 }
1159
1160 HWTEST_F(StringViewTest, UserDefinedLiteral_QualifiedNamespace, TestSize.Level1)
1161 {
1162 using namespace BASE_NS::literals::string_literals;
1163 auto myString = "hello"_sv;
1164 static_assert(BASE_NS::is_same_v<BASE_NS::string_view, decltype(myString)>);
1165 ASSERT_EQ(BASE_NS::string_view { "hello" }, myString);
1166 }
1167
1168 HWTEST_F(StringViewTest, UserDefinedLiteral, TestSize.Level1)
1169 {
1170 using namespace BASE_NS::literals;
1171 auto myString = "hello"_sv;
1172 static_assert(BASE_NS::is_same_v<BASE_NS::string_view, decltype(myString)>);
1173 ASSERT_EQ(BASE_NS::string_view { "hello" }, myString);
1174 }
1175
1176 HWTEST_F(StringViewTest, UserDefinedLiteral_zeroBytes, TestSize.Level1)
1177 {
1178 using namespace BASE_NS::literals;
1179 auto myString = "hel\0lo"_sv;
1180 static_assert(BASE_NS::is_same_v<BASE_NS::string_view, decltype(myString)>);
1181 ASSERT_EQ(6, myString.size());
1182 ASSERT_EQ(BASE_NS::string_view("hel\0lo", 6), myString);
1183 ASSERT_STREQ("hel", myString.data());
1184 }
1185