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 <strings.h> 17f6603c60Sopenharmony_ci 18f6603c60Sopenharmony_ci#include "IoTest.h" 19f6603c60Sopenharmony_ci 20f6603c60Sopenharmony_ciusing namespace testing::ext; 21f6603c60Sopenharmony_ci 22f6603c60Sopenharmony_ci/** 23f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STRINGS_0100 24f6603c60Sopenharmony_ci * @tc.name ffsl basic function test 25f6603c60Sopenharmony_ci * @tc.desc [C- SOFTWARE -0200] 26f6603c60Sopenharmony_ci */ 27f6603c60Sopenharmony_ciHWTEST_F(IoTest, testFfsl, Function | MediumTest | Level1) 28f6603c60Sopenharmony_ci{ 29f6603c60Sopenharmony_ci int ret; 30f6603c60Sopenharmony_ci for (int i = 0; i < 32; i++) { 31f6603c60Sopenharmony_ci ret = ffsl(1 << i); 32f6603c60Sopenharmony_ci EXPECT_EQ(ret, i + 1); 33f6603c60Sopenharmony_ci } 34f6603c60Sopenharmony_ci 35f6603c60Sopenharmony_ci ret = ffsl(26); 36f6603c60Sopenharmony_ci EXPECT_EQ(ret, 2); 37f6603c60Sopenharmony_ci 38f6603c60Sopenharmony_ci ret = ffsl(0); 39f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 40f6603c60Sopenharmony_ci} 41f6603c60Sopenharmony_ci 42f6603c60Sopenharmony_ci/** 43f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STRINGS_0200 44f6603c60Sopenharmony_ci * @tc.name strncasecmp basic function test 45f6603c60Sopenharmony_ci * @tc.desc [C- SOFTWARE -0200] 46f6603c60Sopenharmony_ci */ 47f6603c60Sopenharmony_ciHWTEST_F(IoTest, testStrncasecmp, Function | MediumTest | Level1) 48f6603c60Sopenharmony_ci{ 49f6603c60Sopenharmony_ci int ret = strncasecmp("abcdefg", "abcdEFg", 7); 50f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 51f6603c60Sopenharmony_ci 52f6603c60Sopenharmony_ci ret = strncasecmp("abcdefg", "abcdEF", 7); 53f6603c60Sopenharmony_ci EXPECT_GT(ret, 0); 54f6603c60Sopenharmony_ci 55f6603c60Sopenharmony_ci ret = strncasecmp("abcdef", "abcdEFg", 7); 56f6603c60Sopenharmony_ci EXPECT_LT(ret, 0); 57f6603c60Sopenharmony_ci} 58f6603c60Sopenharmony_ci 59f6603c60Sopenharmony_ci/** 60f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STRINGS_0300 61f6603c60Sopenharmony_ci * @tc.name strcasecmp basic function test 62f6603c60Sopenharmony_ci * @tc.desc [C- SOFTWARE -0200] 63f6603c60Sopenharmony_ci */ 64f6603c60Sopenharmony_ciHWTEST_F(IoTest, testStrcasecmp, Function | MediumTest | Level1) 65f6603c60Sopenharmony_ci{ 66f6603c60Sopenharmony_ci int ret = strcasecmp("abcdefg", "abcdEFg"); 67f6603c60Sopenharmony_ci EXPECT_EQ(ret, 0); 68f6603c60Sopenharmony_ci 69f6603c60Sopenharmony_ci ret = strcasecmp("abcdefg", "abcdEF"); 70f6603c60Sopenharmony_ci EXPECT_GT(ret, 0); 71f6603c60Sopenharmony_ci 72f6603c60Sopenharmony_ci ret = strcasecmp("abcdef", "abcdEFg"); 73f6603c60Sopenharmony_ci EXPECT_LT(ret, 0); 74f6603c60Sopenharmony_ci} 75f6603c60Sopenharmony_ci 76f6603c60Sopenharmony_ci/** 77f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STRINGS_0400 78f6603c60Sopenharmony_ci * @tc.name index basic function test 79f6603c60Sopenharmony_ci * @tc.desc [C- SOFTWARE -0200] 80f6603c60Sopenharmony_ci */ 81f6603c60Sopenharmony_ciHWTEST_F(IoTest, testIndex, Function | MediumTest | Level1) 82f6603c60Sopenharmony_ci{ 83f6603c60Sopenharmony_ci char src[] = "abcdef123456abcdef"; 84f6603c60Sopenharmony_ci char *ret = index(src, '1'); 85f6603c60Sopenharmony_ci EXPECT_STREQ(ret, "123456abcdef"); 86f6603c60Sopenharmony_ci 87f6603c60Sopenharmony_ci ret = index(src, 'f'); 88f6603c60Sopenharmony_ci EXPECT_STREQ(ret, "f123456abcdef"); 89f6603c60Sopenharmony_ci 90f6603c60Sopenharmony_ci ret = index(src, ' '); 91f6603c60Sopenharmony_ci EXPECT_STREQ(ret, nullptr); 92f6603c60Sopenharmony_ci 93f6603c60Sopenharmony_ci char srcFir[50] = {0}; 94f6603c60Sopenharmony_ci ret = index(srcFir, '?'); 95f6603c60Sopenharmony_ci EXPECT_STREQ(ret, nullptr); 96f6603c60Sopenharmony_ci} 97f6603c60Sopenharmony_ci 98f6603c60Sopenharmony_ci/** 99f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STRINGS_0500 100f6603c60Sopenharmony_ci * @tc.name rindex basic function test 101f6603c60Sopenharmony_ci * @tc.desc [C- SOFTWARE -0200] 102f6603c60Sopenharmony_ci */ 103f6603c60Sopenharmony_ciHWTEST_F(IoTest, testRindex, Function | MediumTest | Level1) 104f6603c60Sopenharmony_ci{ 105f6603c60Sopenharmony_ci char src[] = "abcdef123456abcdef"; 106f6603c60Sopenharmony_ci char *ret = rindex(src, '1'); 107f6603c60Sopenharmony_ci EXPECT_STREQ(ret, "123456abcdef"); 108f6603c60Sopenharmony_ci 109f6603c60Sopenharmony_ci ret = rindex(src, 'f'); 110f6603c60Sopenharmony_ci EXPECT_STREQ(ret, "f"); 111f6603c60Sopenharmony_ci 112f6603c60Sopenharmony_ci ret = rindex(src, ' '); 113f6603c60Sopenharmony_ci EXPECT_STREQ(ret, nullptr); 114f6603c60Sopenharmony_ci 115f6603c60Sopenharmony_ci char srcFir[50] = {0}; 116f6603c60Sopenharmony_ci ret = rindex(srcFir, '?'); 117f6603c60Sopenharmony_ci EXPECT_STREQ(ret, nullptr); 118f6603c60Sopenharmony_ci}