summaryrefslogtreecommitdiff
path: root/time/tst-mktime.c
blob: c1473600dd695ae9714942bdb413219e604409fb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <time.h>

static int
do_test (void)
{
  struct tm time_str, *tm;
  time_t t;
  char daybuf[20];
  int result;

  time_str.tm_year = 2001 - 1900;
  time_str.tm_mon = 7 - 1;
  time_str.tm_mday = 4;
  time_str.tm_hour = 0;
  time_str.tm_min = 0;
  time_str.tm_sec = 1;
  time_str.tm_isdst = -1;

  if (mktime (&time_str) == -1)
    {
      (void) puts ("-unknown-");
      result = 1;
    }
  else
    {
      (void) strftime (daybuf, sizeof (daybuf), "%A", &time_str);
      (void) puts (daybuf);
      result = strcmp (daybuf, "Wednesday") != 0;
    }

  setenv ("TZ", "EST+5", 1);
#define EVENING69 1 * 60 * 60 + 2 * 60 + 29
  t = EVENING69;
  tm = localtime (&t);
  if (tm == NULL)
    {
      (void) puts ("localtime returned NULL");
      result = 1;
    }
  else
    {
      time_str = *tm;
      t = mktime (&time_str);
      if (t != EVENING69)
        {
          printf ("mktime returned %ld, expected %d\n",
		  (long) t, EVENING69);
	  result = 1;
        }
      else
        (void) puts ("Dec 31 1969 EST test passed");

      setenv ("TZ", "CET-1", 1);
      t = mktime (&time_str);
#define EVENING69_CET (EVENING69 - (5 - -1) * 60 * 60)
      if (t != EVENING69_CET)
        {
	  printf ("mktime returned %ld, expected %ld\n",
		  (long) t, (long) EVENING69_CET);
	  result = 1;
        }
      else
        (void) puts ("Dec 31 1969 CET test passed");
    }

  return result;
}

#define TEST_FUNCTION do_test ()
#include "../test-skeleton.c"