1// Licensed to the .NET Foundation under one or more agreements.
2// The .NET Foundation licenses this file to you under the MIT license.
3// See the LICENSE file in the project root for more information.
4
5/*=====================================================================
6**
7** Source: test1.c (localtime)
8**
9** Purpose: Tests the PAL implementation of the localtime function.
10** localtime() is passed a date in seconds, since January 01
11** 1970 midnight, UTC. localtime() converts the time to the
12** tm struct, those values are tested for validity.
13**
14**
15**===================================================================*/
16#include <palsuite.h>
17
18int __cdecl main(int argc, char **argv)
19{
20 time_t dates[] ={1003327482, // Oct 17, 2001 10:04:42 am
21 701307301, // March 22, 1992 6:35:01 pm
22 973620900, // Nov 07, 2000 1:15:00 pm
23 924632589, // April 20, 1999 2:23:09 pm
24 951934989}; // March 01, 2000 1:23:09 pm
25 struct tm * converted_date;
26 int i;
27
28 if (PAL_Initialize(argc, argv) != 0)
29
30 return (FAIL);
31
32 /*Convert from time_t to struct tm*/
33 for ( i=0; i < (sizeof(dates)/sizeof(time_t)); i++)
34 {
35 converted_date = localtime(&dates[i]);
36
37 if ((converted_date->tm_hour < 0) || (converted_date->tm_hour > 23))
38 {
39 Fail("ERROR: localtime returned %d for tm_hour\n", converted_date->tm_hour);
40 }
41 if ((converted_date->tm_mday < 1) || (converted_date->tm_mday > 31))
42 {
43 Fail("ERROR: localtime returned %d for tm_mday\n",converted_date->tm_mday);
44 }
45 if ((converted_date->tm_min < 0) || (converted_date->tm_min > 59))
46 {
47 Fail("ERROR: localtime returned %d for tm_min\n",converted_date->tm_min);
48 }
49 if ((converted_date->tm_mon < 0) || (converted_date->tm_mon > 11))
50 {
51 Fail("ERROR: localtime returned %d for tm_mon\n",converted_date->tm_mon);
52 }
53 if ((converted_date->tm_sec < 0) || (converted_date->tm_sec > 59))
54 {
55 Fail("ERROR: localtime returned %d for tm_sec\n",converted_date->tm_sec);
56 }
57 if ((converted_date->tm_wday < 0) || (converted_date->tm_wday > 6 ))
58 {
59 Fail("ERROR: localtime returned %d for tm_wday\n",converted_date->tm_wday);
60 }
61 if ((converted_date->tm_yday < 0) || (converted_date->tm_yday > 365))
62 {
63 Fail("ERROR: localtime returned %d for tm_yday\n",converted_date->tm_yday);
64 }
65 }
66
67 PAL_Terminate();
68 return (PASS);
69}
70