1f6603c60Sopenharmony_ci/*
2f6603c60Sopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd.
3f6603c60Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4f6603c60Sopenharmony_ci * you may not use this file except in compliance with the License.
5f6603c60Sopenharmony_ci * You may obtain a copy of the License at
6f6603c60Sopenharmony_ci *
7f6603c60Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8f6603c60Sopenharmony_ci *
9f6603c60Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10f6603c60Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11f6603c60Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12f6603c60Sopenharmony_ci * See the License for the specific language governing permissions and
13f6603c60Sopenharmony_ci * limitations under the License.
14f6603c60Sopenharmony_ci */
15f6603c60Sopenharmony_ci
16f6603c60Sopenharmony_ci#include "IoTest.h"
17f6603c60Sopenharmony_ci#include <string.h>
18f6603c60Sopenharmony_ci
19f6603c60Sopenharmony_ciusing namespace testing::ext;
20f6603c60Sopenharmony_ci
21f6603c60Sopenharmony_ci/**
22f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STRING_0100
23f6603c60Sopenharmony_ci * @tc.name   strverscmp basic function test
24f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
25f6603c60Sopenharmony_ci */
26f6603c60Sopenharmony_ciHWTEST_F(IoTest, testStrverscmp, Function | MediumTest | Level1)
27f6603c60Sopenharmony_ci{
28f6603c60Sopenharmony_ci    int ret = strverscmp("hello world !", "HELLO WORLD");
29f6603c60Sopenharmony_ci    EXPECT_GT(ret, 0);
30f6603c60Sopenharmony_ci
31f6603c60Sopenharmony_ci    ret = strverscmp("HELLO WORLD", "hello world !");
32f6603c60Sopenharmony_ci    EXPECT_LT(ret, 0);
33f6603c60Sopenharmony_ci
34f6603c60Sopenharmony_ci    ret = strverscmp("hello world !", "hello world !");
35f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 0);
36f6603c60Sopenharmony_ci}
37f6603c60Sopenharmony_ci
38f6603c60Sopenharmony_ci/**
39f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STRING_0200
40f6603c60Sopenharmony_ci * @tc.name   strcoll basic function test
41f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
42f6603c60Sopenharmony_ci */
43f6603c60Sopenharmony_ciHWTEST_F(IoTest, testStrcoll, Function | MediumTest | Level1)
44f6603c60Sopenharmony_ci{
45f6603c60Sopenharmony_ci    int ret = strcoll("AbC", "ABC");
46f6603c60Sopenharmony_ci    EXPECT_GT(ret, 0);
47f6603c60Sopenharmony_ci
48f6603c60Sopenharmony_ci    ret = strcoll("ABC", "abc");
49f6603c60Sopenharmony_ci    EXPECT_LT(ret, 0);
50f6603c60Sopenharmony_ci
51f6603c60Sopenharmony_ci    ret = strcoll("ABC", "ABC");
52f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 0);
53f6603c60Sopenharmony_ci}
54f6603c60Sopenharmony_ci
55f6603c60Sopenharmony_ci/**
56f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STRING_0300
57f6603c60Sopenharmony_ci * @tc.name   strcmp basic function test
58f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
59f6603c60Sopenharmony_ci */
60f6603c60Sopenharmony_ciHWTEST_F(IoTest, testStrcmp, Function | MediumTest | Level1)
61f6603c60Sopenharmony_ci{
62f6603c60Sopenharmony_ci    int ret = strcmp("abcdef", "ABCDEF");
63f6603c60Sopenharmony_ci    EXPECT_GT(ret, 0);
64f6603c60Sopenharmony_ci
65f6603c60Sopenharmony_ci    ret = strcmp("123456", "654321");
66f6603c60Sopenharmony_ci    EXPECT_LT(ret, 0);
67f6603c60Sopenharmony_ci
68f6603c60Sopenharmony_ci    EXPECT_EQ(strcmp("~!@#$%^&*()_+", "~!@#$%^&*()_+"), 0);
69f6603c60Sopenharmony_ci}
70f6603c60Sopenharmony_ci
71f6603c60Sopenharmony_ci/**
72f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STRING_0400
73f6603c60Sopenharmony_ci * @tc.name   strncmp basic function test
74f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
75f6603c60Sopenharmony_ci */
76f6603c60Sopenharmony_ciHWTEST_F(IoTest, testStrncmp, Function | MediumTest | Level1)
77f6603c60Sopenharmony_ci{
78f6603c60Sopenharmony_ci    const char dest[] = "abcdef";
79f6603c60Sopenharmony_ci    const char src[] = "ABCDEF";
80f6603c60Sopenharmony_ci    int ret = strncmp(dest, src, 1);
81f6603c60Sopenharmony_ci    EXPECT_GT(ret, 0);
82f6603c60Sopenharmony_ci
83f6603c60Sopenharmony_ci    ret = strncmp("123456", "654321", 6);
84f6603c60Sopenharmony_ci    EXPECT_LT(ret, 0);
85f6603c60Sopenharmony_ci
86f6603c60Sopenharmony_ci    ret = strncmp("~!@#$%^&*()_+", "~!@#$%^&*()_+", 8);
87f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 0);
88f6603c60Sopenharmony_ci}
89f6603c60Sopenharmony_ci
90f6603c60Sopenharmony_ci/**
91f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STRING_0500
92f6603c60Sopenharmony_ci * @tc.name   strxfrm basic function test
93f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
94f6603c60Sopenharmony_ci */
95f6603c60Sopenharmony_ciHWTEST_F(IoTest, testStrxfrm, Function | MediumTest | Level1)
96f6603c60Sopenharmony_ci{
97f6603c60Sopenharmony_ci    char dest[50] = {0};
98f6603c60Sopenharmony_ci    size_t ret = strxfrm(dest, "hello world !", sizeof(dest));
99f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 13U);
100f6603c60Sopenharmony_ci    EXPECT_STREQ(dest, "hello world !");
101f6603c60Sopenharmony_ci
102f6603c60Sopenharmony_ci    char destT[15] = {0};
103f6603c60Sopenharmony_ci    ret = strxfrm(destT, "this is string", sizeof(destT));
104f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 14UL);
105f6603c60Sopenharmony_ci    EXPECT_STREQ(destT, "this is string");
106f6603c60Sopenharmony_ci}
107f6603c60Sopenharmony_ci
108f6603c60Sopenharmony_ci/**
109f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STRING_0600
110f6603c60Sopenharmony_ci * @tc.name   strsignal basic function test
111f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
112f6603c60Sopenharmony_ci */
113f6603c60Sopenharmony_ciHWTEST_F(IoTest, testStrsignal, Function | MediumTest | Level1)
114f6603c60Sopenharmony_ci{
115f6603c60Sopenharmony_ci    char *ret = strsignal(14);
116f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, "Alarm clock");
117f6603c60Sopenharmony_ci
118f6603c60Sopenharmony_ci    ret = strsignal(-1);
119f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, "Unknown signal");
120f6603c60Sopenharmony_ci}
121f6603c60Sopenharmony_ci
122f6603c60Sopenharmony_ci/**
123f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STRING_0700
124f6603c60Sopenharmony_ci * @tc.name   stpcpy basic function test
125f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
126f6603c60Sopenharmony_ci */
127f6603c60Sopenharmony_ciHWTEST_F(IoTest, testStpcpy, Function | MediumTest | Level1)
128f6603c60Sopenharmony_ci{
129f6603c60Sopenharmony_ci    const char *src = "hello world !";
130f6603c60Sopenharmony_ci    char dest[50] = {0};
131f6603c60Sopenharmony_ci    char *ret = stpcpy(dest, src);
132f6603c60Sopenharmony_ci    ASSERT_NE(ret, nullptr);
133f6603c60Sopenharmony_ci    EXPECT_STREQ(dest, src);
134f6603c60Sopenharmony_ci
135f6603c60Sopenharmony_ci    const char *srcT = "~!@#$%%^&*()_+";
136f6603c60Sopenharmony_ci    char destT[50] = {0};
137f6603c60Sopenharmony_ci    ret = stpcpy(destT, srcT);
138f6603c60Sopenharmony_ci    ASSERT_NE(ret, nullptr);
139f6603c60Sopenharmony_ci    EXPECT_STREQ(destT, "~!@#$%%^&*()_+");
140f6603c60Sopenharmony_ci}
141f6603c60Sopenharmony_ci
142f6603c60Sopenharmony_ci/**
143f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STRING_0800
144f6603c60Sopenharmony_ci * @tc.name   stpncpy basic function test
145f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
146f6603c60Sopenharmony_ci */
147f6603c60Sopenharmony_ciHWTEST_F(IoTest, testStpncpy, Function | MediumTest | Level1)
148f6603c60Sopenharmony_ci{
149f6603c60Sopenharmony_ci    char src[] = "hello world !";
150f6603c60Sopenharmony_ci    char dest[50] = {0};
151f6603c60Sopenharmony_ci    char *ret = stpncpy(dest, src, 5);
152f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, "");
153f6603c60Sopenharmony_ci    EXPECT_STREQ(dest, "hello");
154f6603c60Sopenharmony_ci
155f6603c60Sopenharmony_ci    char srcT[] = "~!@#$%%^&*()_+";
156f6603c60Sopenharmony_ci    char destT[50] = {0};
157f6603c60Sopenharmony_ci    ret = stpncpy(destT, srcT, 15);
158f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, "");
159f6603c60Sopenharmony_ci    EXPECT_STREQ(destT, "~!@#$%%^&*()_+");
160f6603c60Sopenharmony_ci}
161f6603c60Sopenharmony_ci
162f6603c60Sopenharmony_ci/**
163f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STRING_0900
164f6603c60Sopenharmony_ci * @tc.name   strlcpy basic function test
165f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
166f6603c60Sopenharmony_ci */
167f6603c60Sopenharmony_ciHWTEST_F(IoTest, testStrlcpy, Function | MediumTest | Level1)
168f6603c60Sopenharmony_ci{
169f6603c60Sopenharmony_ci    char dest[50] = {0};
170f6603c60Sopenharmony_ci    const char *src = "123456789abc";
171f6603c60Sopenharmony_ci    size_t ret = strlcpy(dest, src, sizeof(dest));
172f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 12U);
173f6603c60Sopenharmony_ci    EXPECT_STREQ(dest, src);
174f6603c60Sopenharmony_ci
175f6603c60Sopenharmony_ci    char destT[20] = {0};
176f6603c60Sopenharmony_ci    const char *srcT = " ~!@#$%^&*()_+";
177f6603c60Sopenharmony_ci    ret = strlcpy(destT, srcT, 15);
178f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 14U);
179f6603c60Sopenharmony_ci    EXPECT_STREQ(destT, srcT);
180f6603c60Sopenharmony_ci}
181f6603c60Sopenharmony_ci
182f6603c60Sopenharmony_ci/**
183f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STRING_1000
184f6603c60Sopenharmony_ci * @tc.name   strcpy basic function test
185f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
186f6603c60Sopenharmony_ci */
187f6603c60Sopenharmony_ciHWTEST_F(IoTest, testStrcpy, Function | MediumTest | Level1)
188f6603c60Sopenharmony_ci{
189f6603c60Sopenharmony_ci    char src[] = "hello world !";
190f6603c60Sopenharmony_ci    char dest[20] = {0};
191f6603c60Sopenharmony_ci    char *ret = strcpy(dest, src);
192f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, dest);
193f6603c60Sopenharmony_ci
194f6603c60Sopenharmony_ci    char srcT[] = "This is String1";
195f6603c60Sopenharmony_ci    char destT[20] = {0};
196f6603c60Sopenharmony_ci    ret = strcpy(destT, srcT);
197f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, destT);
198f6603c60Sopenharmony_ci}
199f6603c60Sopenharmony_ci
200f6603c60Sopenharmony_ci/**
201f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STRING_1100
202f6603c60Sopenharmony_ci * @tc.name   strncpy basic function test
203f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
204f6603c60Sopenharmony_ci */
205f6603c60Sopenharmony_ciHWTEST_F(IoTest, testStrncpy, Function | MediumTest | Level1)
206f6603c60Sopenharmony_ci{
207f6603c60Sopenharmony_ci    char src[] = "hello world !";
208f6603c60Sopenharmony_ci    char dest[] = {0};
209f6603c60Sopenharmony_ci    char *ret = strncpy(dest, src, 6);
210f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, dest);
211f6603c60Sopenharmony_ci
212f6603c60Sopenharmony_ci    char destT[] = "~!@#$%^&*()_+";
213f6603c60Sopenharmony_ci    ret = strncpy(destT, "hello world", 0);
214f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, destT);
215f6603c60Sopenharmony_ci}
216f6603c60Sopenharmony_ci/**
217f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STRING_1200
218f6603c60Sopenharmony_ci * @tc.name   strcasestr basic function test
219f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
220f6603c60Sopenharmony_ci */
221f6603c60Sopenharmony_ciHWTEST_F(IoTest, testStrcasestr, Function | MediumTest | Level1)
222f6603c60Sopenharmony_ci{
223f6603c60Sopenharmony_ci    char *ret = strcasestr("hello world !", " ");
224f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, " world !");
225f6603c60Sopenharmony_ci
226f6603c60Sopenharmony_ci    ret = strcasestr("This is String1", "Str");
227f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, "String1");
228f6603c60Sopenharmony_ci
229f6603c60Sopenharmony_ci    ret = strcasestr("hello world !", "ABC");
230f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, nullptr);
231f6603c60Sopenharmony_ci}
232f6603c60Sopenharmony_ci
233f6603c60Sopenharmony_ci/**
234f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STRING_1300
235f6603c60Sopenharmony_ci * @tc.name   strlcat basic function test
236f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
237f6603c60Sopenharmony_ci */
238f6603c60Sopenharmony_ciHWTEST_F(IoTest, testStrlcat, Function | MediumTest | Level1)
239f6603c60Sopenharmony_ci{
240f6603c60Sopenharmony_ci    char src[] = "ABCDE";
241f6603c60Sopenharmony_ci    char dest[] = "abcdefgh";
242f6603c60Sopenharmony_ci    size_t ret = strlcat(dest, src, 8);
243f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 13U);
244f6603c60Sopenharmony_ci    EXPECT_STREQ(dest, "abcdefgh");
245f6603c60Sopenharmony_ci
246f6603c60Sopenharmony_ci    char srcT[] = "|/*";
247f6603c60Sopenharmony_ci    char destT[20] = "~!@#$%^&*()_+";
248f6603c60Sopenharmony_ci    ret = strlcat(destT, srcT, 11);
249f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 14U);
250f6603c60Sopenharmony_ci    EXPECT_STREQ(destT, "~!@#$%^&*()_+");
251f6603c60Sopenharmony_ci}
252f6603c60Sopenharmony_ci
253f6603c60Sopenharmony_ci/**
254f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STRING_1400
255f6603c60Sopenharmony_ci * @tc.name   strcat basic function test
256f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
257f6603c60Sopenharmony_ci */
258f6603c60Sopenharmony_ciHWTEST_F(IoTest, testStrcat, Function | MediumTest | Level1)
259f6603c60Sopenharmony_ci{
260f6603c60Sopenharmony_ci    char dest[50] = {0};
261f6603c60Sopenharmony_ci    char *ret = strcat(dest, "hello world !");
262f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, dest);
263f6603c60Sopenharmony_ci
264f6603c60Sopenharmony_ci    char destT[50] = "hello world ! || ";
265f6603c60Sopenharmony_ci    ret = strcat(destT, "This is String1");
266f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, destT);
267f6603c60Sopenharmony_ci}
268f6603c60Sopenharmony_ci
269f6603c60Sopenharmony_ci/**
270f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STRING_1500
271f6603c60Sopenharmony_ci * @tc.name   strncat basic function test
272f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
273f6603c60Sopenharmony_ci */
274f6603c60Sopenharmony_ciHWTEST_F(IoTest, testStrncat, Function | MediumTest | Level1)
275f6603c60Sopenharmony_ci{
276f6603c60Sopenharmony_ci    char dest[50] = "hello world || ";
277f6603c60Sopenharmony_ci    char *ret = strncat(dest, "This is String1", 7);
278f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, "hello world || This is");
279f6603c60Sopenharmony_ci
280f6603c60Sopenharmony_ci    char destT[20] = "|/*";
281f6603c60Sopenharmony_ci    ret = strncat(destT, "~!@#$%^&*()_+", 13);
282f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, destT);
283f6603c60Sopenharmony_ci}
284f6603c60Sopenharmony_ci
285f6603c60Sopenharmony_ci/**
286f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STRING_1600
287f6603c60Sopenharmony_ci * @tc.name   strchr basic function test
288f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
289f6603c60Sopenharmony_ci */
290f6603c60Sopenharmony_ciHWTEST_F(IoTest, testStrchr, Function | MediumTest | Level1)
291f6603c60Sopenharmony_ci{
292f6603c60Sopenharmony_ci    char src[] = "hello !! world";
293f6603c60Sopenharmony_ci    char *ret = strchr(src, '!');
294f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, "!! world");
295f6603c60Sopenharmony_ci
296f6603c60Sopenharmony_ci    ret = strchr(src, '?');
297f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, nullptr);
298f6603c60Sopenharmony_ci}
299f6603c60Sopenharmony_ci
300f6603c60Sopenharmony_ci/**
301f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STRING_1700
302f6603c60Sopenharmony_ci * @tc.name   strrchr basic function test
303f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
304f6603c60Sopenharmony_ci */
305f6603c60Sopenharmony_ciHWTEST_F(IoTest, testStrrchr, Function | MediumTest | Level1)
306f6603c60Sopenharmony_ci{
307f6603c60Sopenharmony_ci    char src[] = "hello world & HEELO & WORLD";
308f6603c60Sopenharmony_ci    char *ret = strrchr(src, '&');
309f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, "& WORLD");
310f6603c60Sopenharmony_ci
311f6603c60Sopenharmony_ci    ret = strrchr(src, '?');
312f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, nullptr);
313f6603c60Sopenharmony_ci}
314f6603c60Sopenharmony_ci
315f6603c60Sopenharmony_ci/**
316f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STRING_1800
317f6603c60Sopenharmony_ci * @tc.name   strnlen basic function test
318f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
319f6603c60Sopenharmony_ci */
320f6603c60Sopenharmony_ciHWTEST_F(IoTest, testStrnlen, Function | MediumTest | Level1)
321f6603c60Sopenharmony_ci{
322f6603c60Sopenharmony_ci    char src[] = "hello world !";
323f6603c60Sopenharmony_ci    unsigned int ltSrcSize = strlen(src) - 2;
324f6603c60Sopenharmony_ci    unsigned int gtSrcSize = strlen(src) + 2;
325f6603c60Sopenharmony_ci
326f6603c60Sopenharmony_ci    size_t ret = strnlen(src, ltSrcSize);
327f6603c60Sopenharmony_ci    EXPECT_EQ(ret, ltSrcSize);
328f6603c60Sopenharmony_ci
329f6603c60Sopenharmony_ci    ret = strnlen(src, gtSrcSize);
330f6603c60Sopenharmony_ci    EXPECT_EQ(ret, strlen(src));
331f6603c60Sopenharmony_ci}
332f6603c60Sopenharmony_ci
333f6603c60Sopenharmony_ci/**
334f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STRING_1900
335f6603c60Sopenharmony_ci * @tc.name   strtok basic function test
336f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
337f6603c60Sopenharmony_ci */
338f6603c60Sopenharmony_ciHWTEST_F(IoTest, testStrtok, Function | MediumTest | Level1)
339f6603c60Sopenharmony_ci{
340f6603c60Sopenharmony_ci    char src[] = "hello world & This is-String1";
341f6603c60Sopenharmony_ci    char *ret = strtok(src, "&");
342f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, src);
343f6603c60Sopenharmony_ci
344f6603c60Sopenharmony_ci    ret = strtok(nullptr, "-");
345f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, " This is");
346f6603c60Sopenharmony_ci
347f6603c60Sopenharmony_ci    char srcS[] = "hello world !";
348f6603c60Sopenharmony_ci    ret = strtok(srcS, "?");
349f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, srcS);
350f6603c60Sopenharmony_ci
351f6603c60Sopenharmony_ci    char srcT[50] = {0};
352f6603c60Sopenharmony_ci    ret = strtok(srcT, "~");
353f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, nullptr);
354f6603c60Sopenharmony_ci}
355f6603c60Sopenharmony_ci
356f6603c60Sopenharmony_ci/**
357f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STRING_2000
358f6603c60Sopenharmony_ci * @tc.name   strtok_r basic function test
359f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
360f6603c60Sopenharmony_ci */
361f6603c60Sopenharmony_ciHWTEST_F(IoTest, testStrtok_r, Function | MediumTest | Level1)
362f6603c60Sopenharmony_ci{
363f6603c60Sopenharmony_ci    char str[] = "hello world & This is-String1";
364f6603c60Sopenharmony_ci    char *endPtr = nullptr;
365f6603c60Sopenharmony_ci    char *ret = strtok_r(str, "&", &endPtr);
366f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, str);
367f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, " This is-String1");
368f6603c60Sopenharmony_ci
369f6603c60Sopenharmony_ci    ret = strtok_r(nullptr, "-", &endPtr);
370f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, " This is");
371f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, "String1");
372f6603c60Sopenharmony_ci
373f6603c60Sopenharmony_ci    char strS[] = "hello world !";
374f6603c60Sopenharmony_ci    ret = strtok_r(strS, "?", &endPtr);
375f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, strS);
376f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, nullptr);
377f6603c60Sopenharmony_ci
378f6603c60Sopenharmony_ci    char strT[] = {0};
379f6603c60Sopenharmony_ci    ret = strtok_r(strT, "!", &endPtr);
380f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, nullptr);
381f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, nullptr);
382f6603c60Sopenharmony_ci}
383f6603c60Sopenharmony_ci
384f6603c60Sopenharmony_ci/**
385f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STRING_2100
386f6603c60Sopenharmony_ci * @tc.name   strsep basic function test
387f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
388f6603c60Sopenharmony_ci */
389f6603c60Sopenharmony_ciHWTEST_F(IoTest, testStrsep, Function | MediumTest | Level1)
390f6603c60Sopenharmony_ci{
391f6603c60Sopenharmony_ci    char src[] = "123===ABC";
392f6603c60Sopenharmony_ci    char *str = src;
393f6603c60Sopenharmony_ci    char *ret = strsep(&str, "=");
394f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, "123");
395f6603c60Sopenharmony_ci
396f6603c60Sopenharmony_ci    char srcS[] = "hello world !";
397f6603c60Sopenharmony_ci    char *strS = srcS;
398f6603c60Sopenharmony_ci    ret = strsep(&strS, "?");
399f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, "hello world !");
400f6603c60Sopenharmony_ci    EXPECT_EQ(strS, nullptr);
401f6603c60Sopenharmony_ci
402f6603c60Sopenharmony_ci    char srcT[] = {0};
403f6603c60Sopenharmony_ci    char *strT = srcT;
404f6603c60Sopenharmony_ci    ret = strsep(&strT, "?");
405f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, "");
406f6603c60Sopenharmony_ci}
407f6603c60Sopenharmony_ci
408f6603c60Sopenharmony_ci/**
409f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STRING_2200
410f6603c60Sopenharmony_ci * @tc.name   strdup basic function test
411f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
412f6603c60Sopenharmony_ci */
413f6603c60Sopenharmony_ciHWTEST_F(IoTest, testStrdup, Function | MediumTest | Level1)
414f6603c60Sopenharmony_ci{
415f6603c60Sopenharmony_ci    char src[] = "hello world !";
416f6603c60Sopenharmony_ci    char *ret = strdup(src);
417f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, src) << "> strdup fail, errno = " << errno;
418f6603c60Sopenharmony_ci
419f6603c60Sopenharmony_ci    char srcS[] = "This is String1";
420f6603c60Sopenharmony_ci    ret = strdup(srcS);
421f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, "This is String1") << "> strdup fail, errno = " << errno;
422f6603c60Sopenharmony_ci    free(ret);
423f6603c60Sopenharmony_ci}
424f6603c60Sopenharmony_ci
425f6603c60Sopenharmony_ci/**
426f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STRING_2300
427f6603c60Sopenharmony_ci * @tc.name   strndup basic function test
428f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
429f6603c60Sopenharmony_ci */
430f6603c60Sopenharmony_ciHWTEST_F(IoTest, testStrndup, Function | MediumTest | Level1)
431f6603c60Sopenharmony_ci{
432f6603c60Sopenharmony_ci    char src[] = "hello world !";
433f6603c60Sopenharmony_ci    char *ret = strndup(src, 5);
434f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, "hello") << "> strndup fail, errno = " << errno;
435f6603c60Sopenharmony_ci
436f6603c60Sopenharmony_ci    char srcS[] = "This is String1";
437f6603c60Sopenharmony_ci    ret = strndup(srcS, 20);
438f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, "This is String1") << "> strndup fail, errno = " << errno;
439f6603c60Sopenharmony_ci    free(ret);
440f6603c60Sopenharmony_ci}
441f6603c60Sopenharmony_ci
442f6603c60Sopenharmony_ci/**
443f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STRING_2400
444f6603c60Sopenharmony_ci * @tc.name   strpbrk basic function test
445f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
446f6603c60Sopenharmony_ci */
447f6603c60Sopenharmony_ciHWTEST_F(IoTest, testStrpbrk, Function | MediumTest | Level1)
448f6603c60Sopenharmony_ci{
449f6603c60Sopenharmony_ci    const char dest[] = "hello !! world";
450f6603c60Sopenharmony_ci    const char src[] = "!!";
451f6603c60Sopenharmony_ci    const char *ret = strpbrk(dest, src);
452f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, "!! world");
453f6603c60Sopenharmony_ci
454f6603c60Sopenharmony_ci    const char srcS[] = "??";
455f6603c60Sopenharmony_ci    ret = strpbrk(dest, srcS);
456f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, nullptr);
457f6603c60Sopenharmony_ci}
458f6603c60Sopenharmony_ci
459f6603c60Sopenharmony_ci/**
460f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STRING_2500
461f6603c60Sopenharmony_ci * @tc.name   strcspn basic function test
462f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
463f6603c60Sopenharmony_ci */
464f6603c60Sopenharmony_ciHWTEST_F(IoTest, testStrcspn, Function | MediumTest | Level1)
465f6603c60Sopenharmony_ci{
466f6603c60Sopenharmony_ci    const char dest[] = "hello world !";
467f6603c60Sopenharmony_ci    const char src[] = "!";
468f6603c60Sopenharmony_ci    size_t ret = strcspn(dest, src);
469f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 12U);
470f6603c60Sopenharmony_ci
471f6603c60Sopenharmony_ci    const char srcS[] = "a";
472f6603c60Sopenharmony_ci    ret = strcspn(dest, srcS);
473f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 13U);
474f6603c60Sopenharmony_ci}
475f6603c60Sopenharmony_ci
476f6603c60Sopenharmony_ci/**
477f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STRING_2600
478f6603c60Sopenharmony_ci * @tc.name   strspn basic function test
479f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
480f6603c60Sopenharmony_ci */
481f6603c60Sopenharmony_ciHWTEST_F(IoTest, testStrspn, Function | MediumTest | Level1)
482f6603c60Sopenharmony_ci{
483f6603c60Sopenharmony_ci    const char dest[] = "hello world !";
484f6603c60Sopenharmony_ci    const char src[] = "heAlo";
485f6603c60Sopenharmony_ci    size_t ret = strspn(dest, src);
486f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 5U);
487f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 5U);
488f6603c60Sopenharmony_ci
489f6603c60Sopenharmony_ci    const char destS[] = "this is string";
490f6603c60Sopenharmony_ci    const char srcS[] = "abc";
491f6603c60Sopenharmony_ci    ret = strspn(destS, srcS);
492f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 0U);
493f6603c60Sopenharmony_ci
494f6603c60Sopenharmony_ci    const char srcT[] = "helo\0 wal";
495f6603c60Sopenharmony_ci    ret = strspn(dest, srcT);
496f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 5U);
497f6603c60Sopenharmony_ci}
498f6603c60Sopenharmony_ci
499f6603c60Sopenharmony_ci/**
500f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STRING_2700
501f6603c60Sopenharmony_ci * @tc.name   strstr basic function test
502f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
503f6603c60Sopenharmony_ci */
504f6603c60Sopenharmony_ciHWTEST_F(IoTest, testStrstr, Function | MediumTest | Level1)
505f6603c60Sopenharmony_ci{
506f6603c60Sopenharmony_ci    const char dest[] = "hello world !";
507f6603c60Sopenharmony_ci    const char src[] = "heAlo";
508f6603c60Sopenharmony_ci    const char *ret = strstr(dest, src);
509f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, nullptr);
510f6603c60Sopenharmony_ci
511f6603c60Sopenharmony_ci    const char destS[] = "string this is string";
512f6603c60Sopenharmony_ci    const char srcS[] = "string";
513f6603c60Sopenharmony_ci    ret = strstr(destS, srcS);
514f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, "string this is string");
515f6603c60Sopenharmony_ci
516f6603c60Sopenharmony_ci    const char srcT[] = "\0hello";
517f6603c60Sopenharmony_ci    ret = strstr(dest, srcT);
518f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, "hello world !");
519f6603c60Sopenharmony_ci}
520f6603c60Sopenharmony_ci
521f6603c60Sopenharmony_ci/**
522f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STRING_2800
523f6603c60Sopenharmony_ci * @tc.name   strcoll_l basic function testj
524f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
525f6603c60Sopenharmony_ci */
526f6603c60Sopenharmony_ciHWTEST_F(IoTest, testStrcoll_l, Function | MediumTest | Level1)
527f6603c60Sopenharmony_ci{
528f6603c60Sopenharmony_ci    locale_t locale = nullptr;
529f6603c60Sopenharmony_ci    int ret = strcoll_l("AbC", "ABC", locale);
530f6603c60Sopenharmony_ci    EXPECT_GT(ret, 0);
531f6603c60Sopenharmony_ci
532f6603c60Sopenharmony_ci    ret = strcoll_l("ABC", "abc", locale);
533f6603c60Sopenharmony_ci    EXPECT_LT(ret, 0);
534f6603c60Sopenharmony_ci
535f6603c60Sopenharmony_ci    ret = strcoll_l("ABC", "ABC", locale);
536f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 0);
537f6603c60Sopenharmony_ci}
538f6603c60Sopenharmony_ci
539f6603c60Sopenharmony_ci/**
540f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STRING_2900
541f6603c60Sopenharmony_ci * @tc.name   strxfrm_l basic function test
542f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
543f6603c60Sopenharmony_ci */
544f6603c60Sopenharmony_ciHWTEST_F(IoTest, testStrxfrm_l, Function | MediumTest | Level1)
545f6603c60Sopenharmony_ci{
546f6603c60Sopenharmony_ci    char dest[50] = {0};
547f6603c60Sopenharmony_ci    locale_t locale = nullptr;
548f6603c60Sopenharmony_ci    size_t ret = strxfrm_l(dest, "hello world !", sizeof(dest), locale);
549f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 13UL);
550f6603c60Sopenharmony_ci    EXPECT_STREQ(dest, "hello world !");
551f6603c60Sopenharmony_ci
552f6603c60Sopenharmony_ci    char destT[15] = {0};
553f6603c60Sopenharmony_ci    ret = strxfrm_l(destT, "this is string", sizeof(destT), locale);
554f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 14UL);
555f6603c60Sopenharmony_ci    EXPECT_STREQ(destT, "this is string");
556f6603c60Sopenharmony_ci}