13d8536b4Sopenharmony_ci/* 23d8536b4Sopenharmony_ci * Copyright (c) 2013-2019 Huawei Technologies Co., Ltd. All rights reserved. 33d8536b4Sopenharmony_ci * Copyright (c) 2020-2021 Huawei Device Co., Ltd. All rights reserved. 43d8536b4Sopenharmony_ci * 53d8536b4Sopenharmony_ci * Redistribution and use in source and binary forms, with or without modification, 63d8536b4Sopenharmony_ci * are permitted provided that the following conditions are met: 73d8536b4Sopenharmony_ci * 83d8536b4Sopenharmony_ci * 1. Redistributions of source code must retain the above copyright notice, this list of 93d8536b4Sopenharmony_ci * conditions and the following disclaimer. 103d8536b4Sopenharmony_ci * 113d8536b4Sopenharmony_ci * 2. Redistributions in binary form must reproduce the above copyright notice, this list 123d8536b4Sopenharmony_ci * of conditions and the following disclaimer in the documentation and/or other materials 133d8536b4Sopenharmony_ci * provided with the distribution. 143d8536b4Sopenharmony_ci * 153d8536b4Sopenharmony_ci * 3. Neither the name of the copyright holder nor the names of its contributors may be used 163d8536b4Sopenharmony_ci * to endorse or promote products derived from this software without specific prior written 173d8536b4Sopenharmony_ci * permission. 183d8536b4Sopenharmony_ci * 193d8536b4Sopenharmony_ci * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 203d8536b4Sopenharmony_ci * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 213d8536b4Sopenharmony_ci * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 223d8536b4Sopenharmony_ci * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 233d8536b4Sopenharmony_ci * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 243d8536b4Sopenharmony_ci * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 253d8536b4Sopenharmony_ci * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 263d8536b4Sopenharmony_ci * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 273d8536b4Sopenharmony_ci * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 283d8536b4Sopenharmony_ci * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 293d8536b4Sopenharmony_ci * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 303d8536b4Sopenharmony_ci */ 313d8536b4Sopenharmony_ci 323d8536b4Sopenharmony_ci#include "ohos_types.h" 333d8536b4Sopenharmony_ci#include "posix_test.h" 343d8536b4Sopenharmony_ci#include "los_config.h" 353d8536b4Sopenharmony_ci#include "kernel_test.h" 363d8536b4Sopenharmony_ci#include "ctype.h" 373d8536b4Sopenharmony_ci#include "stdlib.h" 383d8536b4Sopenharmony_ci#include "string.h" 393d8536b4Sopenharmony_ci#include "log.h" 403d8536b4Sopenharmony_ci 413d8536b4Sopenharmony_ci/* * 423d8536b4Sopenharmony_ci * @tc.desc : register a test suite, this suite is used to test basic flow and interface dependency 433d8536b4Sopenharmony_ci * @param : subsystem name is utils 443d8536b4Sopenharmony_ci * @param : module name is utilsFile 453d8536b4Sopenharmony_ci * @param : test suit name is CmsisTaskFuncTestSuite 463d8536b4Sopenharmony_ci */ 473d8536b4Sopenharmony_ciLITE_TEST_SUIT(Posix, Posixtimer, PosixStdlibAtolTest); 483d8536b4Sopenharmony_ci 493d8536b4Sopenharmony_ci/* * 503d8536b4Sopenharmony_ci * @tc.setup : setup for all testcases 513d8536b4Sopenharmony_ci * @return : setup result, TRUE is success, FALSE is fail 523d8536b4Sopenharmony_ci */ 533d8536b4Sopenharmony_cistatic BOOL PosixStdlibAtolTestSetUp(void) 543d8536b4Sopenharmony_ci{ 553d8536b4Sopenharmony_ci return TRUE; 563d8536b4Sopenharmony_ci} 573d8536b4Sopenharmony_ci 583d8536b4Sopenharmony_ci/* * 593d8536b4Sopenharmony_ci * @tc.teardown : teardown for all testcases 603d8536b4Sopenharmony_ci * @return : teardown result, TRUE is success, FALSE is fail 613d8536b4Sopenharmony_ci */ 623d8536b4Sopenharmony_cistatic BOOL PosixStdlibAtolTestTearDown(void) 633d8536b4Sopenharmony_ci{ 643d8536b4Sopenharmony_ci LOG("+-------------------------------------------+\n"); 653d8536b4Sopenharmony_ci return TRUE; 663d8536b4Sopenharmony_ci} 673d8536b4Sopenharmony_ci 683d8536b4Sopenharmony_ci/* * 693d8536b4Sopenharmony_ci * @tc.number : TEST_STDLIB_ATOL_001 703d8536b4Sopenharmony_ci * @tc.name : convert string to long integer 713d8536b4Sopenharmony_ci * @tc.desc : [C- SOFTWARE -0200] 723d8536b4Sopenharmony_ci */ 733d8536b4Sopenharmony_ciLITE_TEST_CASE(PosixStdlibAtolTest, testStdlibAtol001, Function | MediumTest | Level1) 743d8536b4Sopenharmony_ci{ 753d8536b4Sopenharmony_ci const long value = atol("2147483647"); 763d8536b4Sopenharmony_ci if (value == 2147483647) { 773d8536b4Sopenharmony_ci LOG("[DEMO] posix stdlib test case 1:atol(%ld) ok.\n", value); 783d8536b4Sopenharmony_ci } else { 793d8536b4Sopenharmony_ci LOG("[DEMO] posix stdlib test case 1:atol(%ld) fail.\n", value); 803d8536b4Sopenharmony_ci } 813d8536b4Sopenharmony_ci ICUNIT_ASSERT_EQUAL(value, 2147483647, value); 823d8536b4Sopenharmony_ci return 0; 833d8536b4Sopenharmony_ci} 843d8536b4Sopenharmony_ci 853d8536b4Sopenharmony_ci/* * 863d8536b4Sopenharmony_ci * @tc.number : TEST_STDLIB_ATOL_002 873d8536b4Sopenharmony_ci * @tc.name : convert string to long integer 883d8536b4Sopenharmony_ci * @tc.desc : [C- SOFTWARE -0200] 893d8536b4Sopenharmony_ci */ 903d8536b4Sopenharmony_ciLITE_TEST_CASE(PosixStdlibAtolTest, testStdlibAtol002, Function | MediumTest | Level1) 913d8536b4Sopenharmony_ci{ 923d8536b4Sopenharmony_ci const long value = atol("-2147483648"); 933d8536b4Sopenharmony_ci if (value == -2147483648) { 943d8536b4Sopenharmony_ci LOG("[DEMO] posix stdlib test case 2:atol(%ld) ok.\n", value); 953d8536b4Sopenharmony_ci } else { 963d8536b4Sopenharmony_ci LOG("[DEMO] posix stdlib test case 2:atol(%ld) fail.\n", value); 973d8536b4Sopenharmony_ci } 983d8536b4Sopenharmony_ci ICUNIT_ASSERT_EQUAL(value, -2147483648, value); 993d8536b4Sopenharmony_ci return 0; 1003d8536b4Sopenharmony_ci} 1013d8536b4Sopenharmony_ci 1023d8536b4Sopenharmony_ci/* * 1033d8536b4Sopenharmony_ci * @tc.number : TEST_STDLIB_ATOL_003 1043d8536b4Sopenharmony_ci * @tc.name : convert string to long integer 1053d8536b4Sopenharmony_ci * @tc.desc : [C- SOFTWARE -0200] 1063d8536b4Sopenharmony_ci */ 1073d8536b4Sopenharmony_ciLITE_TEST_CASE(PosixStdlibAtolTest, testStdlibAtol003, Function | MediumTest | Level1) 1083d8536b4Sopenharmony_ci{ 1093d8536b4Sopenharmony_ci const long value = atol("100"); 1103d8536b4Sopenharmony_ci if (value == 100) { 1113d8536b4Sopenharmony_ci LOG("[DEMO] posix stdlib test case 3:atol(%ld) ok.\n", value); 1123d8536b4Sopenharmony_ci } else { 1133d8536b4Sopenharmony_ci LOG("[DEMO] posix stdlib test case 3:atol(%ld) fail.\n", value); 1143d8536b4Sopenharmony_ci } 1153d8536b4Sopenharmony_ci ICUNIT_ASSERT_EQUAL(value, 100, value); 1163d8536b4Sopenharmony_ci return 0; 1173d8536b4Sopenharmony_ci} 1183d8536b4Sopenharmony_ci 1193d8536b4Sopenharmony_ci#if (LOSCFG_LIBC_MUSL == 1) 1203d8536b4Sopenharmony_ci/* * 1213d8536b4Sopenharmony_ci * @tc.number : TEST_STDLIB_ATOL_004 1223d8536b4Sopenharmony_ci * @tc.name : convert string to long integer 1233d8536b4Sopenharmony_ci * @tc.desc : [C- SOFTWARE -0200] 1243d8536b4Sopenharmony_ci */ 1253d8536b4Sopenharmony_ciLITE_TEST_CASE(PosixStdlibAtolTest, testStdlibAtol004, Function | MediumTest | Level1) 1263d8536b4Sopenharmony_ci{ 1273d8536b4Sopenharmony_ci const long value = atol("2147483648"); 1283d8536b4Sopenharmony_ci if (value != 2147483648) { 1293d8536b4Sopenharmony_ci LOG("[DEMO] posix stdlib test case 4(except):atol(%ld) != 2147483648 ok.\n", value); 1303d8536b4Sopenharmony_ci } else { 1313d8536b4Sopenharmony_ci LOG("[DEMO] posix stdlib test case 4(except):atol(%ld) fail.\n", value); 1323d8536b4Sopenharmony_ci } 1333d8536b4Sopenharmony_ci ICUNIT_ASSERT_EQUAL(value, -2147483648, value); 1343d8536b4Sopenharmony_ci return 0; 1353d8536b4Sopenharmony_ci} 1363d8536b4Sopenharmony_ci 1373d8536b4Sopenharmony_ci/* * 1383d8536b4Sopenharmony_ci * @tc.number : TEST_STDLIB_ATOL_005 1393d8536b4Sopenharmony_ci * @tc.name : convert string to long integer 1403d8536b4Sopenharmony_ci * @tc.desc : [C- SOFTWARE -0200] 1413d8536b4Sopenharmony_ci */ 1423d8536b4Sopenharmony_ciLITE_TEST_CASE(PosixStdlibAtolTest, testStdlibAtol005, Function | MediumTest | Level1) 1433d8536b4Sopenharmony_ci{ 1443d8536b4Sopenharmony_ci const long value = atol("-2147483649"); 1453d8536b4Sopenharmony_ci if (value == 2147483647) { 1463d8536b4Sopenharmony_ci LOG("[DEMO] posix stdlib test case 5(except):atoi(%d) != -2147483649 ok.\n", value); 1473d8536b4Sopenharmony_ci } else { 1483d8536b4Sopenharmony_ci LOG("[DEMO] posix stdlib test case 5(except):atoi(%d) fail.\n", value); 1493d8536b4Sopenharmony_ci } 1503d8536b4Sopenharmony_ci ICUNIT_ASSERT_EQUAL(value, 2147483647, value); 1513d8536b4Sopenharmony_ci return 0; 1523d8536b4Sopenharmony_ci} 1533d8536b4Sopenharmony_ci#endif 1543d8536b4Sopenharmony_ci 1553d8536b4Sopenharmony_ci/* * 1563d8536b4Sopenharmony_ci * @tc.number : TEST_STDLIB_ATOL_006 1573d8536b4Sopenharmony_ci * @tc.name : convert string to long integer 1583d8536b4Sopenharmony_ci * @tc.desc : [C- SOFTWARE -0200] 1593d8536b4Sopenharmony_ci */ 1603d8536b4Sopenharmony_ciLITE_TEST_CASE(PosixStdlibAtolTest, testStdlibAtol006, Function | MediumTest | Level1) 1613d8536b4Sopenharmony_ci{ 1623d8536b4Sopenharmony_ci const long value = atol("+100"); 1633d8536b4Sopenharmony_ci if (value == 100) { 1643d8536b4Sopenharmony_ci LOG("[DEMO] posix stdlib test case 6:atol(%ld) == +100 ok.\n", value); 1653d8536b4Sopenharmony_ci } else { 1663d8536b4Sopenharmony_ci LOG("[DEMO] posix stdlib test case 6:atol(%ld) fail.\n", value); 1673d8536b4Sopenharmony_ci } 1683d8536b4Sopenharmony_ci ICUNIT_ASSERT_EQUAL(value, 100, value); 1693d8536b4Sopenharmony_ci return 0; 1703d8536b4Sopenharmony_ci} 1713d8536b4Sopenharmony_ci 1723d8536b4Sopenharmony_ci/* * 1733d8536b4Sopenharmony_ci * @tc.number : TEST_STDLIB_ATOL_007 1743d8536b4Sopenharmony_ci * @tc.name : convert string to long integer 1753d8536b4Sopenharmony_ci * @tc.desc : [C- SOFTWARE -0200] 1763d8536b4Sopenharmony_ci */ 1773d8536b4Sopenharmony_ciLITE_TEST_CASE(PosixStdlibAtolTest, testStdlibAtol007, Function | MediumTest | Level1) 1783d8536b4Sopenharmony_ci{ 1793d8536b4Sopenharmony_ci const long value = atol("-100"); 1803d8536b4Sopenharmony_ci if (value == -100) { 1813d8536b4Sopenharmony_ci LOG("[DEMO] posix stdlib test case 7:atol(%ld) == -100 ok.\n", value); 1823d8536b4Sopenharmony_ci } else { 1833d8536b4Sopenharmony_ci LOG("[DEMO] posix stdlib test case 7:atoi(%ld) fail.\n", value); 1843d8536b4Sopenharmony_ci } 1853d8536b4Sopenharmony_ci ICUNIT_ASSERT_EQUAL(value, -100, value); 1863d8536b4Sopenharmony_ci return 0; 1873d8536b4Sopenharmony_ci} 1883d8536b4Sopenharmony_ci 1893d8536b4Sopenharmony_ci/* * 1903d8536b4Sopenharmony_ci * @tc.number : TEST_STDLIB_ATOL_008 1913d8536b4Sopenharmony_ci * @tc.name : convert string to long integer 1923d8536b4Sopenharmony_ci * @tc.desc : [C- SOFTWARE -0200] 1933d8536b4Sopenharmony_ci */ 1943d8536b4Sopenharmony_ciLITE_TEST_CASE(PosixStdlibAtolTest, testStdlibAtol008, Function | MediumTest | Level1) 1953d8536b4Sopenharmony_ci{ 1963d8536b4Sopenharmony_ci long value = atol("+-100"); 1973d8536b4Sopenharmony_ci if (value == 0) { 1983d8536b4Sopenharmony_ci LOG("[DEMO] posix stdlib test case 8(except):atol(%ld) == +-100 ok.\n", value); 1993d8536b4Sopenharmony_ci } else { 2003d8536b4Sopenharmony_ci LOG("[DEMO] posix stdlib test case 8(except):atol(%ld) fail.\n", value); 2013d8536b4Sopenharmony_ci } 2023d8536b4Sopenharmony_ci ICUNIT_ASSERT_EQUAL(value, 0, value); 2033d8536b4Sopenharmony_ci return 0; 2043d8536b4Sopenharmony_ci} 2053d8536b4Sopenharmony_ci 2063d8536b4Sopenharmony_ci/* * 2073d8536b4Sopenharmony_ci * @tc.number : TEST_STDLIB_ATOL_009 2083d8536b4Sopenharmony_ci * @tc.name : convert string to long integer 2093d8536b4Sopenharmony_ci * @tc.desc : [C- SOFTWARE -0200] 2103d8536b4Sopenharmony_ci */ 2113d8536b4Sopenharmony_ciLITE_TEST_CASE(PosixStdlibAtolTest, testStdlibAtol009, Function | MediumTest | Level1) 2123d8536b4Sopenharmony_ci{ 2133d8536b4Sopenharmony_ci long value = atol("12+-100"); 2143d8536b4Sopenharmony_ci if (value == 12) { 2153d8536b4Sopenharmony_ci LOG("[DEMO] posix stdlib test case 9(except):atol(%ld) ok == 12+-100.\n", value); 2163d8536b4Sopenharmony_ci } else { 2173d8536b4Sopenharmony_ci LOG("[DEMO] posix stdlib test case 9(except):atol(%ld) fail.\n", value); 2183d8536b4Sopenharmony_ci } 2193d8536b4Sopenharmony_ci ICUNIT_ASSERT_EQUAL(value, 12, value); 2203d8536b4Sopenharmony_ci return 0; 2213d8536b4Sopenharmony_ci} 2223d8536b4Sopenharmony_ci 2233d8536b4Sopenharmony_ciRUN_TEST_SUITE(PosixStdlibAtolTest); 2243d8536b4Sopenharmony_ci 2253d8536b4Sopenharmony_civoid PosixStdlibAtolFuncTest() 2263d8536b4Sopenharmony_ci{ 2273d8536b4Sopenharmony_ci LOG("begin PosixStdlibAtolFuncTest...."); 2283d8536b4Sopenharmony_ci RUN_ONE_TESTCASE(testStdlibAtol001); 2293d8536b4Sopenharmony_ci RUN_ONE_TESTCASE(testStdlibAtol002); 2303d8536b4Sopenharmony_ci RUN_ONE_TESTCASE(testStdlibAtol003); 2313d8536b4Sopenharmony_ci#if (LOSCFG_LIBC_MUSL == 1) 2323d8536b4Sopenharmony_ci RUN_ONE_TESTCASE(testStdlibAtol004); 2333d8536b4Sopenharmony_ci RUN_ONE_TESTCASE(testStdlibAtol005); 2343d8536b4Sopenharmony_ci#endif 2353d8536b4Sopenharmony_ci RUN_ONE_TESTCASE(testStdlibAtol006); 2363d8536b4Sopenharmony_ci RUN_ONE_TESTCASE(testStdlibAtol007); 2373d8536b4Sopenharmony_ci RUN_ONE_TESTCASE(testStdlibAtol008); 2383d8536b4Sopenharmony_ci RUN_ONE_TESTCASE(testStdlibAtol009); 2393d8536b4Sopenharmony_ci 2403d8536b4Sopenharmony_ci return; 2413d8536b4Sopenharmony_ci}