| 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 | |
| 18 | int __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 | |