1*71db0c75SAndroid Build Coastguard Worker //===-- Unittests for atof ------------------------------------------------===// 2*71db0c75SAndroid Build Coastguard Worker // 3*71db0c75SAndroid Build Coastguard Worker // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*71db0c75SAndroid Build Coastguard Worker // See https://llvm.org/LICENSE.txt for license information. 5*71db0c75SAndroid Build Coastguard Worker // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*71db0c75SAndroid Build Coastguard Worker // 7*71db0c75SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===// 8*71db0c75SAndroid Build Coastguard Worker 9*71db0c75SAndroid Build Coastguard Worker #include "src/__support/FPUtil/FPBits.h" 10*71db0c75SAndroid Build Coastguard Worker #include "src/errno/libc_errno.h" 11*71db0c75SAndroid Build Coastguard Worker #include "src/stdlib/atof.h" 12*71db0c75SAndroid Build Coastguard Worker 13*71db0c75SAndroid Build Coastguard Worker #include "test/UnitTest/ErrnoSetterMatcher.h" 14*71db0c75SAndroid Build Coastguard Worker #include "test/UnitTest/Test.h" 15*71db0c75SAndroid Build Coastguard Worker 16*71db0c75SAndroid Build Coastguard Worker #include <stddef.h> 17*71db0c75SAndroid Build Coastguard Worker 18*71db0c75SAndroid Build Coastguard Worker using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Succeeds; 19*71db0c75SAndroid Build Coastguard Worker 20*71db0c75SAndroid Build Coastguard Worker // This is just a simple test to make sure that this function works at all. It's 21*71db0c75SAndroid Build Coastguard Worker // functionally identical to strtod so the bulk of the testing is there. TEST(LlvmLibcAToFTest,SimpleTest)22*71db0c75SAndroid Build Coastguard WorkerTEST(LlvmLibcAToFTest, SimpleTest) { 23*71db0c75SAndroid Build Coastguard Worker LIBC_NAMESPACE::fputil::FPBits<double> expected_fp = 24*71db0c75SAndroid Build Coastguard Worker LIBC_NAMESPACE::fputil::FPBits<double>(uint64_t(0x405ec00000000000)); 25*71db0c75SAndroid Build Coastguard Worker 26*71db0c75SAndroid Build Coastguard Worker LIBC_NAMESPACE::libc_errno = 0; 27*71db0c75SAndroid Build Coastguard Worker EXPECT_THAT(LIBC_NAMESPACE::atof("123"), 28*71db0c75SAndroid Build Coastguard Worker Succeeds<double>(expected_fp.get_val())); 29*71db0c75SAndroid Build Coastguard Worker } 30*71db0c75SAndroid Build Coastguard Worker TEST(LlvmLibcAToFTest,FailedParsingTest)31*71db0c75SAndroid Build Coastguard WorkerTEST(LlvmLibcAToFTest, FailedParsingTest) { 32*71db0c75SAndroid Build Coastguard Worker LIBC_NAMESPACE::libc_errno = 0; 33*71db0c75SAndroid Build Coastguard Worker // atof does not flag errors. 34*71db0c75SAndroid Build Coastguard Worker EXPECT_THAT(LIBC_NAMESPACE::atof("???"), Succeeds<double>(0.0)); 35*71db0c75SAndroid Build Coastguard Worker } 36