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 |