65 lines · cpp
1//===-- Unittests for localtime -------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "src/time/localtime.h"10#include "test/UnitTest/Test.h"11 12TEST(LlvmLibcLocaltime, ValidUnixTimestamp0) {13 const time_t timer = 0;14 struct tm *result = LIBC_NAMESPACE::localtime(&timer);15 16 ASSERT_EQ(70, result->tm_year);17 ASSERT_EQ(0, result->tm_mon);18 ASSERT_EQ(1, result->tm_mday);19 ASSERT_EQ(0, result->tm_hour);20 ASSERT_EQ(0, result->tm_min);21 ASSERT_EQ(0, result->tm_sec);22 ASSERT_EQ(4, result->tm_wday);23 ASSERT_EQ(0, result->tm_yday);24 ASSERT_EQ(0, result->tm_isdst);25}26 27TEST(LlvmLibcLocaltime, NullPtr) {28 EXPECT_DEATH([] { LIBC_NAMESPACE::localtime(nullptr); }, WITH_SIGNAL(4));29}30 31// TODO(zimirza): These tests does not expect the correct output of localtime as32// per specification. This is due to timezone functions removed from33// https://github.com/llvm/llvm-project/pull/110363.34// This will be resolved a new pull request.35 36TEST(LlvmLibcLocaltime, ValidUnixTimestamp) {37 const time_t timer = 1756595338;38 struct tm *result = LIBC_NAMESPACE::localtime(&timer);39 40 ASSERT_EQ(125, result->tm_year);41 ASSERT_EQ(7, result->tm_mon);42 ASSERT_EQ(30, result->tm_mday);43 ASSERT_EQ(23, result->tm_hour);44 ASSERT_EQ(8, result->tm_min);45 ASSERT_EQ(58, result->tm_sec);46 ASSERT_EQ(6, result->tm_wday);47 ASSERT_EQ(241, result->tm_yday);48 ASSERT_EQ(0, result->tm_isdst);49}50 51TEST(LlvmLibcLocaltime, ValidUnixTimestampNegative) {52 const time_t timer = -1756595338;53 struct tm *result = LIBC_NAMESPACE::localtime(&timer);54 55 ASSERT_EQ(14, result->tm_year);56 ASSERT_EQ(4, result->tm_mon);57 ASSERT_EQ(4, result->tm_mday);58 ASSERT_EQ(0, result->tm_hour);59 ASSERT_EQ(51, result->tm_min);60 ASSERT_EQ(2, result->tm_sec);61 ASSERT_EQ(1, result->tm_wday);62 ASSERT_EQ(123, result->tm_yday);63 ASSERT_EQ(0, result->tm_isdst);64}65