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#include <wctype.h>
18f6603c60Sopenharmony_ci#include <wchar.h>
19f6603c60Sopenharmony_ci
20f6603c60Sopenharmony_ci#include "gtest/gtest.h"
21f6603c60Sopenharmony_ci#include "log.h"
22f6603c60Sopenharmony_ci#include "utils.h"
23f6603c60Sopenharmony_ci
24f6603c60Sopenharmony_ciusing namespace testing::ext;
25f6603c60Sopenharmony_ci
26f6603c60Sopenharmony_ciclass ActsUtilStringOperApiTest : public testing::Test {
27f6603c60Sopenharmony_cipublic:
28f6603c60Sopenharmony_ci    locale_t g_ausoaLocale;
29f6603c60Sopenharmony_ciprotected:
30f6603c60Sopenharmony_ci    // SetUpTestCase: Testsuit setup, run before 1st testcase
31f6603c60Sopenharmony_ci    static void SetUpTestCase(void)
32f6603c60Sopenharmony_ci    {
33f6603c60Sopenharmony_ci    }
34f6603c60Sopenharmony_ci    // TearDownTestCase: Testsuit teardown, run after last testcase
35f6603c60Sopenharmony_ci    static void TearDownTestCase(void)
36f6603c60Sopenharmony_ci    {
37f6603c60Sopenharmony_ci    }
38f6603c60Sopenharmony_ci    // Testcase setup
39f6603c60Sopenharmony_ci    virtual void SetUp()
40f6603c60Sopenharmony_ci    {
41f6603c60Sopenharmony_ci        g_ausoaLocale = newlocale(LC_ALL_MASK, "", (locale_t)0);
42f6603c60Sopenharmony_ci    }
43f6603c60Sopenharmony_ci    // Testcase teardown
44f6603c60Sopenharmony_ci    virtual void TearDown()
45f6603c60Sopenharmony_ci    {
46f6603c60Sopenharmony_ci        freelocale(g_ausoaLocale);
47f6603c60Sopenharmony_ci    }
48f6603c60Sopenharmony_ci};
49f6603c60Sopenharmony_ci
50f6603c60Sopenharmony_ci/**
51f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_FFS_0100
52f6603c60Sopenharmony_ci* @tc.name       test fss api with digit 1
53f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
54f6603c60Sopenharmony_ci*/
55f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testFss0100, Function | MediumTest | Level1) {
56f6603c60Sopenharmony_ci    int paraValue;
57f6603c60Sopenharmony_ci    int returnVal;
58f6603c60Sopenharmony_ci
59f6603c60Sopenharmony_ci    paraValue = 1;
60f6603c60Sopenharmony_ci    returnVal = ffs(paraValue);
61f6603c60Sopenharmony_ci    LOGD("    ffs returnVal:='%d'\n", returnVal);
62f6603c60Sopenharmony_ci    ASSERT_TRUE(1 == returnVal) << "ErrInfo: ffs returnVal:='" << returnVal << "'";
63f6603c60Sopenharmony_ci}
64f6603c60Sopenharmony_ci
65f6603c60Sopenharmony_ci/**
66f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_FFS_0200
67f6603c60Sopenharmony_ci* @tc.name       test fss api with digit 0
68f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
69f6603c60Sopenharmony_ci*/
70f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testFss0200, Function | MediumTest | Level1) {
71f6603c60Sopenharmony_ci    int paraValue;
72f6603c60Sopenharmony_ci    int returnVal;
73f6603c60Sopenharmony_ci
74f6603c60Sopenharmony_ci    paraValue = 0;
75f6603c60Sopenharmony_ci    returnVal = ffs(paraValue);
76f6603c60Sopenharmony_ci    LOGD("    ffs returnVal:='%d'\n", returnVal);
77f6603c60Sopenharmony_ci    ASSERT_TRUE(0 == returnVal) << "ErrInfo: ffs returnVal:='" << returnVal << "'";
78f6603c60Sopenharmony_ci}
79f6603c60Sopenharmony_ci
80f6603c60Sopenharmony_ci/**
81f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_FFS_0300
82f6603c60Sopenharmony_ci* @tc.name       test fss api with xdigit
83f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
84f6603c60Sopenharmony_ci*/
85f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testFss0300, Function | MediumTest | Level1) {
86f6603c60Sopenharmony_ci    int paraValue;
87f6603c60Sopenharmony_ci    int returnVal;
88f6603c60Sopenharmony_ci
89f6603c60Sopenharmony_ci    paraValue = 0x8000;
90f6603c60Sopenharmony_ci    returnVal = ffs(paraValue);
91f6603c60Sopenharmony_ci    LOGD("    ffs returnVal:='%d'\n", returnVal);
92f6603c60Sopenharmony_ci    ASSERT_TRUE(16 == returnVal) << "ErrInfo: ffs returnVal:='" << returnVal << "'";
93f6603c60Sopenharmony_ci}
94f6603c60Sopenharmony_ci
95f6603c60Sopenharmony_ci/**
96f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_FFSL_0400
97f6603c60Sopenharmony_ci* @tc.name       test fssl api with digit 1
98f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
99f6603c60Sopenharmony_ci*/
100f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testFssl0400, Function | MediumTest | Level1) {
101f6603c60Sopenharmony_ci    long int paraValue;
102f6603c60Sopenharmony_ci    int returnVal;
103f6603c60Sopenharmony_ci
104f6603c60Sopenharmony_ci    paraValue = 1;
105f6603c60Sopenharmony_ci    returnVal = ffsl(paraValue);
106f6603c60Sopenharmony_ci    LOGD("    ffsl returnVal:='%d'\n", returnVal);
107f6603c60Sopenharmony_ci    ASSERT_TRUE(1 == returnVal) << "ErrInfo: ffsl returnVal:='" << returnVal << "'";
108f6603c60Sopenharmony_ci}
109f6603c60Sopenharmony_ci
110f6603c60Sopenharmony_ci/**
111f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_FFSL_0500
112f6603c60Sopenharmony_ci* @tc.name       test fssl api with digit 0
113f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
114f6603c60Sopenharmony_ci*/
115f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testFssl0500, Function | MediumTest | Level1) {
116f6603c60Sopenharmony_ci    long int paraValue;
117f6603c60Sopenharmony_ci    int returnVal;
118f6603c60Sopenharmony_ci
119f6603c60Sopenharmony_ci    paraValue = 0;
120f6603c60Sopenharmony_ci    returnVal = ffsl(paraValue);
121f6603c60Sopenharmony_ci    LOGD("    ffsl returnVal:='%d'\n", returnVal);
122f6603c60Sopenharmony_ci    ASSERT_TRUE(0 == returnVal) << "ErrInfo: ffsl returnVal:='" << returnVal << "'";
123f6603c60Sopenharmony_ci}
124f6603c60Sopenharmony_ci
125f6603c60Sopenharmony_ci/**
126f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_FFSL_0600
127f6603c60Sopenharmony_ci* @tc.name       test fssl api with xdigit
128f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
129f6603c60Sopenharmony_ci*/
130f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testFssl0600, Function | MediumTest | Level1) {
131f6603c60Sopenharmony_ci    long int paraValue;
132f6603c60Sopenharmony_ci    int returnVal;
133f6603c60Sopenharmony_ci
134f6603c60Sopenharmony_ci    paraValue = 0x8000;
135f6603c60Sopenharmony_ci    returnVal = ffsl(paraValue);
136f6603c60Sopenharmony_ci    LOGD("    ffsl returnVal:='%d'\n", returnVal);
137f6603c60Sopenharmony_ci    ASSERT_TRUE(16 == returnVal) << "ErrInfo: ffsl returnVal:='" << returnVal << "'";
138f6603c60Sopenharmony_ci}
139f6603c60Sopenharmony_ci
140f6603c60Sopenharmony_ci/**
141f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_FFSLL_0700
142f6603c60Sopenharmony_ci* @tc.name       test fssll api with digit 1
143f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
144f6603c60Sopenharmony_ci*/
145f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testFssll0700, Function | MediumTest | Level1) {
146f6603c60Sopenharmony_ci    long long int paraValue;
147f6603c60Sopenharmony_ci    int returnVal;
148f6603c60Sopenharmony_ci
149f6603c60Sopenharmony_ci    paraValue = 1;
150f6603c60Sopenharmony_ci    returnVal = ffsll(paraValue);
151f6603c60Sopenharmony_ci    LOGD("    ffsll returnVal:='%d'\n", returnVal);
152f6603c60Sopenharmony_ci    ASSERT_TRUE(1 == returnVal) << "ErrInfo: ffsll returnVal:='" << returnVal << "'";
153f6603c60Sopenharmony_ci}
154f6603c60Sopenharmony_ci
155f6603c60Sopenharmony_ci/**
156f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_FFSLL_0800
157f6603c60Sopenharmony_ci* @tc.name       test fssll api with digit 0
158f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
159f6603c60Sopenharmony_ci*/
160f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testFssll0800, Function | MediumTest | Level1) {
161f6603c60Sopenharmony_ci    long long int paraValue;
162f6603c60Sopenharmony_ci    int returnVal;
163f6603c60Sopenharmony_ci
164f6603c60Sopenharmony_ci    paraValue = 0;
165f6603c60Sopenharmony_ci    returnVal = ffsll(paraValue);
166f6603c60Sopenharmony_ci    LOGD("    ffsll returnVal:='%d'\n", returnVal);
167f6603c60Sopenharmony_ci    ASSERT_TRUE(0 == returnVal) << "ErrInfo: ffsll returnVal:='" << returnVal << "'";
168f6603c60Sopenharmony_ci}
169f6603c60Sopenharmony_ci
170f6603c60Sopenharmony_ci/**
171f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_FFSLL_0900
172f6603c60Sopenharmony_ci* @tc.name       test fssll api with xdigit
173f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
174f6603c60Sopenharmony_ci*/
175f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testFssll0900, Function | MediumTest | Level1) {
176f6603c60Sopenharmony_ci    long long int paraValue;
177f6603c60Sopenharmony_ci    int returnVal;
178f6603c60Sopenharmony_ci
179f6603c60Sopenharmony_ci    paraValue = 0x800000000000;
180f6603c60Sopenharmony_ci    returnVal = ffsll(paraValue);
181f6603c60Sopenharmony_ci    LOGD("    ffsll returnVal:='%d'\n", returnVal);
182f6603c60Sopenharmony_ci    ASSERT_TRUE(48 == returnVal) << "ErrInfo: ffsll returnVal:='" << returnVal << "'";
183f6603c60Sopenharmony_ci}
184f6603c60Sopenharmony_ci
185f6603c60Sopenharmony_ci/**
186f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_WCWIDTH_1000
187f6603c60Sopenharmony_ci* @tc.name       test wcwidth api with null wide character
188f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
189f6603c60Sopenharmony_ci*/
190f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testWcwidth1000, Function | MediumTest | Level1) {
191f6603c60Sopenharmony_ci    wchar_t wideChar;
192f6603c60Sopenharmony_ci    int returnVal;
193f6603c60Sopenharmony_ci
194f6603c60Sopenharmony_ci    wideChar = '\0';
195f6603c60Sopenharmony_ci    returnVal = wcwidth(wideChar);
196f6603c60Sopenharmony_ci    LOGD("    wcwidth returnVal:='%d'\n", returnVal);
197f6603c60Sopenharmony_ci    ASSERT_TRUE(0 == returnVal) << "ErrInfo: wcwidth returnVal:='" << returnVal << "'";
198f6603c60Sopenharmony_ci}
199f6603c60Sopenharmony_ci
200f6603c60Sopenharmony_ci/**
201f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_WCWIDTH_1100
202f6603c60Sopenharmony_ci* @tc.name       test wcwidth api with upper alpha
203f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
204f6603c60Sopenharmony_ci*/
205f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testWcwidth1100, Function | MediumTest | Level1) {
206f6603c60Sopenharmony_ci    wchar_t wideChar;
207f6603c60Sopenharmony_ci    int returnVal;
208f6603c60Sopenharmony_ci
209f6603c60Sopenharmony_ci    wideChar = 'A';
210f6603c60Sopenharmony_ci    returnVal = wcwidth(wideChar);
211f6603c60Sopenharmony_ci    LOGD("    wcwidth returnVal:='%d'\n", returnVal);
212f6603c60Sopenharmony_ci    ASSERT_TRUE(1 == returnVal) << "ErrInfo: wcwidth returnVal:='" << returnVal << "'";
213f6603c60Sopenharmony_ci}
214f6603c60Sopenharmony_ci
215f6603c60Sopenharmony_ci/**
216f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_WCTYPE_1200
217f6603c60Sopenharmony_ci* @tc.name       test wctype api with alnum
218f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
219f6603c60Sopenharmony_ci*/
220f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testWctype1200, Function | MediumTest | Level1) {
221f6603c60Sopenharmony_ci    const char *paraVal = "alnum";
222f6603c60Sopenharmony_ci    wctype_t returnVal;
223f6603c60Sopenharmony_ci
224f6603c60Sopenharmony_ci    returnVal = wctype(paraVal);
225f6603c60Sopenharmony_ci    LOGD("    wcwidth returnVal:='%d'\n", returnVal);
226f6603c60Sopenharmony_ci    ASSERT_TRUE(returnVal != 0) << "ErrInfo: wcwidth returnVal:='" << returnVal << "'";
227f6603c60Sopenharmony_ci}
228f6603c60Sopenharmony_ci
229f6603c60Sopenharmony_ci/**
230f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_WCTYPE_1300
231f6603c60Sopenharmony_ci* @tc.name       test wctype api with alnumalpha
232f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
233f6603c60Sopenharmony_ci*/
234f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testWctype1300, Function | MediumTest | Level1) {
235f6603c60Sopenharmony_ci    const char *paraVal = "alnumalpha";
236f6603c60Sopenharmony_ci    wctype_t returnVal;
237f6603c60Sopenharmony_ci
238f6603c60Sopenharmony_ci    returnVal = wctype(paraVal);
239f6603c60Sopenharmony_ci    LOGD("    wcwidth returnVal:='%d'\n", returnVal);
240f6603c60Sopenharmony_ci    ASSERT_TRUE(0 == returnVal) << "ErrInfo: wcwidth returnVal:='" << returnVal << "'";
241f6603c60Sopenharmony_ci}
242f6603c60Sopenharmony_ci
243f6603c60Sopenharmony_ci/**
244f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_WCTYPE_L_1400
245f6603c60Sopenharmony_ci* @tc.name       test wctype_l api with alnum
246f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
247f6603c60Sopenharmony_ci*/
248f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testWctypeL1400, Function | MediumTest | Level1) {
249f6603c60Sopenharmony_ci    const char *paraVal = "alnum";
250f6603c60Sopenharmony_ci    wctype_t returnVal;
251f6603c60Sopenharmony_ci
252f6603c60Sopenharmony_ci    returnVal = wctype_l(paraVal, g_ausoaLocale);
253f6603c60Sopenharmony_ci    LOGD("    wctype_l returnVal:='%d'\n", returnVal);
254f6603c60Sopenharmony_ci    ASSERT_TRUE(returnVal != 0) << "ErrInfo: wctype_l returnVal:='" << returnVal << "'";
255f6603c60Sopenharmony_ci}
256f6603c60Sopenharmony_ci
257f6603c60Sopenharmony_ci/**
258f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_WCTYPE_L_1500
259f6603c60Sopenharmony_ci* @tc.name       test wctype_l api with alnumalpha
260f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
261f6603c60Sopenharmony_ci*/
262f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testWctypeL1500, Function | MediumTest | Level1) {
263f6603c60Sopenharmony_ci    const char *paraVal = "alnumalpha";
264f6603c60Sopenharmony_ci    wctype_t returnVal;
265f6603c60Sopenharmony_ci
266f6603c60Sopenharmony_ci    returnVal = wctype_l(paraVal, g_ausoaLocale);
267f6603c60Sopenharmony_ci    LOGD("    wctype_l returnVal:='%d'\n", returnVal);
268f6603c60Sopenharmony_ci    ASSERT_TRUE(0 == returnVal) << "ErrInfo: wctype_l returnVal:='" << returnVal << "'";
269f6603c60Sopenharmony_ci}
270f6603c60Sopenharmony_ci
271f6603c60Sopenharmony_ci/**
272f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_MBLEN_1600
273f6603c60Sopenharmony_ci* @tc.name       test mblen api
274f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
275f6603c60Sopenharmony_ci*/
276f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testMblen1600, Function | MediumTest | Level1) {
277f6603c60Sopenharmony_ci    const char *paraVal = nullptr;
278f6603c60Sopenharmony_ci    size_t sizeVal;
279f6603c60Sopenharmony_ci    int returnVal;
280f6603c60Sopenharmony_ci
281f6603c60Sopenharmony_ci    paraVal = "a";
282f6603c60Sopenharmony_ci    sizeVal = 1;
283f6603c60Sopenharmony_ci    returnVal = mblen(paraVal, sizeVal);
284f6603c60Sopenharmony_ci    LOGD("    mblen returnVal:='%d'\n", returnVal);
285f6603c60Sopenharmony_ci    ASSERT_TRUE(1 == returnVal) << "ErrInfo: mblen returnVal:='" << returnVal << "'";
286f6603c60Sopenharmony_ci}
287f6603c60Sopenharmony_ci
288f6603c60Sopenharmony_ci/**
289f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_MBLEN_1700
290f6603c60Sopenharmony_ci* @tc.name       test mbrlen api
291f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
292f6603c60Sopenharmony_ci*/
293f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testMbrlen1700, Function | MediumTest | Level1) {
294f6603c60Sopenharmony_ci    const char *paraVal = nullptr;
295f6603c60Sopenharmony_ci    size_t sizeVal;
296f6603c60Sopenharmony_ci    mbstate_t *psVal = nullptr;
297f6603c60Sopenharmony_ci    size_t returnVal;
298f6603c60Sopenharmony_ci
299f6603c60Sopenharmony_ci    paraVal = "a";
300f6603c60Sopenharmony_ci    sizeVal = 1;
301f6603c60Sopenharmony_ci    returnVal = mbrlen(paraVal, sizeVal, psVal);
302f6603c60Sopenharmony_ci    LOGD("    mbrlen returnVal:='%d'\n", returnVal);
303f6603c60Sopenharmony_ci    ASSERT_TRUE(1 == returnVal) << "ErrInfo: mbrlen returnVal:='" << returnVal << "'";
304f6603c60Sopenharmony_ci}
305f6603c60Sopenharmony_ci
306f6603c60Sopenharmony_ci/**
307f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_WCPCPY_1800
308f6603c60Sopenharmony_ci* @tc.name       test wcpcpy api
309f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
310f6603c60Sopenharmony_ci*/
311f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testWcpcpy1800, Function | MediumTest | Level1) {
312f6603c60Sopenharmony_ci    wchar_t paraDest[10];
313f6603c60Sopenharmony_ci    const wchar_t *paraSrc = L"abcde";
314f6603c60Sopenharmony_ci    wchar_t *returnVal = nullptr;
315f6603c60Sopenharmony_ci
316f6603c60Sopenharmony_ci    returnVal = wcpcpy(paraDest, paraSrc);
317f6603c60Sopenharmony_ci    LOGD("    wcpcpy returnVal:='%x'\n", returnVal);
318f6603c60Sopenharmony_ci    ASSERT_TRUE(0 == wcscmp(paraDest, paraSrc) && L'\0' == *returnVal)
319f6603c60Sopenharmony_ci        << "ErrInfo: wcpcpy returnVal:='" << returnVal << "'";
320f6603c60Sopenharmony_ci}
321f6603c60Sopenharmony_ci
322f6603c60Sopenharmony_ci/**
323f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_WCPNCPY_1900
324f6603c60Sopenharmony_ci* @tc.name       test wcpncpy api
325f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
326f6603c60Sopenharmony_ci*/
327f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testWcpncpy1900, Function | MediumTest | Level1) {
328f6603c60Sopenharmony_ci    wchar_t paraDest[10];
329f6603c60Sopenharmony_ci    const wchar_t *paraSrc = L"abcde";
330f6603c60Sopenharmony_ci    size_t lenVal;
331f6603c60Sopenharmony_ci    wchar_t *returnVal = nullptr;
332f6603c60Sopenharmony_ci
333f6603c60Sopenharmony_ci    lenVal = wcslen(paraSrc);
334f6603c60Sopenharmony_ci    returnVal = wcpncpy(paraDest, paraSrc, lenVal + 1);
335f6603c60Sopenharmony_ci    LOGD("    wcpncpy returnVal:='%x'\n", returnVal);
336f6603c60Sopenharmony_ci    ASSERT_TRUE(0 == wcsncmp(paraDest, paraSrc, lenVal) && L'\0' == *returnVal)
337f6603c60Sopenharmony_ci        << "ErrInfo: wcpncpy returnVal:='" << returnVal << "'";
338f6603c60Sopenharmony_ci}
339f6603c60Sopenharmony_ci
340f6603c60Sopenharmony_ci/**
341f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_WCSCASECMP_2000
342f6603c60Sopenharmony_ci* @tc.name       test wcscasecmp api with para1 is lower case of para2
343f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
344f6603c60Sopenharmony_ci*/
345f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testWcscasecmp2000, Function | MediumTest | Level1) {
346f6603c60Sopenharmony_ci    const wchar_t *strVal1 = L"abcde";
347f6603c60Sopenharmony_ci    const wchar_t *strVal2 = L"ABCDE";
348f6603c60Sopenharmony_ci    int returnVal;
349f6603c60Sopenharmony_ci
350f6603c60Sopenharmony_ci    returnVal = wcscasecmp(strVal1, strVal2);
351f6603c60Sopenharmony_ci    LOGD("    wcscasecmp returnVal:='%d'\n", returnVal);
352f6603c60Sopenharmony_ci    ASSERT_TRUE(0 == returnVal) << "ErrInfo: wcscasecmp returnVal:='" << returnVal << "'";
353f6603c60Sopenharmony_ci}
354f6603c60Sopenharmony_ci
355f6603c60Sopenharmony_ci/**
356f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_WCSCASECMP_2100
357f6603c60Sopenharmony_ci* @tc.name       test wcscasecmp api with same string
358f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
359f6603c60Sopenharmony_ci*/
360f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testWcscasecmp2100, Function | MediumTest | Level1) {
361f6603c60Sopenharmony_ci    const wchar_t *strVal1 = L"abcde";
362f6603c60Sopenharmony_ci    const wchar_t *strVal2 = L"abcde";
363f6603c60Sopenharmony_ci    int returnVal;
364f6603c60Sopenharmony_ci
365f6603c60Sopenharmony_ci    returnVal = wcscasecmp(strVal1, strVal2);
366f6603c60Sopenharmony_ci    LOGD("    wcscasecmp returnVal:='%d'\n", returnVal);
367f6603c60Sopenharmony_ci    ASSERT_TRUE(0 == returnVal) << "ErrInfo: wcscasecmp returnVal:='" << returnVal << "'";
368f6603c60Sopenharmony_ci}
369f6603c60Sopenharmony_ci
370f6603c60Sopenharmony_ci/**
371f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_WCSCASECMP_L_2000
372f6603c60Sopenharmony_ci* @tc.name       test wcscasecmp_l api with para1 is lower case of para2
373f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
374f6603c60Sopenharmony_ci*/
375f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testWcscasecmpL2200, Function | MediumTest | Level1) {
376f6603c60Sopenharmony_ci    const wchar_t *strVal1 = L"abcde";
377f6603c60Sopenharmony_ci    const wchar_t *strVal2 = L"ABCDE";
378f6603c60Sopenharmony_ci    int returnVal;
379f6603c60Sopenharmony_ci
380f6603c60Sopenharmony_ci    returnVal = wcscasecmp_l(strVal1, strVal2, g_ausoaLocale);
381f6603c60Sopenharmony_ci    LOGD("    wcscasecmp_l returnVal:='%d'\n", returnVal);
382f6603c60Sopenharmony_ci    ASSERT_TRUE(0 == returnVal) << "ErrInfo: wcscasecmp_l returnVal:='" << returnVal << "'";
383f6603c60Sopenharmony_ci}
384f6603c60Sopenharmony_ci
385f6603c60Sopenharmony_ci/**
386f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_WCSCASECMP_L_2100
387f6603c60Sopenharmony_ci* @tc.name       test wcscasecmp_l api with same string
388f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
389f6603c60Sopenharmony_ci*/
390f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testWcscasecmpL2300, Function | MediumTest | Level1) {
391f6603c60Sopenharmony_ci    const wchar_t *strVal1 = L"abcde";
392f6603c60Sopenharmony_ci    const wchar_t *strVal2 = L"abcde";
393f6603c60Sopenharmony_ci    int returnVal;
394f6603c60Sopenharmony_ci
395f6603c60Sopenharmony_ci    returnVal = wcscasecmp_l(strVal1, strVal2, g_ausoaLocale);
396f6603c60Sopenharmony_ci    LOGD("    wcscasecmp_l returnVal:='%d'\n", returnVal);
397f6603c60Sopenharmony_ci    ASSERT_TRUE(0 == returnVal) << "ErrInfo: wcscasecmp_l returnVal:='" << returnVal << "'";
398f6603c60Sopenharmony_ci}
399f6603c60Sopenharmony_ci
400f6603c60Sopenharmony_ci/**
401f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_WCSNCASECMP_2400
402f6603c60Sopenharmony_ci* @tc.name       test wcsncasecmp api with para1 is lower case of para2
403f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
404f6603c60Sopenharmony_ci*/
405f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testWcsncasecmp2400, Function | MediumTest | Level1) {
406f6603c60Sopenharmony_ci    const wchar_t *strVal1 = L"abcde";
407f6603c60Sopenharmony_ci    const wchar_t *strVal2 = L"ABCDE";
408f6603c60Sopenharmony_ci    size_t lenVal;
409f6603c60Sopenharmony_ci    int returnVal;
410f6603c60Sopenharmony_ci
411f6603c60Sopenharmony_ci    lenVal = 3;
412f6603c60Sopenharmony_ci    returnVal = wcsncasecmp(strVal1, strVal2, lenVal);
413f6603c60Sopenharmony_ci    LOGD("    wcsncasecmp returnVal:='%d'\n", returnVal);
414f6603c60Sopenharmony_ci    ASSERT_TRUE(0 == returnVal) << "ErrInfo: wcsncasecmp returnVal:='" << returnVal << "'";
415f6603c60Sopenharmony_ci}
416f6603c60Sopenharmony_ci
417f6603c60Sopenharmony_ci/**
418f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_WCSNCASECMP_2500
419f6603c60Sopenharmony_ci* @tc.name       test wcsncasecmp api with same string
420f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
421f6603c60Sopenharmony_ci*/
422f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testWcsncasecmp2500, Function | MediumTest | Level1) {
423f6603c60Sopenharmony_ci    const wchar_t *strVal1 = L"abcde";
424f6603c60Sopenharmony_ci    const wchar_t *strVal2 = L"abcde";
425f6603c60Sopenharmony_ci    size_t lenVal;
426f6603c60Sopenharmony_ci    int returnVal;
427f6603c60Sopenharmony_ci
428f6603c60Sopenharmony_ci    lenVal = 5;
429f6603c60Sopenharmony_ci    returnVal = wcsncasecmp(strVal1, strVal2, lenVal);
430f6603c60Sopenharmony_ci    LOGD("    wcsncasecmp returnVal:='%d'\n", returnVal);
431f6603c60Sopenharmony_ci    ASSERT_TRUE(0 == returnVal) << "ErrInfo: wcsncasecmp returnVal:='" << returnVal << "'";
432f6603c60Sopenharmony_ci}
433f6603c60Sopenharmony_ci
434f6603c60Sopenharmony_ci/**
435f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_WCSNCASECMP_L_2600
436f6603c60Sopenharmony_ci* @tc.name       test wcsncasecmp_l api with para1 is lower case of para2
437f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
438f6603c60Sopenharmony_ci*/
439f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testWcsncasecmpL2600, Function | MediumTest | Level1) {
440f6603c60Sopenharmony_ci    const wchar_t *strVal1 = L"abcde";
441f6603c60Sopenharmony_ci    const wchar_t *strVal2 = L"ABCDE";
442f6603c60Sopenharmony_ci    size_t lenVal;
443f6603c60Sopenharmony_ci    int returnVal;
444f6603c60Sopenharmony_ci
445f6603c60Sopenharmony_ci    lenVal = 3;
446f6603c60Sopenharmony_ci    returnVal = wcsncasecmp_l(strVal1, strVal2, lenVal, g_ausoaLocale);
447f6603c60Sopenharmony_ci    LOGD("    wcsncasecmp_l returnVal:='%d'\n", returnVal);
448f6603c60Sopenharmony_ci    ASSERT_TRUE(0 == returnVal) << "ErrInfo: wcsncasecmp_l returnVal:='" << returnVal << "'";
449f6603c60Sopenharmony_ci}
450f6603c60Sopenharmony_ci
451f6603c60Sopenharmony_ci/**
452f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_WCSNCASECMP_L_2700
453f6603c60Sopenharmony_ci* @tc.name       test wcsncasecmp_l api with same string
454f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
455f6603c60Sopenharmony_ci*/
456f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testWcsncasecmpL2700, Function | MediumTest | Level1) {
457f6603c60Sopenharmony_ci    const wchar_t *strVal1 = L"abcde";
458f6603c60Sopenharmony_ci    const wchar_t *strVal2 = L"abcde";
459f6603c60Sopenharmony_ci    size_t lenVal;
460f6603c60Sopenharmony_ci    int returnVal;
461f6603c60Sopenharmony_ci
462f6603c60Sopenharmony_ci    lenVal = 5;
463f6603c60Sopenharmony_ci    returnVal = wcsncasecmp_l(strVal1, strVal2, lenVal, g_ausoaLocale);
464f6603c60Sopenharmony_ci    LOGD("    wcsncasecmp_l returnVal:='%d'\n", returnVal);
465f6603c60Sopenharmony_ci    ASSERT_TRUE(0 == returnVal) << "ErrInfo: wcsncasecmp_l returnVal:='" << returnVal << "'";
466f6603c60Sopenharmony_ci}
467f6603c60Sopenharmony_ci
468f6603c60Sopenharmony_ci/**
469f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_WCSNLEN_2800
470f6603c60Sopenharmony_ci* @tc.name       test wcsnlen api
471f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
472f6603c60Sopenharmony_ci*/
473f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testWcsnlen2800, Function | MediumTest | Level1) {
474f6603c60Sopenharmony_ci    const wchar_t *paraVal = L"abcde";
475f6603c60Sopenharmony_ci    size_t maxLen;
476f6603c60Sopenharmony_ci    size_t returnVal;
477f6603c60Sopenharmony_ci
478f6603c60Sopenharmony_ci    maxLen = wcslen(paraVal);
479f6603c60Sopenharmony_ci    returnVal = wcsnlen(paraVal, maxLen);
480f6603c60Sopenharmony_ci    LOGD("    wcsnlen returnVal:='%d'\n", returnVal);
481f6603c60Sopenharmony_ci    ASSERT_TRUE(5 == returnVal) << "ErrInfo: wcsnlen returnVal:='" << returnVal << "'";
482f6603c60Sopenharmony_ci}
483f6603c60Sopenharmony_ci
484f6603c60Sopenharmony_ci/**
485f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_WCSWIDTH_2900
486f6603c60Sopenharmony_ci* @tc.name       test wcswidth api
487f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
488f6603c60Sopenharmony_ci*/
489f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testWcswidth2900, Function | MediumTest | Level1) {
490f6603c60Sopenharmony_ci    const wchar_t *paraVal = L"abcde";
491f6603c60Sopenharmony_ci    size_t lenVal;
492f6603c60Sopenharmony_ci    int returnVal;
493f6603c60Sopenharmony_ci
494f6603c60Sopenharmony_ci    lenVal = wcslen(paraVal);
495f6603c60Sopenharmony_ci    returnVal = wcswidth(paraVal, lenVal);
496f6603c60Sopenharmony_ci    LOGD("    wcswidth returnVal:='%d'\n", returnVal);
497f6603c60Sopenharmony_ci    ASSERT_TRUE(5 == returnVal) << "ErrInfo: wcswidth returnVal:='" << returnVal << "'";
498f6603c60Sopenharmony_ci}
499f6603c60Sopenharmony_ci
500f6603c60Sopenharmony_ci/**
501f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_WCSCAT_3000
502f6603c60Sopenharmony_ci* @tc.name       test wcscat api
503f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
504f6603c60Sopenharmony_ci*/
505f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testWcscat3000, Function | MediumTest | Level1) {
506f6603c60Sopenharmony_ci    wchar_t paraDest[10];
507f6603c60Sopenharmony_ci    wchar_t paraSrc[5];
508f6603c60Sopenharmony_ci    wchar_t *returnVal = nullptr;
509f6603c60Sopenharmony_ci
510f6603c60Sopenharmony_ci    wcscpy(paraDest, L"abc");
511f6603c60Sopenharmony_ci    wcscpy(paraSrc, L"def");
512f6603c60Sopenharmony_ci    returnVal = wcscat(paraDest, paraSrc);
513f6603c60Sopenharmony_ci    LOGD("    wcscat returnVal:='%s'\n", returnVal);
514f6603c60Sopenharmony_ci    ASSERT_TRUE(0 == wcscmp(returnVal, L"abcdef")) << "ErrInfo: wcscat returnVal:='" << returnVal << "'";
515f6603c60Sopenharmony_ci}
516f6603c60Sopenharmony_ci
517f6603c60Sopenharmony_ci/**
518f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_WCSNCAT_3100
519f6603c60Sopenharmony_ci* @tc.name       test wcsncat api
520f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
521f6603c60Sopenharmony_ci*/
522f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testWcsncat3100, Function | MediumTest | Level1) {
523f6603c60Sopenharmony_ci    wchar_t paraDest[10];
524f6603c60Sopenharmony_ci    wchar_t paraSrc[5];
525f6603c60Sopenharmony_ci    wchar_t *returnVal = nullptr;
526f6603c60Sopenharmony_ci
527f6603c60Sopenharmony_ci    wcsncpy(paraDest, L"abc", wcslen(L"abc") + 1);
528f6603c60Sopenharmony_ci    wcsncpy(paraSrc, L"def", wcslen(L"def") + 1);
529f6603c60Sopenharmony_ci    returnVal = wcsncat(paraDest, paraSrc, wcslen(L"def"));
530f6603c60Sopenharmony_ci    LOGD("    wcscat returnVal:='%x'\n", returnVal);
531f6603c60Sopenharmony_ci    ASSERT_TRUE(0 == wcscmp(returnVal, L"abcdef")) << "ErrInfo: wcscat returnVal:='" << returnVal << "'";
532f6603c60Sopenharmony_ci}
533f6603c60Sopenharmony_ci
534f6603c60Sopenharmony_ci/**
535f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_WCSCHR_3200
536f6603c60Sopenharmony_ci* @tc.name       test wcschr api with wc in wcs
537f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
538f6603c60Sopenharmony_ci*/
539f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testWcschr3200, Function | MediumTest | Level1) {
540f6603c60Sopenharmony_ci    const wchar_t *paraWcs;
541f6603c60Sopenharmony_ci    wchar_t paraWc;
542f6603c60Sopenharmony_ci    wchar_t *returnVal;
543f6603c60Sopenharmony_ci
544f6603c60Sopenharmony_ci    paraWcs = L"abcdefa";
545f6603c60Sopenharmony_ci    paraWc = 'a';
546f6603c60Sopenharmony_ci    returnVal = wcschr((wchar_t *)paraWcs, paraWc);
547f6603c60Sopenharmony_ci    LOGD("    wcschr returnVal:='%x'\n", returnVal);
548f6603c60Sopenharmony_ci    ASSERT_TRUE(paraWcs == returnVal) << "ErrInfo: wcschr *returnVal:='" << *returnVal << "'";
549f6603c60Sopenharmony_ci}
550f6603c60Sopenharmony_ci
551f6603c60Sopenharmony_ci/**
552f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_WCSCHR_3300
553f6603c60Sopenharmony_ci* @tc.name       test wcschr api with wc not in wcs
554f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
555f6603c60Sopenharmony_ci*/
556f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testWcschr3300, Function | MediumTest | Level1) {
557f6603c60Sopenharmony_ci    const wchar_t *paraWcs;
558f6603c60Sopenharmony_ci    wchar_t paraWc;
559f6603c60Sopenharmony_ci    wchar_t *returnVal;
560f6603c60Sopenharmony_ci
561f6603c60Sopenharmony_ci    paraWcs = L"abcdef";
562f6603c60Sopenharmony_ci    paraWc = 'g';
563f6603c60Sopenharmony_ci    returnVal = wcschr((wchar_t *)paraWcs, paraWc);
564f6603c60Sopenharmony_ci    LOGD("    wcschr returnVal:='%x'\n", returnVal);
565f6603c60Sopenharmony_ci    ASSERT_TRUE(nullptr == returnVal) << "ErrInfo: wcschr returnVal:='" << returnVal << "'";
566f6603c60Sopenharmony_ci}
567f6603c60Sopenharmony_ci
568f6603c60Sopenharmony_ci/**
569f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_WCSRCHR_3400
570f6603c60Sopenharmony_ci* @tc.name       test wcsrchr api with wc in wcs
571f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
572f6603c60Sopenharmony_ci*/
573f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testWcsrchr3400, Function | MediumTest | Level1) {
574f6603c60Sopenharmony_ci    const wchar_t *paraWcs;
575f6603c60Sopenharmony_ci    wchar_t paraWc;
576f6603c60Sopenharmony_ci    wchar_t *returnVal;
577f6603c60Sopenharmony_ci
578f6603c60Sopenharmony_ci    paraWcs = L"abcdefa";
579f6603c60Sopenharmony_ci    paraWc = 'a';
580f6603c60Sopenharmony_ci    returnVal = wcsrchr((wchar_t *)paraWcs, paraWc);
581f6603c60Sopenharmony_ci    LOGD("    wcsrchr returnVal:='%x %x %x'\n", paraWcs, returnVal, (paraWcs + wcslen(L"abcdef")));
582f6603c60Sopenharmony_ci    ASSERT_TRUE((paraWcs + wcslen(L"abcdef")) == returnVal) << "ErrInfo: wcsrchr *returnVal:='" << *returnVal << "'";
583f6603c60Sopenharmony_ci}
584f6603c60Sopenharmony_ci
585f6603c60Sopenharmony_ci/**
586f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_WCSCHR_3500
587f6603c60Sopenharmony_ci* @tc.name       test wcsrchr api with wc not in wcs
588f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
589f6603c60Sopenharmony_ci*/
590f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testWcsrchr3500, Function | MediumTest | Level1) {
591f6603c60Sopenharmony_ci    const wchar_t *paraWcs;
592f6603c60Sopenharmony_ci    wchar_t paraWc;
593f6603c60Sopenharmony_ci    wchar_t *returnVal;
594f6603c60Sopenharmony_ci
595f6603c60Sopenharmony_ci    paraWcs = L"abcdef";
596f6603c60Sopenharmony_ci    paraWc = 'g';
597f6603c60Sopenharmony_ci    returnVal = wcsrchr((wchar_t *)paraWcs, paraWc);
598f6603c60Sopenharmony_ci    LOGD("    wcsrchr returnVal:='%x'\n", returnVal);
599f6603c60Sopenharmony_ci    ASSERT_TRUE(nullptr == returnVal) << "ErrInfo: wcsrchr returnVal:='" << returnVal << "'";
600f6603c60Sopenharmony_ci}
601f6603c60Sopenharmony_ci
602f6603c60Sopenharmony_ci/**
603f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_WCSDUP_3600
604f6603c60Sopenharmony_ci* @tc.name       test wcsdup api
605f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
606f6603c60Sopenharmony_ci*/
607f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testWcsdup3600, Function | MediumTest | Level1) {
608f6603c60Sopenharmony_ci    const wchar_t *paraWcs;
609f6603c60Sopenharmony_ci    wchar_t *returnVal;
610f6603c60Sopenharmony_ci
611f6603c60Sopenharmony_ci    paraWcs = L"abcdef";
612f6603c60Sopenharmony_ci    returnVal = wcsdup(paraWcs);
613f6603c60Sopenharmony_ci    LOGD("    wcsdup returnVal:='%x'\n", returnVal);
614f6603c60Sopenharmony_ci    ASSERT_TRUE(0 == wcscmp(returnVal, paraWcs)) << "ErrInfo: wcsdup returnVal:='" << returnVal << "'";
615f6603c60Sopenharmony_ci    free(returnVal);
616f6603c60Sopenharmony_ci}
617f6603c60Sopenharmony_ci
618f6603c60Sopenharmony_ci/**
619f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_WCSCOLL_3700
620f6603c60Sopenharmony_ci* @tc.name       test wcscoll api with para1 is equal to para2
621f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
622f6603c60Sopenharmony_ci*/
623f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testWcscoll3700, Function | MediumTest | Level1) {
624f6603c60Sopenharmony_ci    const wchar_t *paraWcs1;
625f6603c60Sopenharmony_ci    const wchar_t *paraWcs2;
626f6603c60Sopenharmony_ci    int returnVal;
627f6603c60Sopenharmony_ci
628f6603c60Sopenharmony_ci    paraWcs1 = L"abcdef";
629f6603c60Sopenharmony_ci    paraWcs2 = L"abcdef";
630f6603c60Sopenharmony_ci    returnVal = wcscoll(paraWcs1, paraWcs2);
631f6603c60Sopenharmony_ci    LOGD("    wcscoll returnVal:='%d'\n", returnVal);
632f6603c60Sopenharmony_ci    ASSERT_TRUE(0 == returnVal) << "ErrInfo: wcscoll returnVal:='" << returnVal << "'";
633f6603c60Sopenharmony_ci}
634f6603c60Sopenharmony_ci
635f6603c60Sopenharmony_ci/**
636f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_WCSCOLL_3800
637f6603c60Sopenharmony_ci* @tc.name       test wcscoll api with para1 is greater than para2
638f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
639f6603c60Sopenharmony_ci*/
640f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testWcscoll3800, Function | MediumTest | Level1) {
641f6603c60Sopenharmony_ci    const wchar_t *paraWcs1;
642f6603c60Sopenharmony_ci    const wchar_t *paraWcs2;
643f6603c60Sopenharmony_ci    int returnVal;
644f6603c60Sopenharmony_ci
645f6603c60Sopenharmony_ci    paraWcs1 = L"abcdefg";
646f6603c60Sopenharmony_ci    paraWcs2 = L"abcdef";
647f6603c60Sopenharmony_ci    returnVal = wcscoll(paraWcs1, paraWcs2);
648f6603c60Sopenharmony_ci    LOGD("    wcscoll returnVal:='%d'\n", returnVal);
649f6603c60Sopenharmony_ci    ASSERT_TRUE(returnVal > 0) << "ErrInfo: wcscoll returnVal:='" << returnVal << "'";
650f6603c60Sopenharmony_ci}
651f6603c60Sopenharmony_ci
652f6603c60Sopenharmony_ci/**
653f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_WCSCOLL_3900
654f6603c60Sopenharmony_ci* @tc.name       test wcscoll api with para1 is less than para2
655f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
656f6603c60Sopenharmony_ci*/
657f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testWcscoll3900, Function | MediumTest | Level1) {
658f6603c60Sopenharmony_ci    const wchar_t *paraWcs1;
659f6603c60Sopenharmony_ci    const wchar_t *paraWcs2;
660f6603c60Sopenharmony_ci    int returnVal;
661f6603c60Sopenharmony_ci
662f6603c60Sopenharmony_ci    paraWcs1 = L"abcde";
663f6603c60Sopenharmony_ci    paraWcs2 = L"abcdef";
664f6603c60Sopenharmony_ci    returnVal = wcscoll(paraWcs1, paraWcs2);
665f6603c60Sopenharmony_ci    LOGD("    wcscoll returnVal:='%d'\n", returnVal);
666f6603c60Sopenharmony_ci    ASSERT_TRUE(returnVal < 0) << "ErrInfo: wcscoll returnVal:='" << returnVal << "'";
667f6603c60Sopenharmony_ci}
668f6603c60Sopenharmony_ci
669f6603c60Sopenharmony_ci/**
670f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_WCSCOLL_L_4000
671f6603c60Sopenharmony_ci* @tc.name       test wcscoll_l api with para1 is equal to para2
672f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
673f6603c60Sopenharmony_ci*/
674f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testWcscollL4000, Function | MediumTest | Level1) {
675f6603c60Sopenharmony_ci    const wchar_t *paraWcs1;
676f6603c60Sopenharmony_ci    const wchar_t *paraWcs2;
677f6603c60Sopenharmony_ci    int returnVal;
678f6603c60Sopenharmony_ci
679f6603c60Sopenharmony_ci    paraWcs1 = L"abcdef";
680f6603c60Sopenharmony_ci    paraWcs2 = L"abcdef";
681f6603c60Sopenharmony_ci    returnVal = wcscoll_l(paraWcs1, paraWcs2, g_ausoaLocale);
682f6603c60Sopenharmony_ci    LOGD("    wcscoll_l returnVal:='%d'\n", returnVal);
683f6603c60Sopenharmony_ci    ASSERT_TRUE(0 == returnVal) << "ErrInfo: wcscoll_l returnVal:='" << returnVal << "'";
684f6603c60Sopenharmony_ci}
685f6603c60Sopenharmony_ci
686f6603c60Sopenharmony_ci/**
687f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_WCSCOLL_L_4100
688f6603c60Sopenharmony_ci* @tc.name       test wcscoll_l api with para1 is greater than para2
689f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
690f6603c60Sopenharmony_ci*/
691f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testWcscollL4100, Function | MediumTest | Level1) {
692f6603c60Sopenharmony_ci    const wchar_t *paraWcs1;
693f6603c60Sopenharmony_ci    const wchar_t *paraWcs2;
694f6603c60Sopenharmony_ci    int returnVal;
695f6603c60Sopenharmony_ci
696f6603c60Sopenharmony_ci    paraWcs1 = L"abcdefg";
697f6603c60Sopenharmony_ci    paraWcs2 = L"abcdef";
698f6603c60Sopenharmony_ci    returnVal = wcscoll_l(paraWcs1, paraWcs2, g_ausoaLocale);
699f6603c60Sopenharmony_ci    LOGD("    wcscoll_l returnVal:='%d'\n", returnVal);
700f6603c60Sopenharmony_ci    ASSERT_TRUE(returnVal > 0) << "ErrInfo: wcscoll_l returnVal:='" << returnVal << "'";
701f6603c60Sopenharmony_ci}
702f6603c60Sopenharmony_ci
703f6603c60Sopenharmony_ci/**
704f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_WCSCOLL_L_4200
705f6603c60Sopenharmony_ci* @tc.name       test wcscoll_l api with para1 is less than para2
706f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
707f6603c60Sopenharmony_ci*/
708f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testWcscollL4200, Function | MediumTest | Level1) {
709f6603c60Sopenharmony_ci    const wchar_t *paraWcs1;
710f6603c60Sopenharmony_ci    const wchar_t *paraWcs2;
711f6603c60Sopenharmony_ci    int returnVal;
712f6603c60Sopenharmony_ci
713f6603c60Sopenharmony_ci    paraWcs1 = L"abcde";
714f6603c60Sopenharmony_ci    paraWcs2 = L"abcdef";
715f6603c60Sopenharmony_ci    returnVal = wcscoll_l(paraWcs1, paraWcs2, g_ausoaLocale);
716f6603c60Sopenharmony_ci    LOGD("    wcscoll_l returnVal:='%d'\n", returnVal);
717f6603c60Sopenharmony_ci    ASSERT_TRUE(returnVal < 0) << "ErrInfo: wcscoll_l returnVal:='" << returnVal << "'";
718f6603c60Sopenharmony_ci}
719f6603c60Sopenharmony_ci
720f6603c60Sopenharmony_ci/**
721f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_WCSCSPN_4300
722f6603c60Sopenharmony_ci* @tc.name       test wcscspn api with para2 is included in para1
723f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
724f6603c60Sopenharmony_ci*/
725f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testWcscspn4300, Function | MediumTest | Level1) {
726f6603c60Sopenharmony_ci    const wchar_t *paraWcs;
727f6603c60Sopenharmony_ci    const wchar_t *paraRjct;
728f6603c60Sopenharmony_ci    size_t returnVal;
729f6603c60Sopenharmony_ci
730f6603c60Sopenharmony_ci    paraWcs = L"abcdef";
731f6603c60Sopenharmony_ci    paraRjct = L"def";
732f6603c60Sopenharmony_ci    returnVal = wcscspn(paraWcs, paraRjct);
733f6603c60Sopenharmony_ci    LOGD("    wcscspn returnVal:='%d'\n", returnVal);
734f6603c60Sopenharmony_ci    ASSERT_TRUE(3 == returnVal) << "ErrInfo: wcscspn returnVal:='" << returnVal << "'";
735f6603c60Sopenharmony_ci}
736f6603c60Sopenharmony_ci
737f6603c60Sopenharmony_ci/**
738f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_WCSCSPN_4400
739f6603c60Sopenharmony_ci* @tc.name       test wcscspn api with para2 is not included in para1
740f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
741f6603c60Sopenharmony_ci*/
742f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testWcscspn4400, Function | MediumTest | Level1) {
743f6603c60Sopenharmony_ci    const wchar_t *paraWcs;
744f6603c60Sopenharmony_ci    const wchar_t *paraRjct;
745f6603c60Sopenharmony_ci    size_t returnVal;
746f6603c60Sopenharmony_ci
747f6603c60Sopenharmony_ci    paraWcs = L"abcdef";
748f6603c60Sopenharmony_ci    paraRjct = L"ghi";
749f6603c60Sopenharmony_ci    returnVal = wcscspn(paraWcs, paraRjct);
750f6603c60Sopenharmony_ci    LOGD("    wcscspn returnVal:='%d'\n", returnVal);
751f6603c60Sopenharmony_ci    ASSERT_TRUE(6 == returnVal) << "ErrInfo: wcscspn returnVal:='" << returnVal << "'";
752f6603c60Sopenharmony_ci}
753f6603c60Sopenharmony_ci
754f6603c60Sopenharmony_ci/**
755f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_WCSSPN_4500
756f6603c60Sopenharmony_ci* @tc.name       test wcsspn api with para2 is included in para1
757f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
758f6603c60Sopenharmony_ci*/
759f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testWcsspn4500, Function | MediumTest | Level1) {
760f6603c60Sopenharmony_ci    const wchar_t *paraWcs;
761f6603c60Sopenharmony_ci    const wchar_t *paraAcpt;
762f6603c60Sopenharmony_ci    size_t returnVal;
763f6603c60Sopenharmony_ci
764f6603c60Sopenharmony_ci    paraWcs = L"abcdef";
765f6603c60Sopenharmony_ci    paraAcpt = L"def";
766f6603c60Sopenharmony_ci    returnVal = wcsspn(paraWcs, paraAcpt);
767f6603c60Sopenharmony_ci    LOGD("    wcsspn returnVal:='%d'\n", returnVal);
768f6603c60Sopenharmony_ci    ASSERT_TRUE(0 == returnVal) << "ErrInfo: wcsspn returnVal:='" << returnVal << "'";
769f6603c60Sopenharmony_ci}
770f6603c60Sopenharmony_ci
771f6603c60Sopenharmony_ci/**
772f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_WCSSPN_4600
773f6603c60Sopenharmony_ci* @tc.name       test wcscspn api with para2 is not included in para1
774f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
775f6603c60Sopenharmony_ci*/
776f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testWcsspn4600, Function | MediumTest | Level1) {
777f6603c60Sopenharmony_ci    const wchar_t *paraWcs;
778f6603c60Sopenharmony_ci    const wchar_t *paraAcpt;
779f6603c60Sopenharmony_ci    size_t returnVal;
780f6603c60Sopenharmony_ci
781f6603c60Sopenharmony_ci    paraWcs = L"abcdef";
782f6603c60Sopenharmony_ci    paraAcpt = L"ghi";
783f6603c60Sopenharmony_ci    returnVal = wcsspn(paraWcs, paraAcpt);
784f6603c60Sopenharmony_ci    LOGD("    wcsspn returnVal:='%d'\n", returnVal);
785f6603c60Sopenharmony_ci    ASSERT_TRUE(0 == returnVal) << "ErrInfo: wcsspn returnVal:='" << returnVal << "'";
786f6603c60Sopenharmony_ci}
787f6603c60Sopenharmony_ci
788f6603c60Sopenharmony_ci/**
789f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_WCSPBRK_4700
790f6603c60Sopenharmony_ci* @tc.name       test wcspbrk api with para2 is included in para1
791f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
792f6603c60Sopenharmony_ci*/
793f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testWcspbrk4700, Function | MediumTest | Level1) {
794f6603c60Sopenharmony_ci    const wchar_t *paraWcs;
795f6603c60Sopenharmony_ci    const wchar_t *paraAcpt;
796f6603c60Sopenharmony_ci    wchar_t *returnVal;
797f6603c60Sopenharmony_ci
798f6603c60Sopenharmony_ci    paraWcs = L"abcdef";
799f6603c60Sopenharmony_ci    paraAcpt = L"def";
800f6603c60Sopenharmony_ci    returnVal = wcspbrk((wchar_t *)paraWcs, paraAcpt);
801f6603c60Sopenharmony_ci    LOGD("    wcspbrk returnVal:='%x'\n", returnVal);
802f6603c60Sopenharmony_ci    ASSERT_TRUE((paraWcs + wcslen(L"abc")) == returnVal) << "ErrInfo: wcspbrk returnVal:='" << returnVal << "'";
803f6603c60Sopenharmony_ci}
804f6603c60Sopenharmony_ci
805f6603c60Sopenharmony_ci/**
806f6603c60Sopenharmony_ci* @tc.number     SUB_KERNEL_UTIL_STRINGOPER_WCSPBRK_4800
807f6603c60Sopenharmony_ci* @tc.name       test wcspbrk api with para2 is not included in para1
808f6603c60Sopenharmony_ci* @tc.desc       [C- SOFTWARE -0200]
809f6603c60Sopenharmony_ci*/
810f6603c60Sopenharmony_ciHWTEST_F(ActsUtilStringOperApiTest, testWcspbrk4800, Function | MediumTest | Level1) {
811f6603c60Sopenharmony_ci    const wchar_t *paraWcs;
812f6603c60Sopenharmony_ci    const wchar_t *paraAcpt;
813f6603c60Sopenharmony_ci    wchar_t *returnVal;
814f6603c60Sopenharmony_ci
815f6603c60Sopenharmony_ci    paraWcs = L"abcdef";
816f6603c60Sopenharmony_ci    paraAcpt = L"ghi";
817f6603c60Sopenharmony_ci    returnVal = wcspbrk((wchar_t *)paraWcs, paraAcpt);
818f6603c60Sopenharmony_ci    LOGD("    wcspbrk returnVal:='%x'\n", returnVal);
819f6603c60Sopenharmony_ci    ASSERT_TRUE(nullptr == returnVal) << "ErrInfo: wcspbrk returnVal:='" << returnVal << "'";
820f6603c60Sopenharmony_ci}
821