• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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