59 lines · cpp
1//===-- Unittests for ctime_r ---------------------------------------------===//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/ctime_r.h"10#include "src/time/time_constants.h"11#include "test/UnitTest/ErrnoCheckingTest.h"12#include "test/UnitTest/Test.h"13#include "test/src/time/TmHelper.h"14 15using LlvmLibcCtimeR = LIBC_NAMESPACE::testing::ErrnoCheckingTest;16 17TEST_F(LlvmLibcCtimeR, Nullptr) {18 char *result;19 result = LIBC_NAMESPACE::ctime_r(nullptr, nullptr);20 ASSERT_STREQ(nullptr, result);21 22 char buffer[LIBC_NAMESPACE::time_constants::ASCTIME_BUFFER_SIZE];23 result = LIBC_NAMESPACE::ctime_r(nullptr, buffer);24 ASSERT_STREQ(nullptr, result);25 26 time_t t;27 result = LIBC_NAMESPACE::ctime_r(&t, nullptr);28 ASSERT_STREQ(nullptr, result);29}30 31TEST_F(LlvmLibcCtimeR, ValidUnixTimestamp0) {32 char buffer[LIBC_NAMESPACE::time_constants::ASCTIME_BUFFER_SIZE];33 time_t t;34 char *result;35 // 1970-01-01 00:00:00. Test with a valid buffer size.36 t = 0;37 result = LIBC_NAMESPACE::ctime_r(&t, buffer);38 ASSERT_STREQ("Thu Jan 1 00:00:00 1970\n", result);39}40 41TEST_F(LlvmLibcCtimeR, ValidUnixTimestamp32Int) {42 char buffer[LIBC_NAMESPACE::time_constants::ASCTIME_BUFFER_SIZE];43 time_t t;44 char *result;45 // 2038-01-19 03:14:07. Test with a valid buffer size.46 t = 2147483647;47 result = LIBC_NAMESPACE::ctime_r(&t, buffer);48 ASSERT_STREQ("Tue Jan 19 03:14:07 2038\n", result);49}50 51TEST_F(LlvmLibcCtimeR, InvalidArgument) {52 char buffer[LIBC_NAMESPACE::time_constants::ASCTIME_BUFFER_SIZE];53 time_t t;54 char *result;55 t = 2147483648;56 result = LIBC_NAMESPACE::ctime_r(&t, buffer);57 ASSERT_STREQ(nullptr, result);58}59