1111
1212TEST (LlvmLibcLocaltimeR, ValidUnixTimestamp0) {
1313 struct tm *input = nullptr ;
14- time_t t_ptr = 0 ;
14+ const time_t timer = 0 ;
1515
16- struct tm *result = LIBC_NAMESPACE::localtime_r (&t_ptr , input);
16+ struct tm *result = LIBC_NAMESPACE::localtime_r (&timer , input);
1717
1818 ASSERT_EQ (70 , result->tm_year );
1919 ASSERT_EQ (0 , result->tm_mon );
@@ -25,3 +25,40 @@ TEST(LlvmLibcLocaltimeR, ValidUnixTimestamp0) {
2525 ASSERT_EQ (0 , result->tm_yday );
2626 ASSERT_EQ (0 , result->tm_isdst );
2727}
28+
29+ // TODO(zimirza): These tests does not expect the correct output of localtime as per
30+ // specification. This is due to timezone functions removed from
31+ // https://github.com/llvm/llvm-project/pull/110363.
32+ // This will be resolved a new pull request.
33+
34+ TEST (LlvmLibcLocaltimeR, ValidUnixTimestamp) {
35+ struct tm *input = nullptr ;
36+ const time_t timer = 1756595338 ;
37+ struct tm *result = LIBC_NAMESPACE::localtime_r (&timer, input);
38+
39+ ASSERT_EQ (125 , result->tm_year );
40+ ASSERT_EQ (7 , result->tm_mon );
41+ ASSERT_EQ (30 , result->tm_mday );
42+ ASSERT_EQ (23 , result->tm_hour );
43+ ASSERT_EQ (8 , result->tm_min );
44+ ASSERT_EQ (58 , result->tm_sec );
45+ ASSERT_EQ (6 , result->tm_wday );
46+ ASSERT_EQ (241 , result->tm_yday );
47+ ASSERT_EQ (0 , result->tm_isdst );
48+ }
49+
50+ TEST (LlvmLibcLocaltimeR, ValidUnixTimestampNegative) {
51+ struct tm *input = nullptr ;
52+ const time_t timer = -1756595338 ;
53+ struct tm *result = LIBC_NAMESPACE::localtime_r (&timer, input);
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+ }
0 commit comments