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 <stdio.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_SSCANF_0100
24f6603c60Sopenharmony_ci * @tc.name   sscanf basic function test of float
25f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
26f6603c60Sopenharmony_ci */
27f6603c60Sopenharmony_ciHWTEST_F(IoTest, testSscanfFloat, Function | MediumTest | Level1)
28f6603c60Sopenharmony_ci{
29f6603c60Sopenharmony_ci    float f;
30f6603c60Sopenharmony_ci    int ret = sscanf("1.196532544", "%f", &f);
31f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
32f6603c60Sopenharmony_ci    EXPECT_FLOAT_EQ(f, 1.1965325);
33f6603c60Sopenharmony_ci
34f6603c60Sopenharmony_ci    long double f1;
35f6603c60Sopenharmony_ci    ret = sscanf("1.196532544", "%Lf", &f1);
36f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
37f6603c60Sopenharmony_ci    EXPECT_FLOAT_EQ(f1, 1.1965325);
38f6603c60Sopenharmony_ci
39f6603c60Sopenharmony_ci    ret = sscanf("1.66666", "%6f", &f);
40f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
41f6603c60Sopenharmony_ci    EXPECT_FLOAT_EQ(f, 1.6666);
42f6603c60Sopenharmony_ci
43f6603c60Sopenharmony_ci    ret = sscanf("1.66666", "%8f", &f);
44f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
45f6603c60Sopenharmony_ci    EXPECT_FLOAT_EQ(f, 1.66666);
46f6603c60Sopenharmony_ci}
47f6603c60Sopenharmony_ci
48f6603c60Sopenharmony_ci /**
49f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_SSCANF_0200
50f6603c60Sopenharmony_ci * @tc.name   sscanf basic function test of float with format E
51f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
52f6603c60Sopenharmony_ci */
53f6603c60Sopenharmony_ciHWTEST_F(IoTest, testSscanfFloatE, Function | MediumTest | Level1)
54f6603c60Sopenharmony_ci{
55f6603c60Sopenharmony_ci    float f;
56f6603c60Sopenharmony_ci    long double f1;
57f6603c60Sopenharmony_ci    int ret = sscanf("1.100000e+00", "%e", &f);
58f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
59f6603c60Sopenharmony_ci    EXPECT_FLOAT_EQ(f, 1.100000);
60f6603c60Sopenharmony_ci
61f6603c60Sopenharmony_ci    ret = sscanf("1.100000e+00", "%Le", &f1);
62f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
63f6603c60Sopenharmony_ci    EXPECT_FLOAT_EQ(f1, 1.100000);
64f6603c60Sopenharmony_ci
65f6603c60Sopenharmony_ci    ret = sscanf("1.100000e+00", "%5e", &f);
66f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
67f6603c60Sopenharmony_ci    EXPECT_FLOAT_EQ(f, 1.100000);
68f6603c60Sopenharmony_ci
69f6603c60Sopenharmony_ci    ret = sscanf("1.100000E+00", "%E", &f);
70f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
71f6603c60Sopenharmony_ci    EXPECT_FLOAT_EQ(f, 1.100000);
72f6603c60Sopenharmony_ci
73f6603c60Sopenharmony_ci    ret = sscanf("1.100000E+00", "%LE", &f1);
74f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
75f6603c60Sopenharmony_ci    EXPECT_FLOAT_EQ(f1, 1.100000);
76f6603c60Sopenharmony_ci
77f6603c60Sopenharmony_ci    ret = sscanf("1.100000E+00", "%5E", &f);
78f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
79f6603c60Sopenharmony_ci    EXPECT_FLOAT_EQ(f, 1.100000);
80f6603c60Sopenharmony_ci}
81f6603c60Sopenharmony_ci
82f6603c60Sopenharmony_ci /**
83f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_SSCANF_0300
84f6603c60Sopenharmony_ci * @tc.name   sscanf basic function test of float with format G
85f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
86f6603c60Sopenharmony_ci */
87f6603c60Sopenharmony_ciHWTEST_F(IoTest, testSscanfFloatG, Function | MediumTest | Level1)
88f6603c60Sopenharmony_ci{
89f6603c60Sopenharmony_ci    float f;
90f6603c60Sopenharmony_ci    long double f1;
91f6603c60Sopenharmony_ci    int ret = sscanf("1.23e-07", "%g", &f);
92f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
93f6603c60Sopenharmony_ci    EXPECT_FLOAT_EQ(f, 0.000000123);
94f6603c60Sopenharmony_ci
95f6603c60Sopenharmony_ci    ret = sscanf("1.23e-07", "%Lg", &f1);
96f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
97f6603c60Sopenharmony_ci    EXPECT_FLOAT_EQ(f1, 0.000000123);
98f6603c60Sopenharmony_ci
99f6603c60Sopenharmony_ci    ret = sscanf("1.23E-07", "%G", &f);
100f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
101f6603c60Sopenharmony_ci    EXPECT_FLOAT_EQ(f, 1.2300001e-07);
102f6603c60Sopenharmony_ci
103f6603c60Sopenharmony_ci    ret = sscanf("1.23E-07", "%LG", &f1);
104f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
105f6603c60Sopenharmony_ci    EXPECT_FLOAT_EQ(f1, 1.2300001e-07);
106f6603c60Sopenharmony_ci}
107f6603c60Sopenharmony_ci
108f6603c60Sopenharmony_ci /**
109f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_SSCANF_0400
110f6603c60Sopenharmony_ci * @tc.name   sscanf basic function test of float with format A
111f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
112f6603c60Sopenharmony_ci */
113f6603c60Sopenharmony_ciHWTEST_F(IoTest, testSscanfFloatA, Function | MediumTest | Level1)
114f6603c60Sopenharmony_ci{
115f6603c60Sopenharmony_ci    float f;
116f6603c60Sopenharmony_ci    long double f1;
117f6603c60Sopenharmony_ci    int ret = sscanf("0x1.199999999999ap+0", "%a", &f);
118f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
119f6603c60Sopenharmony_ci    EXPECT_FLOAT_EQ(f, 1.1);
120f6603c60Sopenharmony_ci
121f6603c60Sopenharmony_ci    ret = sscanf("0x1.199999999999ap+0", "%La", &f1);
122f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
123f6603c60Sopenharmony_ci    EXPECT_FLOAT_EQ(f1, 1.1);
124f6603c60Sopenharmony_ci
125f6603c60Sopenharmony_ci    ret = sscanf("0x1.199999999999ap+0", "%5a", &f);
126f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
127f6603c60Sopenharmony_ci    EXPECT_FLOAT_EQ(f, 1.0625);
128f6603c60Sopenharmony_ci
129f6603c60Sopenharmony_ci    ret = sscanf("0X1.199999999999AP+0", "%A", &f);
130f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
131f6603c60Sopenharmony_ci    EXPECT_FLOAT_EQ(f, 1.1);
132f6603c60Sopenharmony_ci
133f6603c60Sopenharmony_ci    ret = sscanf("0X1.199999999999AP+0", "%LA", &f1);
134f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
135f6603c60Sopenharmony_ci    EXPECT_FLOAT_EQ(f1, 1.1);
136f6603c60Sopenharmony_ci
137f6603c60Sopenharmony_ci    ret = sscanf("0X1.199999999999AP+0", "%5A", &f);
138f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
139f6603c60Sopenharmony_ci    EXPECT_FLOAT_EQ(f, 1.0625);
140f6603c60Sopenharmony_ci}
141f6603c60Sopenharmony_ci
142f6603c60Sopenharmony_ci /**
143f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_SSCANF_0500
144f6603c60Sopenharmony_ci * @tc.name   sscanf basic function test of char
145f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
146f6603c60Sopenharmony_ci */
147f6603c60Sopenharmony_ciHWTEST_F(IoTest, testSscanfChar, Function | MediumTest | Level1)
148f6603c60Sopenharmony_ci{
149f6603c60Sopenharmony_ci    char c, c1;
150f6603c60Sopenharmony_ci    int ret = sscanf("a", "%c", &c);
151f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
152f6603c60Sopenharmony_ci    EXPECT_EQ(c, 'a');
153f6603c60Sopenharmony_ci
154f6603c60Sopenharmony_ci    char c2[10] = {0};
155f6603c60Sopenharmony_ci    ret = sscanf("helloworld", "%5c", c2);
156f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
157f6603c60Sopenharmony_ci    EXPECT_EQ(c2[0], 'h');
158f6603c60Sopenharmony_ci    EXPECT_EQ(c2[1], 'e');
159f6603c60Sopenharmony_ci    EXPECT_EQ(c2[2], 'l');
160f6603c60Sopenharmony_ci    EXPECT_EQ(c2[3], 'l');
161f6603c60Sopenharmony_ci    EXPECT_EQ(c2[4], 'o');
162f6603c60Sopenharmony_ci
163f6603c60Sopenharmony_ci    ret = sscanf("(a) and |b|", "(%c) and |%c%*c|", &c, &c1);
164f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 2) << "> sscanf fail, errno = " << errno;
165f6603c60Sopenharmony_ci    EXPECT_EQ(c, 'a');
166f6603c60Sopenharmony_ci    EXPECT_EQ(c1, 'b');
167f6603c60Sopenharmony_ci}
168f6603c60Sopenharmony_ci
169f6603c60Sopenharmony_ci /**
170f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_SSCANF_0600
171f6603c60Sopenharmony_ci * @tc.name   sscanf basic function test of string
172f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
173f6603c60Sopenharmony_ci */
174f6603c60Sopenharmony_ciHWTEST_F(IoTest, testSscanfString, Function | MediumTest | Level1)
175f6603c60Sopenharmony_ci{
176f6603c60Sopenharmony_ci    char str[50] = {0};
177f6603c60Sopenharmony_ci    int ret = sscanf("hello", "%s", str);
178f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
179f6603c60Sopenharmony_ci    EXPECT_STREQ(str, "hello");
180f6603c60Sopenharmony_ci
181f6603c60Sopenharmony_ci    ret = sscanf("hello", "%3s", str);
182f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
183f6603c60Sopenharmony_ci    EXPECT_STREQ(str, "hel");
184f6603c60Sopenharmony_ci
185f6603c60Sopenharmony_ci    ret = sscanf("hellowo", "%6s", str);
186f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
187f6603c60Sopenharmony_ci    EXPECT_STREQ(str, "hellow");
188f6603c60Sopenharmony_ci
189f6603c60Sopenharmony_ci    ret = sscanf("hello world", "%*s%s", str);
190f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
191f6603c60Sopenharmony_ci    EXPECT_STREQ(str, "world");
192f6603c60Sopenharmony_ci}
193f6603c60Sopenharmony_ci
194f6603c60Sopenharmony_ci /**
195f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_SSCANF_0700
196f6603c60Sopenharmony_ci * @tc.name   sscanf basic function test of int
197f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
198f6603c60Sopenharmony_ci */
199f6603c60Sopenharmony_ciHWTEST_F(IoTest, testSscanfIntD, Function | MediumTest | Level1)
200f6603c60Sopenharmony_ci{
201f6603c60Sopenharmony_ci    int i;
202f6603c60Sopenharmony_ci    int ret = sscanf("-2147483648", "%d", &i);
203f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
204f6603c60Sopenharmony_ci    EXPECT_EQ(i, -2147483648);
205f6603c60Sopenharmony_ci
206f6603c60Sopenharmony_ci    ret = sscanf("2147483647", "%d", &i);
207f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
208f6603c60Sopenharmony_ci    EXPECT_EQ(i, 2147483647);
209f6603c60Sopenharmony_ci
210f6603c60Sopenharmony_ci    ret = sscanf("2147483647", "%15d", &i);
211f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
212f6603c60Sopenharmony_ci    EXPECT_EQ(i, 2147483647);
213f6603c60Sopenharmony_ci
214f6603c60Sopenharmony_ci    ret = sscanf("2147483647", "%8d", &i);
215f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
216f6603c60Sopenharmony_ci    EXPECT_EQ(i, 21474836);
217f6603c60Sopenharmony_ci
218f6603c60Sopenharmony_ci    unsigned intU;
219f6603c60Sopenharmony_ci    ret = sscanf("0", "%u", &intU);
220f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
221f6603c60Sopenharmony_ci    EXPECT_EQ(intU, 0U);
222f6603c60Sopenharmony_ci
223f6603c60Sopenharmony_ci    ret = sscanf("4294967295", "%u", &intU);
224f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
225f6603c60Sopenharmony_ci    EXPECT_EQ(intU, 4294967295U);
226f6603c60Sopenharmony_ci
227f6603c60Sopenharmony_ci    ret = sscanf("4294967295", "%15u", &intU);
228f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
229f6603c60Sopenharmony_ci    EXPECT_EQ(intU, 4294967295U);
230f6603c60Sopenharmony_ci
231f6603c60Sopenharmony_ci    ret = sscanf("4294967295", "%5u", &intU);
232f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
233f6603c60Sopenharmony_ci    EXPECT_EQ(intU, 42949U);
234f6603c60Sopenharmony_ci}
235f6603c60Sopenharmony_ci
236f6603c60Sopenharmony_ci /**
237f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_SSCANF_0800
238f6603c60Sopenharmony_ci * @tc.name   sscanf basic function test of signed char
239f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
240f6603c60Sopenharmony_ci */
241f6603c60Sopenharmony_ciHWTEST_F(IoTest, testSscanfIntHhd, Function | MediumTest | Level1)
242f6603c60Sopenharmony_ci{
243f6603c60Sopenharmony_ci    signed char intHhd;
244f6603c60Sopenharmony_ci    int ret = sscanf("-128", "%hhd", &intHhd);
245f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
246f6603c60Sopenharmony_ci    EXPECT_EQ(intHhd, -128);
247f6603c60Sopenharmony_ci
248f6603c60Sopenharmony_ci    ret = sscanf("127", "%hhd", &intHhd);
249f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
250f6603c60Sopenharmony_ci    EXPECT_EQ(intHhd, 127);
251f6603c60Sopenharmony_ci
252f6603c60Sopenharmony_ci    ret = sscanf("127", "%5hhd", &intHhd);
253f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
254f6603c60Sopenharmony_ci    EXPECT_EQ(intHhd, 127);
255f6603c60Sopenharmony_ci
256f6603c60Sopenharmony_ci    ret = sscanf("127", "%2hhd", &intHhd);
257f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
258f6603c60Sopenharmony_ci    EXPECT_EQ(intHhd, 12);
259f6603c60Sopenharmony_ci
260f6603c60Sopenharmony_ci    unsigned char intHhu;
261f6603c60Sopenharmony_ci    ret = sscanf("0", "%hhu", &intHhu);
262f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
263f6603c60Sopenharmony_ci    EXPECT_EQ(intHhu, 0);
264f6603c60Sopenharmony_ci
265f6603c60Sopenharmony_ci    ret = sscanf("255", "%hhu", &intHhu);
266f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
267f6603c60Sopenharmony_ci    EXPECT_EQ(intHhu, 255);
268f6603c60Sopenharmony_ci
269f6603c60Sopenharmony_ci    ret = sscanf("255", "%5hhu", &intHhu);
270f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
271f6603c60Sopenharmony_ci    EXPECT_EQ(intHhu, 255);
272f6603c60Sopenharmony_ci
273f6603c60Sopenharmony_ci    ret = sscanf("255", "%2hhu", &intHhu);
274f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
275f6603c60Sopenharmony_ci    EXPECT_EQ(intHhu, 25);
276f6603c60Sopenharmony_ci}
277f6603c60Sopenharmony_ci
278f6603c60Sopenharmony_ci /**
279f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_SSCANF_0900
280f6603c60Sopenharmony_ci * @tc.name   sscanf basic function test of short int
281f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
282f6603c60Sopenharmony_ci */
283f6603c60Sopenharmony_ciHWTEST_F(IoTest, testSscanfIntHd, Function | MediumTest | Level1)
284f6603c60Sopenharmony_ci{
285f6603c60Sopenharmony_ci    short intHd;
286f6603c60Sopenharmony_ci    int ret = sscanf("32767", "%hd", &intHd);
287f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
288f6603c60Sopenharmony_ci    EXPECT_EQ(intHd, 32767);
289f6603c60Sopenharmony_ci
290f6603c60Sopenharmony_ci    ret = sscanf("-32768", "%hd", &intHd);
291f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
292f6603c60Sopenharmony_ci    EXPECT_EQ(intHd, -32768);
293f6603c60Sopenharmony_ci
294f6603c60Sopenharmony_ci    ret = sscanf("-32768", "%10hd", &intHd);
295f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
296f6603c60Sopenharmony_ci    EXPECT_EQ(intHd, -32768);
297f6603c60Sopenharmony_ci
298f6603c60Sopenharmony_ci    ret = sscanf("-32768", "%5hd", &intHd);
299f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
300f6603c60Sopenharmony_ci    EXPECT_EQ(intHd, -3276);
301f6603c60Sopenharmony_ci
302f6603c60Sopenharmony_ci    unsigned short intHu;
303f6603c60Sopenharmony_ci    ret = sscanf("0", "%hu", &intHu);
304f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
305f6603c60Sopenharmony_ci    EXPECT_EQ(intHu, 0);
306f6603c60Sopenharmony_ci
307f6603c60Sopenharmony_ci    ret = sscanf("65535", "%hu", &intHu);
308f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
309f6603c60Sopenharmony_ci    EXPECT_EQ(intHu, 65535);
310f6603c60Sopenharmony_ci
311f6603c60Sopenharmony_ci    ret = sscanf("65535", "%8hu", &intHu);
312f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
313f6603c60Sopenharmony_ci    EXPECT_EQ(intHu, 65535);
314f6603c60Sopenharmony_ci
315f6603c60Sopenharmony_ci    ret = sscanf("65535", "%3hu", &intHu);
316f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
317f6603c60Sopenharmony_ci    EXPECT_EQ(intHu, 655);
318f6603c60Sopenharmony_ci}
319f6603c60Sopenharmony_ci
320f6603c60Sopenharmony_ci /**
321f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_SSCANF_1000
322f6603c60Sopenharmony_ci * @tc.name   sscanf basic function test of long int
323f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
324f6603c60Sopenharmony_ci */
325f6603c60Sopenharmony_ciHWTEST_F(IoTest, testSscanfIntLd, Function | MediumTest | Level1)
326f6603c60Sopenharmony_ci{
327f6603c60Sopenharmony_ci    long intL;
328f6603c60Sopenharmony_ci    int ret = sscanf("-2147483648", "%ld", &intL);
329f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
330f6603c60Sopenharmony_ci    EXPECT_EQ(intL, -2147483648);
331f6603c60Sopenharmony_ci
332f6603c60Sopenharmony_ci    ret = sscanf("2147483647", "%ld", &intL);
333f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
334f6603c60Sopenharmony_ci    EXPECT_EQ(intL, 2147483647);
335f6603c60Sopenharmony_ci
336f6603c60Sopenharmony_ci    ret = sscanf("2147483647", "%15ld", &intL);
337f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
338f6603c60Sopenharmony_ci    EXPECT_EQ(intL, 2147483647);
339f6603c60Sopenharmony_ci
340f6603c60Sopenharmony_ci    ret = sscanf("2147483647", "%5ld", &intL);
341f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
342f6603c60Sopenharmony_ci    EXPECT_EQ(intL, 21474);
343f6603c60Sopenharmony_ci
344f6603c60Sopenharmony_ci    unsigned long intUl;
345f6603c60Sopenharmony_ci    ret = sscanf("0", "%lu", &intUl);
346f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
347f6603c60Sopenharmony_ci    EXPECT_EQ(intUl, 0UL);
348f6603c60Sopenharmony_ci
349f6603c60Sopenharmony_ci    ret = sscanf("4294967295   ", "%lu", &intUl);
350f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
351f6603c60Sopenharmony_ci    EXPECT_EQ(intUl, 4294967295   );
352f6603c60Sopenharmony_ci
353f6603c60Sopenharmony_ci    ret = sscanf("4294967295   ", "%15lu", &intUl);
354f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
355f6603c60Sopenharmony_ci    EXPECT_EQ(intUl, 4294967295   );
356f6603c60Sopenharmony_ci
357f6603c60Sopenharmony_ci    ret = sscanf("4294967295   ", "%5lu", &intUl);
358f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
359f6603c60Sopenharmony_ci    EXPECT_EQ(intUl, 42949UL);
360f6603c60Sopenharmony_ci}
361f6603c60Sopenharmony_ci
362f6603c60Sopenharmony_ci /**
363f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_SSCANF_1100
364f6603c60Sopenharmony_ci * @tc.name   sscanf basic function test of long long int
365f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
366f6603c60Sopenharmony_ci */
367f6603c60Sopenharmony_ciHWTEST_F(IoTest, testSscanfIntLld, Function | MediumTest | Level1)
368f6603c60Sopenharmony_ci{
369f6603c60Sopenharmony_ci    long long intLl;
370f6603c60Sopenharmony_ci    int ret = sscanf("-9223372036854775807", "%lld", &intLl);
371f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
372f6603c60Sopenharmony_ci    EXPECT_EQ(intLl, -9223372036854775807);
373f6603c60Sopenharmony_ci
374f6603c60Sopenharmony_ci    ret = sscanf("9223372036854775807", "%lld", &intLl);
375f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
376f6603c60Sopenharmony_ci    EXPECT_EQ(intLl, 9223372036854775807);
377f6603c60Sopenharmony_ci
378f6603c60Sopenharmony_ci    ret = sscanf("9223372036854775807", "%25lld", &intLl);
379f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
380f6603c60Sopenharmony_ci    EXPECT_EQ(intLl, 9223372036854775807);
381f6603c60Sopenharmony_ci
382f6603c60Sopenharmony_ci    ret = sscanf("9223372036854775807", "%5lld", &intLl);
383f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
384f6603c60Sopenharmony_ci    EXPECT_EQ(intLl, 92233);
385f6603c60Sopenharmony_ci
386f6603c60Sopenharmony_ci    unsigned long long intUll;
387f6603c60Sopenharmony_ci    ret = sscanf("0", "%llu", &intUll);
388f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
389f6603c60Sopenharmony_ci    EXPECT_EQ(intUll, 0ULL);
390f6603c60Sopenharmony_ci
391f6603c60Sopenharmony_ci    ret = sscanf("18446744073709551615", "%llu", &intUll);
392f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
393f6603c60Sopenharmony_ci    EXPECT_EQ(intUll, 18446744073709551615ULL);
394f6603c60Sopenharmony_ci
395f6603c60Sopenharmony_ci    ret = sscanf("18446744073709551615", "%25llu", &intUll);
396f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
397f6603c60Sopenharmony_ci    EXPECT_EQ(intUll, 18446744073709551615ULL);
398f6603c60Sopenharmony_ci
399f6603c60Sopenharmony_ci    ret = sscanf("18446744073709551615", "%5llu", &intUll);
400f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
401f6603c60Sopenharmony_ci    EXPECT_EQ(intUll, 18446ULL);
402f6603c60Sopenharmony_ci}
403f6603c60Sopenharmony_ci
404f6603c60Sopenharmony_ci /**
405f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_SSCANF_1200
406f6603c60Sopenharmony_ci * @tc.name   sscanf basic function test of intmax_t and uintmax_t
407f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
408f6603c60Sopenharmony_ci */
409f6603c60Sopenharmony_ciHWTEST_F(IoTest, testSscanfIntMax, Function | MediumTest | Level1)
410f6603c60Sopenharmony_ci{
411f6603c60Sopenharmony_ci    intmax_t intMax;
412f6603c60Sopenharmony_ci    int ret = sscanf("-9223372036854775807", "%jd", &intMax);
413f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
414f6603c60Sopenharmony_ci    EXPECT_EQ(intMax, -9223372036854775807);
415f6603c60Sopenharmony_ci
416f6603c60Sopenharmony_ci    ret = sscanf("9223372036854775807", "%jd", &intMax);
417f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
418f6603c60Sopenharmony_ci    EXPECT_EQ(intMax, 9223372036854775807);
419f6603c60Sopenharmony_ci
420f6603c60Sopenharmony_ci    ret = sscanf("9223372036854775807", "%25jd", &intMax);
421f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
422f6603c60Sopenharmony_ci    EXPECT_EQ(intMax, 9223372036854775807);
423f6603c60Sopenharmony_ci
424f6603c60Sopenharmony_ci    ret = sscanf("9223372036854775807", "%5jd", &intMax);
425f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
426f6603c60Sopenharmony_ci    EXPECT_EQ(intMax, 92233);
427f6603c60Sopenharmony_ci
428f6603c60Sopenharmony_ci    uintmax_t intUmax;
429f6603c60Sopenharmony_ci    ret = sscanf("0", "%jd", &intUmax);
430f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
431f6603c60Sopenharmony_ci    EXPECT_EQ(intUmax, 0U);
432f6603c60Sopenharmony_ci
433f6603c60Sopenharmony_ci    ret = sscanf("18446744073709551615", "%jd", &intUmax);
434f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
435f6603c60Sopenharmony_ci    EXPECT_EQ(intUmax, 18446744073709551615ULL);
436f6603c60Sopenharmony_ci
437f6603c60Sopenharmony_ci    ret = sscanf("18446744073709551615", "%25jd", &intUmax);
438f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
439f6603c60Sopenharmony_ci    EXPECT_EQ(intUmax, 18446744073709551615ULL);
440f6603c60Sopenharmony_ci
441f6603c60Sopenharmony_ci    ret = sscanf("18446744073709551615", "%5jd", &intUmax);
442f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
443f6603c60Sopenharmony_ci    EXPECT_EQ(intUmax, 18446U);
444f6603c60Sopenharmony_ci}
445f6603c60Sopenharmony_ci
446f6603c60Sopenharmony_ci/**
447f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_SSCANF_1300
448f6603c60Sopenharmony_ci * @tc.name   sscanf basic function test of size_t
449f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
450f6603c60Sopenharmony_ci */
451f6603c60Sopenharmony_ciHWTEST_F(IoTest, testSscanfSizeT, Function | MediumTest | Level1)
452f6603c60Sopenharmony_ci{
453f6603c60Sopenharmony_ci    size_t intS;
454f6603c60Sopenharmony_ci    int ret = sscanf("0", "%zd", &intS);
455f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
456f6603c60Sopenharmony_ci    EXPECT_EQ(intS, 0U);
457f6603c60Sopenharmony_ci
458f6603c60Sopenharmony_ci    ret = sscanf("4294967295", "%zd", &intS);
459f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
460f6603c60Sopenharmony_ci    EXPECT_EQ(intS, 4294967295U);
461f6603c60Sopenharmony_ci
462f6603c60Sopenharmony_ci    ret = sscanf("4294967295", "%15zd", &intS);
463f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
464f6603c60Sopenharmony_ci    EXPECT_EQ(intS, 4294967295U);
465f6603c60Sopenharmony_ci
466f6603c60Sopenharmony_ci    ret = sscanf("4294967295", "%5zd", &intS);
467f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
468f6603c60Sopenharmony_ci    EXPECT_EQ(intS, 42949U);
469f6603c60Sopenharmony_ci}
470f6603c60Sopenharmony_ci
471f6603c60Sopenharmony_ci/**
472f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_SSCANF_1400
473f6603c60Sopenharmony_ci * @tc.name   sscanf basic function test of ptrdiff_t
474f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
475f6603c60Sopenharmony_ci */
476f6603c60Sopenharmony_ciHWTEST_F(IoTest, testSscanfPtrdiffT, Function | MediumTest | Level1)
477f6603c60Sopenharmony_ci{
478f6603c60Sopenharmony_ci    ptrdiff_t intP;
479f6603c60Sopenharmony_ci    int ret = sscanf("-2147483648", "%td", &intP);
480f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
481f6603c60Sopenharmony_ci    EXPECT_EQ(intP, -2147483648);
482f6603c60Sopenharmony_ci
483f6603c60Sopenharmony_ci    ret = sscanf("2147483647", "%td", &intP);
484f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
485f6603c60Sopenharmony_ci    EXPECT_EQ(intP, 2147483647);
486f6603c60Sopenharmony_ci
487f6603c60Sopenharmony_ci    ret = sscanf("2147483647", "%15td", &intP);
488f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
489f6603c60Sopenharmony_ci    EXPECT_EQ(intP, 2147483647);
490f6603c60Sopenharmony_ci
491f6603c60Sopenharmony_ci    ret = sscanf("2147483647", "%5td", &intP);
492f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
493f6603c60Sopenharmony_ci    EXPECT_EQ(intP, 21474);
494f6603c60Sopenharmony_ci}
495f6603c60Sopenharmony_ci
496f6603c60Sopenharmony_ci/**
497f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_SSCANF_1500
498f6603c60Sopenharmony_ci * @tc.name   sscanf basic function test of pointer
499f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
500f6603c60Sopenharmony_ci */
501f6603c60Sopenharmony_ciHWTEST_F(IoTest, testSscanfPointer, Function | MediumTest | Level1)
502f6603c60Sopenharmony_ci{
503f6603c60Sopenharmony_ci    int i;
504f6603c60Sopenharmony_ci    int ret = sscanf("0x61", "%p", &i);
505f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
506f6603c60Sopenharmony_ci    EXPECT_EQ(i, 97);
507f6603c60Sopenharmony_ci
508f6603c60Sopenharmony_ci    ret = sscanf("0xffffff", "%15p", &i);
509f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
510f6603c60Sopenharmony_ci    EXPECT_EQ(i, 16777215);
511f6603c60Sopenharmony_ci
512f6603c60Sopenharmony_ci    ret = sscanf("0xffffff", "%6p", &i);
513f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
514f6603c60Sopenharmony_ci    EXPECT_EQ(i, 65535);
515f6603c60Sopenharmony_ci}
516f6603c60Sopenharmony_ci
517f6603c60Sopenharmony_ci /**
518f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_SSCANF_1600
519f6603c60Sopenharmony_ci * @tc.name   sscanf basic function test of hex and oct
520f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
521f6603c60Sopenharmony_ci */
522f6603c60Sopenharmony_ciHWTEST_F(IoTest, testSscanfIntHexOct, Function | MediumTest | Level1)
523f6603c60Sopenharmony_ci{
524f6603c60Sopenharmony_ci    int i;
525f6603c60Sopenharmony_ci    int ret = sscanf("a", "%x", &i);
526f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
527f6603c60Sopenharmony_ci    EXPECT_EQ(i, 10);
528f6603c60Sopenharmony_ci
529f6603c60Sopenharmony_ci    ret = sscanf("abaaaaa", "%6x", &i);
530f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
531f6603c60Sopenharmony_ci    EXPECT_EQ(i, 11250346);
532f6603c60Sopenharmony_ci
533f6603c60Sopenharmony_ci    ret = sscanf("aba", "%6x", &i);
534f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
535f6603c60Sopenharmony_ci    EXPECT_EQ(i, 2746);
536f6603c60Sopenharmony_ci
537f6603c60Sopenharmony_ci    ret = sscanf("A", "%X", &i);
538f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
539f6603c60Sopenharmony_ci    EXPECT_EQ(i, 10);
540f6603c60Sopenharmony_ci
541f6603c60Sopenharmony_ci    ret = sscanf("ABAAAAA", "%6X", &i);
542f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
543f6603c60Sopenharmony_ci    EXPECT_EQ(i, 11250346);
544f6603c60Sopenharmony_ci
545f6603c60Sopenharmony_ci    ret = sscanf("ABA", "%6X", &i);
546f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
547f6603c60Sopenharmony_ci    EXPECT_EQ(i, 2746);
548f6603c60Sopenharmony_ci
549f6603c60Sopenharmony_ci    ret = sscanf("12", "%o", &i);
550f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
551f6603c60Sopenharmony_ci    EXPECT_EQ(i, 10);
552f6603c60Sopenharmony_ci
553f6603c60Sopenharmony_ci    ret = sscanf("123", "%4o", &i);
554f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
555f6603c60Sopenharmony_ci    EXPECT_EQ(i, 83);
556f6603c60Sopenharmony_ci
557f6603c60Sopenharmony_ci    ret = sscanf("12345", "%4o", &i);
558f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
559f6603c60Sopenharmony_ci    EXPECT_EQ(i, 668);
560f6603c60Sopenharmony_ci}
561f6603c60Sopenharmony_ci
562f6603c60Sopenharmony_ci/**
563f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_SSCANF_1700
564f6603c60Sopenharmony_ci * @tc.name   sscanf basic function test of regexp
565f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
566f6603c60Sopenharmony_ci */
567f6603c60Sopenharmony_ciHWTEST_F(IoTest, testSscanfRegexp, Function | MediumTest | Level1)
568f6603c60Sopenharmony_ci{
569f6603c60Sopenharmony_ci    char str[50] = {0};
570f6603c60Sopenharmony_ci    int ret = sscanf("hello!world", "%[^!]", str);
571f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
572f6603c60Sopenharmony_ci    EXPECT_STREQ(str, "hello");
573f6603c60Sopenharmony_ci
574f6603c60Sopenharmony_ci    ret = sscanf("1234956abolcd", "%[1-6a-d]", str);
575f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
576f6603c60Sopenharmony_ci    EXPECT_STREQ(str, "1234");
577f6603c60Sopenharmony_ci
578f6603c60Sopenharmony_ci    ret = sscanf("123456abolcd", "%[1-6a-d]", str);
579f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
580f6603c60Sopenharmony_ci    EXPECT_STREQ(str, "123456ab");
581f6603c60Sopenharmony_ci
582f6603c60Sopenharmony_ci    ret = sscanf("123ABCD", "%[^A-Z]", str);
583f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
584f6603c60Sopenharmony_ci    EXPECT_STREQ(str, "123");
585f6603c60Sopenharmony_ci
586f6603c60Sopenharmony_ci    ret = sscanf("ABC-DEF@123", "%*[^-]-%[^@]", str);
587f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
588f6603c60Sopenharmony_ci    EXPECT_STREQ(str, "DEF");
589f6603c60Sopenharmony_ci}
590f6603c60Sopenharmony_ci
591f6603c60Sopenharmony_ci /**
592f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_SSCANF_1800
593f6603c60Sopenharmony_ci * @tc.name   sscanf basic function test of return value
594f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
595f6603c60Sopenharmony_ci */
596f6603c60Sopenharmony_ciHWTEST_F(IoTest, testSscanfReturnValue, Function | MediumTest | Level1)
597f6603c60Sopenharmony_ci{
598f6603c60Sopenharmony_ci    char str[50] = {0};
599f6603c60Sopenharmony_ci    int ret = sscanf("helloworld", "%*s%s", str);
600f6603c60Sopenharmony_ci    EXPECT_EQ(ret, -1) << "> sscanf fail, errno = " << errno;
601f6603c60Sopenharmony_ci
602f6603c60Sopenharmony_ci    ret = sscanf("hello", "ab%5s123%*3s|>>>|", str);
603f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 0) << "> sscanf fail, errno = " << errno;
604f6603c60Sopenharmony_ci
605f6603c60Sopenharmony_ci    ret = sscanf("", "%*s%s", str);
606f6603c60Sopenharmony_ci    EXPECT_EQ(ret, -1) << "> sscanf fail, errno = " << errno;
607f6603c60Sopenharmony_ci
608f6603c60Sopenharmony_ci    ret = sscanf("ab/c", "%s/%c/%d/%f", str);
609f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1) << "> sscanf fail, errno = " << errno;
610f6603c60Sopenharmony_ci    EXPECT_STREQ(str, "ab/c");
611f6603c60Sopenharmony_ci
612f6603c60Sopenharmony_ci    char c;
613f6603c60Sopenharmony_ci    ret = sscanf("ab c", "%s %c %d/%f", str, &c);
614f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 2) << "> sscanf fail, errno = " << errno;
615f6603c60Sopenharmony_ci    EXPECT_STREQ(str, "ab");
616f6603c60Sopenharmony_ci    EXPECT_EQ(c, 'c');
617f6603c60Sopenharmony_ci
618f6603c60Sopenharmony_ci    int ip[4] = {0};
619f6603c60Sopenharmony_ci    ret = sscanf("11.11.11/11", "%d.%d.%d.%d", &ip[0], &ip[1], &ip[2], &ip[3]);
620f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 3) << "> sscanf fail, errno = " << errno;
621f6603c60Sopenharmony_ci    EXPECT_EQ(ip[0], 11);
622f6603c60Sopenharmony_ci    EXPECT_EQ(ip[1], 11);
623f6603c60Sopenharmony_ci    EXPECT_EQ(ip[2], 11);
624f6603c60Sopenharmony_ci    EXPECT_EQ(ip[3], 0);
625f6603c60Sopenharmony_ci}
626