brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.1 KiB · 144060c Raw
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