| OLD | NEW |
| (Empty) |
| 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) | |
| 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) | |
| 166 { | |
| 167 int ret; | |
| 168 ret = libreplace_test_strptime(); | |
| 169 if (ret == false) return 1; | |
| 170 return 0; | |
| 171 } | |
| 172 #endif | |
| OLD | NEW |