Blame time/tst-mktime3.c

Packit 6c4009
/* Test program for mktime bugs with out-of-range tm_sec values.  */
Packit 6c4009
Packit 6c4009
#include <stdlib.h>
Packit 6c4009
#include <stdio.h>
Packit 6c4009
#include <time.h>
Packit 6c4009
Packit 6c4009
struct tm tests[] =
Packit 6c4009
{
Packit 6c4009
  { .tm_sec = -1, .tm_mday = 1, .tm_year = 104 },
Packit 6c4009
  { .tm_sec = 65, .tm_min = 59, .tm_hour = 23, .tm_mday = 31,
Packit 6c4009
    .tm_mon = 11, .tm_year = 101 }
Packit 6c4009
};
Packit 6c4009
struct tm expected[] =
Packit 6c4009
{
Packit 6c4009
  { .tm_sec = 59, .tm_min = 59, .tm_hour = 23, .tm_mday = 31,
Packit 6c4009
    .tm_mon = 11, .tm_year = 103, .tm_wday = 3, .tm_yday = 364 },
Packit 6c4009
  { .tm_sec = 5, .tm_mday = 1, .tm_year = 102, .tm_wday = 2 }
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
static int
Packit 6c4009
do_test (void)
Packit 6c4009
{
Packit 6c4009
  setenv ("TZ", "UTC", 1);
Packit 6c4009
  int i;
Packit 6c4009
  for (i = 0; i < sizeof (tests) / sizeof (tests[0]); ++i)
Packit 6c4009
    {
Packit 6c4009
      if (mktime (&tests[i]) < 0)
Packit 6c4009
	{
Packit 6c4009
	  printf ("mktime %d failed\n", i);
Packit 6c4009
	  return 1;
Packit 6c4009
	}
Packit 6c4009
#define CHECK(name) \
Packit 6c4009
      if (tests[i].name != expected[i].name)			\
Packit 6c4009
	{							\
Packit 6c4009
	  printf ("test %d " #name " got %d expected %d\n",	\
Packit 6c4009
		  i, tests[i].name, expected[i].name);		\
Packit 6c4009
	  return 1;						\
Packit 6c4009
	}
Packit 6c4009
      CHECK (tm_sec)
Packit 6c4009
      CHECK (tm_min)
Packit 6c4009
      CHECK (tm_hour)
Packit 6c4009
      CHECK (tm_mday)
Packit 6c4009
      CHECK (tm_mon)
Packit 6c4009
      CHECK (tm_year)
Packit 6c4009
      CHECK (tm_wday)
Packit 6c4009
      CHECK (tm_yday)
Packit 6c4009
      CHECK (tm_isdst)
Packit 6c4009
    }
Packit 6c4009
  return 0;
Packit 6c4009
}
Packit 6c4009
Packit 6c4009
#define TEST_FUNCTION do_test ()
Packit 6c4009
#include "../test-skeleton.c"