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 <stdlib.h>
17f6603c60Sopenharmony_ci
18f6603c60Sopenharmony_ci#include <gtest/gtest.h>
19f6603c60Sopenharmony_ci
20f6603c60Sopenharmony_ci#include "log.h"
21f6603c60Sopenharmony_ci#include "IoTest.h"
22f6603c60Sopenharmony_ci
23f6603c60Sopenharmony_ciusing namespace testing::ext;
24f6603c60Sopenharmony_ci
25f6603c60Sopenharmony_ci/**
26f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STDLIB_0100
27f6603c60Sopenharmony_ci * @tc.name   gcvt basic function test
28f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
29f6603c60Sopenharmony_ci */
30f6603c60Sopenharmony_ciHWTEST_F(IoTest, testGcvt, Function | MediumTest | Level1)
31f6603c60Sopenharmony_ci{
32f6603c60Sopenharmony_ci    char str[50] = {0};
33f6603c60Sopenharmony_ci    char *ret = gcvt(999, 3, str);
34f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, str);
35f6603c60Sopenharmony_ci    EXPECT_STREQ(str, "999");
36f6603c60Sopenharmony_ci
37f6603c60Sopenharmony_ci    ret = gcvt(-99.456, 5, str);
38f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, str);
39f6603c60Sopenharmony_ci    EXPECT_STREQ(str, "-99.456");
40f6603c60Sopenharmony_ci
41f6603c60Sopenharmony_ci    ret = gcvt(0.968e8, 8, str);
42f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, str);
43f6603c60Sopenharmony_ci    EXPECT_STREQ(str, "96800000");
44f6603c60Sopenharmony_ci}
45f6603c60Sopenharmony_ci
46f6603c60Sopenharmony_ci/**
47f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STDLIB_0200
48f6603c60Sopenharmony_ci * @tc.name   fcvt basic function test
49f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
50f6603c60Sopenharmony_ci */
51f6603c60Sopenharmony_ciHWTEST_F(IoTest, testFcvt, Function | MediumTest | Level1)
52f6603c60Sopenharmony_ci{
53f6603c60Sopenharmony_ci    int decpt, sign;
54f6603c60Sopenharmony_ci    char *ret = fcvt(123.456, 5, &decpt, &sign);
55f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, "12345600");
56f6603c60Sopenharmony_ci    EXPECT_EQ(decpt, 3);
57f6603c60Sopenharmony_ci    EXPECT_EQ(sign, 0);
58f6603c60Sopenharmony_ci
59f6603c60Sopenharmony_ci    ret = fcvt(-7.89e13, 12, &decpt, &sign);
60f6603c60Sopenharmony_ci    EXPECT_STREQ(ret, "789000000000000");
61f6603c60Sopenharmony_ci    EXPECT_EQ(decpt, 14);
62f6603c60Sopenharmony_ci    EXPECT_EQ(sign, 1);
63f6603c60Sopenharmony_ci}
64f6603c60Sopenharmony_ci
65f6603c60Sopenharmony_ci/**
66f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STDLIB_0300
67f6603c60Sopenharmony_ci * @tc.name   swab basic function test
68f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
69f6603c60Sopenharmony_ci */
70f6603c60Sopenharmony_ciHWTEST_F(IoTest, testSwab, Function | MediumTest | Level1)
71f6603c60Sopenharmony_ci{
72f6603c60Sopenharmony_ci    char src[20] = "hello world";
73f6603c60Sopenharmony_ci    char dest[20] = {0};
74f6603c60Sopenharmony_ci    swab(src, dest, sizeof(src));
75f6603c60Sopenharmony_ci    EXPECT_STREQ(dest, "ehll oowlr");
76f6603c60Sopenharmony_ci
77f6603c60Sopenharmony_ci    char destS[20] = {0};
78f6603c60Sopenharmony_ci    swab(src, destS, -2);
79f6603c60Sopenharmony_ci    EXPECT_STREQ(destS, "");
80f6603c60Sopenharmony_ci
81f6603c60Sopenharmony_ci    char srcT[20] = "1111111111";
82f6603c60Sopenharmony_ci    char destT[20] = {0};
83f6603c60Sopenharmony_ci    swab(srcT, destT, sizeof(srcT));
84f6603c60Sopenharmony_ci    EXPECT_STREQ(destT, "1111111111");
85f6603c60Sopenharmony_ci}
86f6603c60Sopenharmony_ci
87f6603c60Sopenharmony_ci/**
88f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STDLIB_0400
89f6603c60Sopenharmony_ci * @tc.name   strtof basic function test
90f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
91f6603c60Sopenharmony_ci */
92f6603c60Sopenharmony_ciHWTEST_F(IoTest, testStrtof, Function | MediumTest | Level1)
93f6603c60Sopenharmony_ci{
94f6603c60Sopenharmony_ci    char *endPtr = nullptr;
95f6603c60Sopenharmony_ci    float ret = strtof("  -3.40E+38 hello", &endPtr);
96f6603c60Sopenharmony_ci    EXPECT_FLOAT_EQ(ret, -3.40E+38);
97f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, " hello");
98f6603c60Sopenharmony_ci
99f6603c60Sopenharmony_ci    ret = strtof("  3.40E+38 ===", &endPtr);
100f6603c60Sopenharmony_ci    EXPECT_FLOAT_EQ(ret, 3.40E+38);
101f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, " ===");
102f6603c60Sopenharmony_ci
103f6603c60Sopenharmony_ci    ret = strtof("-9.6e17  this   123", &endPtr);
104f6603c60Sopenharmony_ci    EXPECT_FLOAT_EQ(ret, -9.6e17);
105f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, "  this   123");
106f6603c60Sopenharmony_ci
107f6603c60Sopenharmony_ci    ret = strtof("this is string", &endPtr);
108f6603c60Sopenharmony_ci    EXPECT_FLOAT_EQ(ret, 0);
109f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, "this is string");
110f6603c60Sopenharmony_ci}
111f6603c60Sopenharmony_ci
112f6603c60Sopenharmony_ci/**
113f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STDLIB_0500
114f6603c60Sopenharmony_ci * @tc.name   strtod basic function test
115f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
116f6603c60Sopenharmony_ci */
117f6603c60Sopenharmony_ciHWTEST_F(IoTest, testStrtod, Function | MediumTest | Level1)
118f6603c60Sopenharmony_ci{
119f6603c60Sopenharmony_ci    char *endPtr = nullptr;
120f6603c60Sopenharmony_ci    double ret = strtod("  -1.79E+308 hello", &endPtr);
121f6603c60Sopenharmony_ci    EXPECT_DOUBLE_EQ(ret, -1.79E+308) << "strtod fail, errno = " << errno;
122f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, " hello") << "strtod fail, errno = " << errno;
123f6603c60Sopenharmony_ci
124f6603c60Sopenharmony_ci    ret = strtod("1.79E+308  ===", &endPtr);
125f6603c60Sopenharmony_ci    EXPECT_DOUBLE_EQ(ret, 1.79E+308) << "strtod fail, errno = " << errno;
126f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, "  ===") << "strtod fail, errno = " << errno;
127f6603c60Sopenharmony_ci
128f6603c60Sopenharmony_ci    ret = strtod("-9.6e17  this   123", &endPtr);
129f6603c60Sopenharmony_ci    EXPECT_DOUBLE_EQ(ret, -9.6e17);
130f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, "  this   123");
131f6603c60Sopenharmony_ci
132f6603c60Sopenharmony_ci    ret = strtod("this is string", &endPtr);
133f6603c60Sopenharmony_ci    EXPECT_DOUBLE_EQ(ret, 0) << "strtod fail, errno = " << errno;
134f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, "this is string") << "strtod fail, errno = " << errno;
135f6603c60Sopenharmony_ci}
136f6603c60Sopenharmony_ci
137f6603c60Sopenharmony_ci/**
138f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STDLIB_0600
139f6603c60Sopenharmony_ci * @tc.name   strtold basic function test
140f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
141f6603c60Sopenharmony_ci */
142f6603c60Sopenharmony_ciHWTEST_F(IoTest, testStrtold, Function | MediumTest | Level1)
143f6603c60Sopenharmony_ci{
144f6603c60Sopenharmony_ci    char *endPtr = nullptr;
145f6603c60Sopenharmony_ci    long double ret = strtold("  2.22507e-308 hello", &endPtr);
146f6603c60Sopenharmony_ci    EXPECT_NEAR(ret, 2.22507e-308, 0.0001) << "strtold fail, errno = " << errno;
147f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, " hello") << "strtold fail, errno = " << errno;
148f6603c60Sopenharmony_ci
149f6603c60Sopenharmony_ci    ret = strtold("  1.79769e+308 ===", &endPtr);
150f6603c60Sopenharmony_ci    EXPECT_NEAR(ret, 1.79769e+308, 0.0001) << "strtold fail, errno = " << errno;
151f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, " ===") << "strtold fail, errno = " << errno;
152f6603c60Sopenharmony_ci
153f6603c60Sopenharmony_ci    ret = strtold("-9.6e17  this   123", &endPtr);
154f6603c60Sopenharmony_ci    EXPECT_DOUBLE_EQ(ret, -9.6e17) << "strtold fail, errno = " << errno;
155f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, "  this   123") << "strtold fail, errno = " << errno;
156f6603c60Sopenharmony_ci
157f6603c60Sopenharmony_ci    ret = strtold("this is string", &endPtr);
158f6603c60Sopenharmony_ci    EXPECT_DOUBLE_EQ(ret, 0) << "strtold fail, errno = " << errno;
159f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, "this is string") << "strtold fail, errno = " << errno;
160f6603c60Sopenharmony_ci}
161f6603c60Sopenharmony_ci
162f6603c60Sopenharmony_ci
163f6603c60Sopenharmony_ci/**
164f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STDLIB_0700
165f6603c60Sopenharmony_ci * @tc.name   strtol basic function test
166f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
167f6603c60Sopenharmony_ci */
168f6603c60Sopenharmony_ciHWTEST_F(IoTest, testStrtol, Function | MediumTest | Level1)
169f6603c60Sopenharmony_ci{
170f6603c60Sopenharmony_ci    char nPtr[] = "12 0110 0XDEFE 0666 -1.6";
171f6603c60Sopenharmony_ci    char *endPtr = nullptr;
172f6603c60Sopenharmony_ci    long ret = strtol(nPtr, &endPtr, 10); // decimal
173f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 12) << "> strtol fail, errno = " << errno;
174f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, " 0110 0XDEFE 0666 -1.6");
175f6603c60Sopenharmony_ci
176f6603c60Sopenharmony_ci    ret = strtol(endPtr, &endPtr, 2); // binary
177f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 6) << "> strtol fail, errno = " << errno;
178f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, " 0XDEFE 0666 -1.6");
179f6603c60Sopenharmony_ci
180f6603c60Sopenharmony_ci    ret = strtol(endPtr, &endPtr, 16); // hexadecimal
181f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 0XDEFE) << "> strtol fail, errno = " << errno;
182f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, " 0666 -1.6");
183f6603c60Sopenharmony_ci
184f6603c60Sopenharmony_ci
185f6603c60Sopenharmony_ci    ret = strtol(endPtr, &endPtr, 8); // octal
186f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 0666) << "> strtol fail, errno = " << errno;
187f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, " -1.6");
188f6603c60Sopenharmony_ci
189f6603c60Sopenharmony_ci    ret = strtol(endPtr, &endPtr, 65); // Invalid number format
190f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 0) << "> strtol fail, errno = " << errno;
191f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, " -1.6");
192f6603c60Sopenharmony_ci
193f6603c60Sopenharmony_ci    ret = strtol(endPtr, &endPtr, 0); // decimal
194f6603c60Sopenharmony_ci    EXPECT_EQ(ret, -1) << "> strtol fail, errno = " << errno;
195f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, ".6");
196f6603c60Sopenharmony_ci
197f6603c60Sopenharmony_ci    ret = strtol(endPtr, &endPtr, 10); // Invalid transform
198f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 0) << "> strtol fail, errno = " << errno;
199f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, ".6");
200f6603c60Sopenharmony_ci
201f6603c60Sopenharmony_ci    char nPtr1[] = "2147483647 2147483648 -2147483648 -2147483649"; // boundary value:2^31-1
202f6603c60Sopenharmony_ci    ret = strtol(nPtr1, &endPtr, 10);
203f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 2147483647) << "> strtol fail, errno = " << errno;
204f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, " 2147483648 -2147483648 -2147483649");
205f6603c60Sopenharmony_ci
206f6603c60Sopenharmony_ci    ret = strtol(endPtr, &endPtr, 10);
207f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 2147483647) << "> strtol fail, errno = " << errno;
208f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, " -2147483648 -2147483649");
209f6603c60Sopenharmony_ci
210f6603c60Sopenharmony_ci    ret = strtol(endPtr, &endPtr, 10);
211f6603c60Sopenharmony_ci    EXPECT_EQ(ret, -2147483648) << "> strtol fail, errno = " << errno;
212f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, " -2147483649");
213f6603c60Sopenharmony_ci
214f6603c60Sopenharmony_ci    ret = strtol(endPtr, &endPtr, 10);
215f6603c60Sopenharmony_ci    EXPECT_EQ(ret, -2147483648) << "> strtol fail, errno = " << errno;
216f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, "");
217f6603c60Sopenharmony_ci}
218f6603c60Sopenharmony_ci
219f6603c60Sopenharmony_ci/**
220f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STDLIB_0800
221f6603c60Sopenharmony_ci * @tc.name   strtoul basic function test
222f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
223f6603c60Sopenharmony_ci */
224f6603c60Sopenharmony_ciHWTEST_F(IoTest, testStrtoul, Function | MediumTest | Level1)
225f6603c60Sopenharmony_ci{
226f6603c60Sopenharmony_ci    char nPtr[] = "12 0110 0XDEFE 0666 4294967295 4294967296 12.34"; // 2^32-1
227f6603c60Sopenharmony_ci    char *endPtr = nullptr;
228f6603c60Sopenharmony_ci    unsigned long ret = strtoul(nPtr, &endPtr, 10);
229f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 12UL) << "> strtol fail, errno = " << errno;
230f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, " 0110 0XDEFE 0666 4294967295 4294967296 12.34");
231f6603c60Sopenharmony_ci
232f6603c60Sopenharmony_ci    ret = strtoul(endPtr, &endPtr, 2);
233f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 6UL) << "> strtol fail, errno = " << errno;
234f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, " 0XDEFE 0666 4294967295 4294967296 12.34");
235f6603c60Sopenharmony_ci
236f6603c60Sopenharmony_ci    ret = strtoul(endPtr, &endPtr, 16);
237f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 0XDEFEUL) << "> strtol fail, errno = " << errno;
238f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, " 0666 4294967295 4294967296 12.34");
239f6603c60Sopenharmony_ci
240f6603c60Sopenharmony_ci
241f6603c60Sopenharmony_ci    ret = strtoul(endPtr, &endPtr, 8);
242f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 0666UL) << "> strtol fail, errno = " << errno;
243f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, " 4294967295 4294967296 12.34");
244f6603c60Sopenharmony_ci
245f6603c60Sopenharmony_ci    ret = strtoul(endPtr, &endPtr, 0);
246f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 4294967295UL) << "> strtol fail, errno = " << errno;
247f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, " 4294967296 12.34");
248f6603c60Sopenharmony_ci
249f6603c60Sopenharmony_ci    ret = strtoul(endPtr, &endPtr, 0);
250f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 4294967295UL) << "> strtol fail, errno = " << errno;
251f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, " 12.34");
252f6603c60Sopenharmony_ci
253f6603c60Sopenharmony_ci    ret = strtoul(endPtr, &endPtr, 65);
254f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 0UL) << "> strtol fail, errno = " << errno;
255f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, " 12.34");
256f6603c60Sopenharmony_ci
257f6603c60Sopenharmony_ci    ret = strtoul(endPtr, &endPtr, 0);
258f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 12UL) << "> strtol fail, errno = " << errno;
259f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, ".34");
260f6603c60Sopenharmony_ci
261f6603c60Sopenharmony_ci    ret = strtoul(endPtr, &endPtr, 0);
262f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 0UL) << "> strtol fail, errno = " << errno;
263f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, ".34");
264f6603c60Sopenharmony_ci}
265f6603c60Sopenharmony_ci
266f6603c60Sopenharmony_ci/**
267f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STDLIB_0900
268f6603c60Sopenharmony_ci * @tc.name   strtoll basic function test
269f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
270f6603c60Sopenharmony_ci */
271f6603c60Sopenharmony_ciHWTEST_F(IoTest, testStrtoll, Function | MediumTest | Level1)
272f6603c60Sopenharmony_ci{
273f6603c60Sopenharmony_ci    char nPtr[] = "12 0110 0XDEFE 0666 -1.6";
274f6603c60Sopenharmony_ci    char *endPtr = nullptr;
275f6603c60Sopenharmony_ci    long long ret = strtoll(nPtr, &endPtr, 10);
276f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 12) << "> strtoll fail, errno = " << errno;
277f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, " 0110 0XDEFE 0666 -1.6");
278f6603c60Sopenharmony_ci
279f6603c60Sopenharmony_ci    ret = strtoll(endPtr, &endPtr, 2);
280f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 6) << "> strtoll fail, errno = " << errno;
281f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, " 0XDEFE 0666 -1.6");
282f6603c60Sopenharmony_ci
283f6603c60Sopenharmony_ci    ret = strtoll(endPtr, &endPtr, 16);
284f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 0XDEFE) << "> strtoll fail, errno = " << errno;
285f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, " 0666 -1.6");
286f6603c60Sopenharmony_ci
287f6603c60Sopenharmony_ci
288f6603c60Sopenharmony_ci    ret = strtoll(endPtr, &endPtr, 8);
289f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 0666) << "> strtoll fail, errno = " << errno;
290f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, " -1.6");
291f6603c60Sopenharmony_ci
292f6603c60Sopenharmony_ci    ret = strtoll(endPtr, &endPtr, 65);
293f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 0) << "> strtoll fail, errno = " << errno;
294f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, " -1.6");
295f6603c60Sopenharmony_ci
296f6603c60Sopenharmony_ci    ret = strtoll(endPtr, &endPtr, 0);
297f6603c60Sopenharmony_ci    EXPECT_EQ(ret, -1) << "> strtoll fail, errno = " << errno;
298f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, ".6");
299f6603c60Sopenharmony_ci
300f6603c60Sopenharmony_ci    ret = strtoll(endPtr, &endPtr, 0);
301f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 0) << "> strtoll fail, errno = " << errno;
302f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, ".6");
303f6603c60Sopenharmony_ci
304f6603c60Sopenharmony_ci    char nPtr1[] = "9223372036854775807 9223372036854775808 -9223372036854775807"; // 2^63-1
305f6603c60Sopenharmony_ci    ret = strtoll(nPtr1, &endPtr, 10);
306f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 9223372036854775807) << "> strtoll fail, errno = " << errno;
307f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, " 9223372036854775808 -9223372036854775807");
308f6603c60Sopenharmony_ci
309f6603c60Sopenharmony_ci    ret = strtoll(endPtr, &endPtr, 10);
310f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 9223372036854775807) << "> strtoll fail, errno = " << errno;
311f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, " -9223372036854775807");
312f6603c60Sopenharmony_ci
313f6603c60Sopenharmony_ci    ret = strtoll(endPtr, &endPtr, 10);
314f6603c60Sopenharmony_ci    EXPECT_EQ(ret, -9223372036854775807) << "> strtoll fail, errno = " << errno;
315f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, "");
316f6603c60Sopenharmony_ci}
317f6603c60Sopenharmony_ci
318f6603c60Sopenharmony_ci/**
319f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STDLIB_1000
320f6603c60Sopenharmony_ci * @tc.name   strtoull basic function test
321f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
322f6603c60Sopenharmony_ci */
323f6603c60Sopenharmony_ciHWTEST_F(IoTest, testStrtoull, Function | MediumTest | Level1)
324f6603c60Sopenharmony_ci{
325f6603c60Sopenharmony_ci    char nPtr[] = "12 0110 0XDEFE 0666 1.6";
326f6603c60Sopenharmony_ci    char *endPtr = nullptr;
327f6603c60Sopenharmony_ci    unsigned long long ret = strtoull(nPtr, &endPtr, 10);
328f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 12ULL) << "> strtoull fail, errno = " << errno;
329f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, " 0110 0XDEFE 0666 1.6");
330f6603c60Sopenharmony_ci
331f6603c60Sopenharmony_ci    ret = strtoull(endPtr, &endPtr, 2);
332f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 6ULL) << "> strtoull fail, errno = " << errno;
333f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, " 0XDEFE 0666 1.6");
334f6603c60Sopenharmony_ci
335f6603c60Sopenharmony_ci    ret = strtoull(endPtr, &endPtr, 16);
336f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 0XDEFEULL) << "> strtoull fail, errno = " << errno;
337f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, " 0666 1.6");
338f6603c60Sopenharmony_ci
339f6603c60Sopenharmony_ci
340f6603c60Sopenharmony_ci    ret = strtoull(endPtr, &endPtr, 8);
341f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 0666ULL) << "> strtoull fail, errno = " << errno;
342f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, " 1.6");
343f6603c60Sopenharmony_ci
344f6603c60Sopenharmony_ci    ret = strtoull(endPtr, &endPtr, 65);
345f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 0ULL) << "> strtoull fail, errno = " << errno;
346f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, " 1.6");
347f6603c60Sopenharmony_ci
348f6603c60Sopenharmony_ci    ret = strtoull(endPtr, &endPtr, 0);
349f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1ULL) << "> strtoull fail, errno = " << errno;
350f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, ".6");
351f6603c60Sopenharmony_ci
352f6603c60Sopenharmony_ci    ret = strtoull(endPtr, &endPtr, 0);
353f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 0ULL) << "> strtoull fail, errno = " << errno;
354f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, ".6");
355f6603c60Sopenharmony_ci
356f6603c60Sopenharmony_ci    char nPtr1[] = "18446744073709551615 18446744073709551616"; // 2^64-1
357f6603c60Sopenharmony_ci    ret = strtoull(nPtr1, &endPtr, 10);
358f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 18446744073709551615ULL) << "> strtoull fail, errno = " << errno;
359f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, " 18446744073709551616");
360f6603c60Sopenharmony_ci
361f6603c60Sopenharmony_ci    ret = strtoull(endPtr, &endPtr, 10);
362f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 18446744073709551615ULL) << "> strtoull fail, errno = " << errno;
363f6603c60Sopenharmony_ci    EXPECT_STREQ(endPtr, "");
364f6603c60Sopenharmony_ci}
365f6603c60Sopenharmony_ci
366f6603c60Sopenharmony_ci/**
367f6603c60Sopenharmony_ci * @tc.number SUB_KERNEL_IO_STDLIB_1100
368f6603c60Sopenharmony_ci * @tc.name   a64l basic function test
369f6603c60Sopenharmony_ci * @tc.desc   [C- SOFTWARE -0200]
370f6603c60Sopenharmony_ci */
371f6603c60Sopenharmony_ciHWTEST_F(IoTest, testA64l, Function | MediumTest | Level1)
372f6603c60Sopenharmony_ci{
373f6603c60Sopenharmony_ci    long ret = a64l("./0123");
374f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1141645376);
375f6603c60Sopenharmony_ci
376f6603c60Sopenharmony_ci    ret = a64l("./01234");
377f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 1141645376);
378f6603c60Sopenharmony_ci
379f6603c60Sopenharmony_ci    ret = a64l("abcdef");
380f6603c60Sopenharmony_ci    EXPECT_EQ(ret, -358184474);
381f6603c60Sopenharmony_ci
382f6603c60Sopenharmony_ci    ret = a64l("Az0\0opq");
383f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 12236);
384f6603c60Sopenharmony_ci
385f6603c60Sopenharmony_ci    ret = a64l("v/");
386f6603c60Sopenharmony_ci    EXPECT_EQ(ret, 123);
387f6603c60Sopenharmony_ci}
388f6603c60Sopenharmony_ci
389