root/lib/replace/test/strptime.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. libreplace_test_strptime
  2. main

   1 
   2 #ifdef LIBREPLACE_CONFIGURE_TEST_STRPTIME
   3 
   4 #include <stdio.h>
   5 #include <stdlib.h>
   6 #include <time.h>
   7 
   8 #define true 1
   9 #define false 0
  10 
  11 #ifndef __STRING
  12 #define __STRING(x)    #x
  13 #endif
  14 
  15 /* make printf a no-op */
  16 #define printf if(0) printf
  17 
  18 #else /* LIBREPLACE_CONFIGURE_TEST_STRPTIME */
  19 
  20 #include "replace.h"
  21 #include "system/time.h"
  22 
  23 #endif /* LIBREPLACE_CONFIGURE_TEST_STRPTIME */
  24 
  25 int libreplace_test_strptime(void)
     /* [<][>][^][v][top][bottom][index][help] */
  26 {
  27         const char *s = "20070414101546Z";
  28         char *ret;
  29         struct tm t, t2;
  30 
  31         memset(&t, 0, sizeof(t));
  32         memset(&t2, 0, sizeof(t2));
  33 
  34         printf("test: strptime\n");
  35 
  36         ret = strptime(s, "%Y%m%d%H%M%S", &t);
  37         if ( ret == NULL ) {
  38                 printf("failure: strptime [\n"
  39                        "returned NULL\n"
  40                        "]\n");
  41                 return false;
  42         }
  43 
  44         if ( *ret != 'Z' ) {
  45                 printf("failure: strptime [\n"
  46                        "ret doesn't point to 'Z'\n"
  47                        "]\n");
  48                 return false;
  49         }
  50 
  51         ret = strptime(s, "%Y%m%d%H%M%SZ", &t2);
  52         if ( ret == NULL ) {
  53                 printf("failure: strptime [\n"
  54                        "returned NULL with Z\n"
  55                        "]\n");
  56                 return false;
  57         }
  58 
  59         if ( *ret != '\0' ) {
  60                 printf("failure: strptime [\n"
  61                        "ret doesn't point to '\\0'\n"
  62                        "]\n");
  63                 return false;
  64         }
  65 
  66 #define CMP_TM_ELEMENT(t1,t2,elem) \
  67         if (t1.elem != t2.elem) { \
  68                 printf("failure: strptime [\n" \
  69                        "result differs if the format string has a 'Z' at the end\n" \
  70                        "element: %s %d != %d\n" \
  71                        "]\n", \
  72                        __STRING(elen), t1.elem, t2.elem); \
  73                 return false; \
  74         }
  75 
  76         CMP_TM_ELEMENT(t,t2,tm_sec);
  77         CMP_TM_ELEMENT(t,t2,tm_min);
  78         CMP_TM_ELEMENT(t,t2,tm_hour);
  79         CMP_TM_ELEMENT(t,t2,tm_mday);
  80         CMP_TM_ELEMENT(t,t2,tm_mon);
  81         CMP_TM_ELEMENT(t,t2,tm_year);
  82         CMP_TM_ELEMENT(t,t2,tm_wday);
  83         CMP_TM_ELEMENT(t,t2,tm_yday);
  84         CMP_TM_ELEMENT(t,t2,tm_isdst);
  85 
  86         if (t.tm_sec != 46) {
  87                 printf("failure: strptime [\n"
  88                        "tm_sec: expected: 46, got: %d\n"
  89                        "]\n",
  90                        t.tm_sec);
  91                 return false;
  92         }
  93 
  94         if (t.tm_min != 15) {
  95                 printf("failure: strptime [\n"
  96                        "tm_min: expected: 15, got: %d\n"
  97                        "]\n",
  98                        t.tm_min);
  99                 return false;
 100         }
 101 
 102         if (t.tm_hour != 10) {
 103                 printf("failure: strptime [\n"
 104                        "tm_hour: expected: 10, got: %d\n"
 105                        "]\n",
 106                        t.tm_hour);
 107                 return false;
 108         }
 109 
 110         if (t.tm_mday != 14) {
 111                 printf("failure: strptime [\n"
 112                        "tm_mday: expected: 14, got: %d\n"
 113                        "]\n",
 114                        t.tm_mday);
 115                 return false;
 116         }
 117 
 118         if (t.tm_mon != 3) {
 119                 printf("failure: strptime [\n"
 120                        "tm_mon: expected: 3, got: %d\n"
 121                        "]\n",
 122                        t.tm_mon);
 123                 return false;
 124         }
 125 
 126         if (t.tm_year != 107) {
 127                 printf("failure: strptime [\n"
 128                        "tm_year: expected: 107, got: %d\n"
 129                        "]\n",
 130                        t.tm_year);
 131                 return false;
 132         }
 133 
 134         if (t.tm_wday != 6) { /* saturday */
 135                 printf("failure: strptime [\n"
 136                        "tm_wday: expected: 6, got: %d\n"
 137                        "]\n",
 138                        t.tm_wday);
 139                 return false;
 140         }
 141 
 142         if (t.tm_yday != 103) {
 143                 printf("failure: strptime [\n"
 144                        "tm_yday: expected: 103, got: %d\n"
 145                        "]\n",
 146                        t.tm_yday);
 147                 return false;
 148         }
 149 
 150         /* we don't test this as it depends on the host configuration
 151         if (t.tm_isdst != 0) {
 152                 printf("failure: strptime [\n"
 153                        "tm_isdst: expected: 0, got: %d\n"
 154                        "]\n",
 155                        t.tm_isdst);
 156                 return false;
 157         }*/
 158 
 159         printf("success: strptime\n");
 160 
 161         return true;
 162 }
 163 
 164 #ifdef LIBREPLACE_CONFIGURE_TEST_STRPTIME
 165 int main (void)
     /* [<][>][^][v][top][bottom][index][help] */
 166 {
 167         int ret;
 168         ret = libreplace_test_strptime();
 169         if (ret == false) return 1;
 170         return 0;
 171 }
 172 #endif

/* [<][>][^][v][top][bottom][index][help] */