xref: /llvm-project/libc/test/src/time/difftime_test.cpp (revision f9c2377fb68e5051b3061186c507f7b87db2a8b2)
112204429SRaman Tenneti //===-- Unittests for difftime --------------------------------------------===//
212204429SRaman Tenneti //
312204429SRaman Tenneti // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
412204429SRaman Tenneti // See https://llvm.org/LICENSE.txt for license information.
512204429SRaman Tenneti // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
612204429SRaman Tenneti //
712204429SRaman Tenneti //===----------------------------------------------------------------------===//
812204429SRaman Tenneti 
912204429SRaman Tenneti #include "src/__support/FPUtil/FPBits.h"
1012204429SRaman Tenneti #include "src/time/difftime.h"
11*f9c2377fSMichael Jones #include "src/time/time_constants.h"
124f1fe19dSSiva Chandra Reddy #include "test/UnitTest/ErrnoSetterMatcher.h"
13af1315c2SSiva Chandra Reddy #include "test/UnitTest/Test.h"
1412204429SRaman Tenneti 
1512204429SRaman Tenneti TEST(LlvmLibcDifftime, SmokeTest) {
16*f9c2377fSMichael Jones   time_t t1_seconds = LIBC_NAMESPACE::time_constants::SECONDS_PER_HOUR;
1712204429SRaman Tenneti   time_t t2_seconds = 0;
1812204429SRaman Tenneti 
19b6bc9d72SGuillaume Chatelet   LIBC_NAMESPACE::fputil::FPBits<long double> expected_fp =
20b6bc9d72SGuillaume Chatelet       LIBC_NAMESPACE::fputil::FPBits<long double>();
21b6bc9d72SGuillaume Chatelet   expected_fp = LIBC_NAMESPACE::fputil::FPBits<long double>(
2212204429SRaman Tenneti       static_cast<long double>(t1_seconds));
2312204429SRaman Tenneti 
24b6bc9d72SGuillaume Chatelet   double result = LIBC_NAMESPACE::difftime(t1_seconds, t2_seconds);
2512204429SRaman Tenneti 
26b6bc9d72SGuillaume Chatelet   LIBC_NAMESPACE::fputil::FPBits<long double> actual_fp =
27b6bc9d72SGuillaume Chatelet       LIBC_NAMESPACE::fputil::FPBits<long double>();
28b6bc9d72SGuillaume Chatelet   actual_fp = LIBC_NAMESPACE::fputil::FPBits<long double>(
2912204429SRaman Tenneti       static_cast<long double>(result));
3012204429SRaman Tenneti 
31d02471edSGuillaume Chatelet   EXPECT_EQ(actual_fp.uintval(), expected_fp.uintval());
3211ec512fSGuillaume Chatelet   EXPECT_EQ(actual_fp.is_neg(), expected_fp.is_neg());
3312204429SRaman Tenneti   EXPECT_EQ(actual_fp.get_exponent(), expected_fp.get_exponent());
3412204429SRaman Tenneti   EXPECT_EQ(actual_fp.get_mantissa(), expected_fp.get_mantissa());
3512204429SRaman Tenneti }
36