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