Back to index

glibc  2.9
Functions | Variables
tst-strptime.c File Reference
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

Go to the source code of this file.

Functions

static int test_tm (void)
int main (int argc, char *argv[])

Variables

struct {
const char * locale
const char * input
const char * format
int wday
int yday
int mon
int mday
day_tests []
struct {
const char * input
const char * format
const char * output
int wday
int yday
tm_tests []

Function Documentation

int main ( int  argc,
char *  argv[] 
)

Definition at line 125 of file tst-strptime.c.

{
  struct tm tm;
  size_t i;
  int result = 0;

  for (i = 0; i < sizeof (day_tests) / sizeof (day_tests[0]); ++i)
    {
      memset (&tm, '\0', sizeof (tm));

      if (setlocale (LC_ALL, day_tests[i].locale) == NULL)
       {
         printf ("cannot set locale %s: %m\n", day_tests[i].locale);
         exit (EXIT_FAILURE);
       }

      char *ret = strptime (day_tests[i].input, day_tests[i].format, &tm);
      if (ret == NULL)
       {
         printf ("strptime returned NULL for `%s'\n", day_tests[i].input);
         result = 1;
         continue;
       }
      else if (*ret != '\0')
       {
         printf ("not all of `%s' read\n", day_tests[i].input);
         result = 1;
       }

      printf ("strptime (\"%s\", \"%s\", ...)\n"
             "\tshould be: wday = %d, yday = %3d, mon = %2d, mday = %2d\n"
             "\t       is: wday = %d, yday = %3d, mon = %2d, mday = %2d\n",
             day_tests[i].input, day_tests[i].format,
             day_tests[i].wday, day_tests[i].yday,
             day_tests[i].mon, day_tests[i].mday,
             tm.tm_wday, tm.tm_yday, tm.tm_mon, tm.tm_mday);

      if (tm.tm_wday != day_tests[i].wday)
       {
         printf ("weekday for `%s' incorrect: %d instead of %d\n",
                day_tests[i].input, tm.tm_wday, day_tests[i].wday);
         result = 1;
       }
      if (tm.tm_yday != day_tests[i].yday)
       {
         printf ("yearday for `%s' incorrect: %d instead of %d\n",
                day_tests[i].input, tm.tm_yday, day_tests[i].yday);
         result = 1;
       }
      if (tm.tm_mon != day_tests[i].mon)
       {
         printf ("month for `%s' incorrect: %d instead of %d\n",
                day_tests[i].input, tm.tm_mon, day_tests[i].mon);
         result = 1;
       }
      if (tm.tm_mday != day_tests[i].mday)
       {
         printf ("monthday for `%s' incorrect: %d instead of %d\n",
                day_tests[i].input, tm.tm_mday, day_tests[i].mday);
         result = 1;
       }
    }

  setlocale (LC_ALL, "C");

  result |= test_tm ();

  return result;
}

Here is the call graph for this function:

static int test_tm ( void  ) [static]

Definition at line 69 of file tst-strptime.c.

{
  struct tm tm;
  size_t i;
  int result = 0;
  char buf[100];

  for (i = 0; i < sizeof (tm_tests) / sizeof (tm_tests[0]); ++i)
    {
      memset (&tm, '\0', sizeof (tm));

      char *ret = strptime (tm_tests[i].input, tm_tests[i].format, &tm);
      if (ret == NULL)
       {
         printf ("strptime returned NULL for `%s'\n", tm_tests[i].input);
         result = 1;
         continue;
       }
      else if (*ret != '\0')
       {
         printf ("not all of `%s' read\n", tm_tests[i].input);
         result = 1;
       }
      strftime (buf, sizeof (buf), "%F %T", &tm);
      printf ("strptime (\"%s\", \"%s\", ...)\n"
             "\tshould be: %s, wday = %d, yday = %3d\n"
             "\t       is: %s, wday = %d, yday = %3d\n",
             tm_tests[i].input, tm_tests[i].format,
             tm_tests[i].output,
             tm_tests[i].wday, tm_tests[i].yday,
             buf, tm.tm_wday, tm.tm_yday);

      if (strcmp (buf, tm_tests[i].output) != 0)
       {
         printf ("Time and date are not correct.\n");
         result = 1;
       }
      if (tm.tm_wday != tm_tests[i].wday)
       {
         printf ("weekday for `%s' incorrect: %d instead of %d\n",
                tm_tests[i].input, tm.tm_wday, tm_tests[i].wday);
         result = 1;
       }
      if (tm.tm_yday != tm_tests[i].yday)
       {
         printf ("yearday for `%s' incorrect: %d instead of %d\n",
                tm_tests[i].input, tm.tm_yday, tm_tests[i].yday);
         result = 1;
       }
    }

  return result;
}

Here is the call graph for this function:

Here is the caller graph for this function:


Variable Documentation

struct { ... } day_tests[] [static]
struct { ... } tm_tests[] [static]