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}