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 "limits.h" 383d8536b4Sopenharmony_ci#include "stdlib.h" 393d8536b4Sopenharmony_ci#include "string.h" 403d8536b4Sopenharmony_ci#include "log.h" 413d8536b4Sopenharmony_ci 423d8536b4Sopenharmony_ci/* * 433d8536b4Sopenharmony_ci * @tc.desc : register a test suite, this suite is used to test basic flow and interface dependency 443d8536b4Sopenharmony_ci * @param : subsystem name is utils 453d8536b4Sopenharmony_ci * @param : module name is utilsFile 463d8536b4Sopenharmony_ci * @param : test suit name is CmsisTaskFuncTestSuite 473d8536b4Sopenharmony_ci */ 483d8536b4Sopenharmony_ciLITE_TEST_SUIT(Posix, Posixtimer, PosixStdlibAtollTest); 493d8536b4Sopenharmony_ci 503d8536b4Sopenharmony_ci/* * 513d8536b4Sopenharmony_ci * @tc.setup : setup for all testcases 523d8536b4Sopenharmony_ci * @return : setup result, TRUE is success, FALSE is fail 533d8536b4Sopenharmony_ci */ 543d8536b4Sopenharmony_cistatic BOOL PosixStdlibAtollTestSetUp(void) 553d8536b4Sopenharmony_ci{ 563d8536b4Sopenharmony_ci return TRUE; 573d8536b4Sopenharmony_ci} 583d8536b4Sopenharmony_ci 593d8536b4Sopenharmony_ci/* * 603d8536b4Sopenharmony_ci * @tc.teardown : teardown for all testcases 613d8536b4Sopenharmony_ci * @return : teardown result, TRUE is success, FALSE is fail 623d8536b4Sopenharmony_ci */ 633d8536b4Sopenharmony_cistatic BOOL PosixStdlibAtollTestTearDown(void) 643d8536b4Sopenharmony_ci{ 653d8536b4Sopenharmony_ci LOG("+-------------------------------------------+\n"); 663d8536b4Sopenharmony_ci return TRUE; 673d8536b4Sopenharmony_ci} 683d8536b4Sopenharmony_ci 693d8536b4Sopenharmony_ci/* * 703d8536b4Sopenharmony_ci * @tc.number : TEST_STDLIB_ATOLL_001 713d8536b4Sopenharmony_ci * @tc.name : convert string to long long integer 723d8536b4Sopenharmony_ci * @tc.desc : [C- SOFTWARE -0200] 733d8536b4Sopenharmony_ci */ 743d8536b4Sopenharmony_ciLITE_TEST_CASE(PosixStdlibAtollTest, testStdlibAtoll001, Function | MediumTest | Level1) 753d8536b4Sopenharmony_ci{ 763d8536b4Sopenharmony_ci long long value = atoll("9223372036854775807"); 773d8536b4Sopenharmony_ci if (value == 9223372036854775807LL) { 783d8536b4Sopenharmony_ci LOG("[DEMO] posix stdlib test case 1:atoll(%lld) ok.\n", value); 793d8536b4Sopenharmony_ci } else { 803d8536b4Sopenharmony_ci LOG("[DEMO] posix stdlib test case 1:atoll(%lld) fail.\n", value); 813d8536b4Sopenharmony_ci } 823d8536b4Sopenharmony_ci ICUNIT_ASSERT_EQUAL(value, 9223372036854775807LL, 0); 833d8536b4Sopenharmony_ci return 0; 843d8536b4Sopenharmony_ci} 853d8536b4Sopenharmony_ci 863d8536b4Sopenharmony_ci/* * 873d8536b4Sopenharmony_ci * @tc.number : TEST_STDLIB_ATOLL_002 883d8536b4Sopenharmony_ci * @tc.name : convert string to long long integer 893d8536b4Sopenharmony_ci * @tc.desc : [C- SOFTWARE -0200] 903d8536b4Sopenharmony_ci */ 913d8536b4Sopenharmony_ciLITE_TEST_CASE(PosixStdlibAtollTest, testStdlibAtoll002, Function | MediumTest | Level1) 923d8536b4Sopenharmony_ci{ 933d8536b4Sopenharmony_ci long long value = atoll("-9223372036854775808"); 943d8536b4Sopenharmony_ci if (value == -9223372036854775808ULL) { 953d8536b4Sopenharmony_ci LOG("[DEMO] posix stdlib test case 2:atoll(%lld) ok.\n", value); 963d8536b4Sopenharmony_ci } else { 973d8536b4Sopenharmony_ci LOG("[DEMO] posix stdlib test case 2:atoll(%lld) fail.\n", value); 983d8536b4Sopenharmony_ci } 993d8536b4Sopenharmony_ci ICUNIT_ASSERT_EQUAL(value, -9223372036854775808ULL, 0); 1003d8536b4Sopenharmony_ci return 0; 1013d8536b4Sopenharmony_ci} 1023d8536b4Sopenharmony_ci 1033d8536b4Sopenharmony_ci/* * 1043d8536b4Sopenharmony_ci * @tc.number : TEST_STDLIB_ATOLL_003 1053d8536b4Sopenharmony_ci * @tc.name : convert string to long long integer 1063d8536b4Sopenharmony_ci * @tc.desc : [C- SOFTWARE -0200] 1073d8536b4Sopenharmony_ci */ 1083d8536b4Sopenharmony_ciLITE_TEST_CASE(PosixStdlibAtollTest, testStdlibAtoll003, Function | MediumTest | Level1) 1093d8536b4Sopenharmony_ci{ 1103d8536b4Sopenharmony_ci long long value = atoll("100"); 1113d8536b4Sopenharmony_ci if (value == 100LL) { 1123d8536b4Sopenharmony_ci LOG("[DEMO] posix stdlib test case 3:atoll(%lld) ok.\n", value); 1133d8536b4Sopenharmony_ci } else { 1143d8536b4Sopenharmony_ci LOG("[DEMO] posix stdlib test case 3:atoll(%lld) fail.\n", value); 1153d8536b4Sopenharmony_ci } 1163d8536b4Sopenharmony_ci ICUNIT_ASSERT_EQUAL(value, 100LL, 0); 1173d8536b4Sopenharmony_ci return 0; 1183d8536b4Sopenharmony_ci} 1193d8536b4Sopenharmony_ci 1203d8536b4Sopenharmony_ci#if (LOSCFG_LIBC_MUSL == 1) 1213d8536b4Sopenharmony_ci/* * 1223d8536b4Sopenharmony_ci * @tc.number : TEST_STDLIB_ATOLL_004 1233d8536b4Sopenharmony_ci * @tc.name : convert string to long long integer 1243d8536b4Sopenharmony_ci * @tc.desc : [C- SOFTWARE -0200] 1253d8536b4Sopenharmony_ci */ 1263d8536b4Sopenharmony_ciLITE_TEST_CASE(PosixStdlibAtollTest, testStdlibAtoll004, Function | MediumTest | Level1) 1273d8536b4Sopenharmony_ci{ 1283d8536b4Sopenharmony_ci long long value = atoll("9223372036854775808"); 1293d8536b4Sopenharmony_ci if (value == -9223372036854775808ULL) { 1303d8536b4Sopenharmony_ci LOG("[DEMO] posix stdlib test case 4(except):atoll(%lld) != 9223372036854775808 ok.\n", value); 1313d8536b4Sopenharmony_ci } else { 1323d8536b4Sopenharmony_ci LOG("[DEMO] posix stdlib test case 4(except):atoll(%lld) fail.\n", value); 1333d8536b4Sopenharmony_ci } 1343d8536b4Sopenharmony_ci ICUNIT_ASSERT_EQUAL(value, LLONG_MIN, 0); 1353d8536b4Sopenharmony_ci return 0; 1363d8536b4Sopenharmony_ci} 1373d8536b4Sopenharmony_ci 1383d8536b4Sopenharmony_ci/* * 1393d8536b4Sopenharmony_ci * @tc.number : TEST_STDLIB_ATOLL_005 1403d8536b4Sopenharmony_ci * @tc.name : convert string to long long integer 1413d8536b4Sopenharmony_ci * @tc.desc : [C- SOFTWARE -0200] 1423d8536b4Sopenharmony_ci */ 1433d8536b4Sopenharmony_ciLITE_TEST_CASE(PosixStdlibAtollTest, testStdlibAtoll005, Function | MediumTest | Level1) 1443d8536b4Sopenharmony_ci{ 1453d8536b4Sopenharmony_ci long long value = atoll("-9223372036854775809"); 1463d8536b4Sopenharmony_ci if (value == 9223372036854775807LL) { 1473d8536b4Sopenharmony_ci LOG("[DEMO] posix stdlib test case 5(except):atoll(%lld) != -9223372036854775809 ok.\n", value); 1483d8536b4Sopenharmony_ci } else { 1493d8536b4Sopenharmony_ci LOG("[DEMO] posix stdlib test case 5(except):atoll(%lld) fail.\n", value); 1503d8536b4Sopenharmony_ci } 1513d8536b4Sopenharmony_ci 1523d8536b4Sopenharmony_ci ICUNIT_ASSERT_EQUAL(value, LLONG_MAX, 0); 1533d8536b4Sopenharmony_ci return 0; 1543d8536b4Sopenharmony_ci} 1553d8536b4Sopenharmony_ci#endif 1563d8536b4Sopenharmony_ci 1573d8536b4Sopenharmony_ci/* * 1583d8536b4Sopenharmony_ci * @tc.number : TEST_STDLIB_ATOLL_006 1593d8536b4Sopenharmony_ci * @tc.name : convert string to long long integer 1603d8536b4Sopenharmony_ci * @tc.desc : [C- SOFTWARE -0200] 1613d8536b4Sopenharmony_ci */ 1623d8536b4Sopenharmony_ciLITE_TEST_CASE(PosixStdlibAtollTest, testStdlibAtoll006, Function | MediumTest | Level1) 1633d8536b4Sopenharmony_ci{ 1643d8536b4Sopenharmony_ci long long value = atoll("+100"); 1653d8536b4Sopenharmony_ci if (value == 100LL) { 1663d8536b4Sopenharmony_ci LOG("[DEMO] posix stdlib test case 6:atoll(%lld) == +100 ok.\n", value); 1673d8536b4Sopenharmony_ci } else { 1683d8536b4Sopenharmony_ci LOG("[DEMO] posix stdlib test case 6:atoll(%lld) fail.\n", value); 1693d8536b4Sopenharmony_ci } 1703d8536b4Sopenharmony_ci ICUNIT_ASSERT_EQUAL(value, 100LL, 0); 1713d8536b4Sopenharmony_ci return 0; 1723d8536b4Sopenharmony_ci} 1733d8536b4Sopenharmony_ci 1743d8536b4Sopenharmony_ci/* * 1753d8536b4Sopenharmony_ci * @tc.number : TEST_STDLIB_ATOLL_007 1763d8536b4Sopenharmony_ci * @tc.name : convert string to long long integer 1773d8536b4Sopenharmony_ci * @tc.desc : [C- SOFTWARE -0200] 1783d8536b4Sopenharmony_ci */ 1793d8536b4Sopenharmony_ciLITE_TEST_CASE(PosixStdlibAtollTest, testStdlibAtoll007, Function | MediumTest | Level1) 1803d8536b4Sopenharmony_ci{ 1813d8536b4Sopenharmony_ci long long value = atoll("-100"); 1823d8536b4Sopenharmony_ci if (value == -100LL) { 1833d8536b4Sopenharmony_ci LOG("[DEMO] posix stdlib test case 7:atoll(%lld) == -100 ok.\n", value); 1843d8536b4Sopenharmony_ci } else { 1853d8536b4Sopenharmony_ci LOG("[DEMO] posix stdlib test case 7:atoll(%lld) fail.\n", value); 1863d8536b4Sopenharmony_ci } 1873d8536b4Sopenharmony_ci ICUNIT_ASSERT_EQUAL(value, -100LL, 0); 1883d8536b4Sopenharmony_ci return 0; 1893d8536b4Sopenharmony_ci} 1903d8536b4Sopenharmony_ci 1913d8536b4Sopenharmony_ci/* * 1923d8536b4Sopenharmony_ci * @tc.number : TEST_STDLIB_ATOLL_008 1933d8536b4Sopenharmony_ci * @tc.name : convert string to long long integer 1943d8536b4Sopenharmony_ci * @tc.desc : [C- SOFTWARE -0200] 1953d8536b4Sopenharmony_ci */ 1963d8536b4Sopenharmony_ciLITE_TEST_CASE(PosixStdlibAtollTest, testStdlibAtoll008, Function | MediumTest | Level1) 1973d8536b4Sopenharmony_ci{ 1983d8536b4Sopenharmony_ci long long value = atoll("+-100"); 1993d8536b4Sopenharmony_ci if (value == 0LL) { 2003d8536b4Sopenharmony_ci LOG("[DEMO] posix stdlib test case 8(except):atoll(%lld) == +-100 ok.\n", value); 2013d8536b4Sopenharmony_ci } else { 2023d8536b4Sopenharmony_ci LOG("[DEMO] posix stdlib test case 8(except):atoll(%lld) fail.\n", value); 2033d8536b4Sopenharmony_ci } 2043d8536b4Sopenharmony_ci ICUNIT_ASSERT_EQUAL(value, 0LL, 0); 2053d8536b4Sopenharmony_ci return 0; 2063d8536b4Sopenharmony_ci} 2073d8536b4Sopenharmony_ci 2083d8536b4Sopenharmony_ci/* * 2093d8536b4Sopenharmony_ci * @tc.number : TEST_STDLIB_ATOLL_009 2103d8536b4Sopenharmony_ci * @tc.name : convert string to long long integer 2113d8536b4Sopenharmony_ci * @tc.desc : [C- SOFTWARE -0200] 2123d8536b4Sopenharmony_ci */ 2133d8536b4Sopenharmony_ciLITE_TEST_CASE(PosixStdlibAtollTest, testStdlibAtoll009, Function | MediumTest | Level1) 2143d8536b4Sopenharmony_ci{ 2153d8536b4Sopenharmony_ci long long value = atoll("12+-100"); 2163d8536b4Sopenharmony_ci if (value == 12LL) { 2173d8536b4Sopenharmony_ci LOG("[DEMO] posix stdlib test case 9(except):atoll(%lld) ok == 12+-100.\n", value); 2183d8536b4Sopenharmony_ci } else { 2193d8536b4Sopenharmony_ci LOG("[DEMO] posix stdlib test case 9(except):atoll(%lld) fail.\n", value); 2203d8536b4Sopenharmony_ci } 2213d8536b4Sopenharmony_ci ICUNIT_ASSERT_EQUAL(value, 12LL, 0); 2223d8536b4Sopenharmony_ci return 0; 2233d8536b4Sopenharmony_ci} 2243d8536b4Sopenharmony_ci 2253d8536b4Sopenharmony_ciRUN_TEST_SUITE(PosixStdlibAtollTest); 2263d8536b4Sopenharmony_ci 2273d8536b4Sopenharmony_civoid PosixStdlibAtollFuncTest() 2283d8536b4Sopenharmony_ci{ 2293d8536b4Sopenharmony_ci LOG("begin PosixStdlibAtollFuncTest...."); 2303d8536b4Sopenharmony_ci RUN_ONE_TESTCASE(testStdlibAtoll001); 2313d8536b4Sopenharmony_ci RUN_ONE_TESTCASE(testStdlibAtoll002); 2323d8536b4Sopenharmony_ci RUN_ONE_TESTCASE(testStdlibAtoll003); 2333d8536b4Sopenharmony_ci#if (LOSCFG_LIBC_MUSL == 1) 2343d8536b4Sopenharmony_ci RUN_ONE_TESTCASE(testStdlibAtoll004); 2353d8536b4Sopenharmony_ci RUN_ONE_TESTCASE(testStdlibAtoll005); 2363d8536b4Sopenharmony_ci#endif 2373d8536b4Sopenharmony_ci RUN_ONE_TESTCASE(testStdlibAtoll006); 2383d8536b4Sopenharmony_ci RUN_ONE_TESTCASE(testStdlibAtoll007); 2393d8536b4Sopenharmony_ci RUN_ONE_TESTCASE(testStdlibAtoll008); 2403d8536b4Sopenharmony_ci RUN_ONE_TESTCASE(testStdlibAtoll009); 2413d8536b4Sopenharmony_ci 2423d8536b4Sopenharmony_ci return; 2433d8536b4Sopenharmony_ci}