Lines 11-16
Link Here
|
11 |
#include <sys/types.h> |
11 |
#include <sys/types.h> |
12 |
#include "time.h" |
12 |
#include "time.h" |
13 |
|
13 |
|
|
|
14 |
#define ALLOW_UW_TESTS 0 |
15 |
|
16 |
char *strptime (const char *, const char *, struct tm *); |
17 |
|
14 |
static int failures = 0; |
18 |
static int failures = 0; |
15 |
|
19 |
|
16 |
static void explain (char *title, char *fmt, char *src) |
20 |
static void explain (char *title, char *fmt, char *src) |
Lines 164-169
Link Here
|
164 |
printf ("\n"); |
168 |
printf ("\n"); |
165 |
} |
169 |
} |
166 |
|
170 |
|
|
|
171 |
#if ALLOW_UW_TESTS |
172 |
|
167 |
/* Special test for the %U format string. Try to convert |
173 |
/* Special test for the %U format string. Try to convert |
168 |
"2009 21", which is 5/31/2009 */ |
174 |
"2009 21", which is 5/31/2009 */ |
169 |
|
175 |
|
Lines 179-192
Link Here
|
179 |
r.tm_mday == 31 && |
185 |
r.tm_mday == 31 && |
180 |
r.tm_year == 109 && |
186 |
r.tm_year == 109 && |
181 |
r.tm_wday == 0 && |
187 |
r.tm_wday == 0 && |
182 |
r.tm_yday == 151) |
188 |
r.tm_yday == 150) |
183 |
printf ("Result: Sunday May 31 2009, yday 151 [week 21] (ok)\n"); |
189 |
printf ("Result: Sunday May 31 2009, yday 150 [week 21] (ok)\n"); |
184 |
else |
190 |
else |
185 |
{ |
191 |
{ |
186 |
failures++; |
192 |
failures++; |
187 |
printf ("Result: failed. %02d/%02d/%04d wday=%d yday=%d\n", |
193 |
printf ("Result: failed. %02d/%02d/%04d wday=%d yday=%d\n", |
188 |
r.tm_mon+1, r.tm_mday, r.tm_year+1900, r.tm_wday, r.tm_yday); |
194 |
r.tm_mon+1, r.tm_mday, r.tm_year+1900, r.tm_wday, r.tm_yday); |
189 |
printf ("Expected 05/31/2009 wday=0 yday=151\n"); |
195 |
printf ("Expected 05/31/2009 wday=0 yday=150\n"); |
190 |
} |
196 |
} |
191 |
printf ("\n"); |
197 |
printf ("\n"); |
192 |
} |
198 |
} |
Lines 206-219
Link Here
|
206 |
r.tm_mday == 1 && |
212 |
r.tm_mday == 1 && |
207 |
r.tm_year == 109 && |
213 |
r.tm_year == 109 && |
208 |
r.tm_wday == 1 && |
214 |
r.tm_wday == 1 && |
209 |
r.tm_yday == 152) |
215 |
r.tm_yday == 151) |
210 |
printf ("Result: Monday June 1 2009, yday 152 [week 21] (ok)\n"); |
216 |
printf ("Result: Monday June 1 2009, yday 151 [week 21] (ok)\n"); |
211 |
else |
217 |
else |
212 |
{ |
218 |
{ |
213 |
failures++; |
219 |
failures++; |
214 |
printf ("Result: failed. %02d/%02d/%04d wday=%d yday=%d\n", |
220 |
printf ("Result: failed. %02d/%02d/%04d wday=%d yday=%d\n", |
215 |
r.tm_mon+1, r.tm_mday, r.tm_year+1900, r.tm_wday, r.tm_yday); |
221 |
r.tm_mon+1, r.tm_mday, r.tm_year+1900, r.tm_wday, r.tm_yday); |
216 |
printf ("Expected: 06/01/2009 wday=1 yday=152\n"); |
222 |
printf ("Expected: 06/01/2009 wday=1 yday=151\n"); |
217 |
} |
223 |
} |
218 |
printf ("\n"); |
224 |
printf ("\n"); |
219 |
} |
225 |
} |
Lines 253-259
Link Here
|
253 |
for (year=1998; year<2005; year++) |
259 |
for (year=1998; year<2005; year++) |
254 |
{ |
260 |
{ |
255 |
mday = first_sunday[year-1998]; |
261 |
mday = first_sunday[year-1998]; |
256 |
yday = mday; |
262 |
yday = mday - 1; |
257 |
printf ("The first Sunday of %4d is Jan %d.\n", year, mday); |
263 |
printf ("The first Sunday of %4d is Jan %d.\n", year, mday); |
258 |
|
264 |
|
259 |
for (w=1; w<54; w++) |
265 |
for (w=1; w<54; w++) |
Lines 266-272
Link Here
|
266 |
if (w == 53 && mon == 0) |
272 |
if (w == 53 && mon == 0) |
267 |
{ |
273 |
{ |
268 |
yr = year + 1; |
274 |
yr = year + 1; |
269 |
yday = mday; |
275 |
yday = mday - 1; |
270 |
} |
276 |
} |
271 |
else yr = year; |
277 |
else yr = year; |
272 |
|
278 |
|
Lines 291-297
Link Here
|
291 |
printf ("\n"); |
297 |
printf ("\n"); |
292 |
} |
298 |
} |
293 |
|
299 |
|
294 |
/* Special test for the %W format string. */ |
300 |
#endif /* ALLOW_UW_TESTS */ |
295 |
|
301 |
|
296 |
int main (int argc, char **argv) |
302 |
int main (int argc, char **argv) |
297 |
{ |
303 |
{ |
Lines 332-344
Link Here
|
332 |
try5 ("Time of day H:M", "%R", "23:59"); |
338 |
try5 ("Time of day H:M", "%R", "23:59"); |
333 |
try1 ("Second number", "%S", "59", offsetof (struct tm, tm_sec), 59); |
339 |
try1 ("Second number", "%S", "59", offsetof (struct tm, tm_sec), 59); |
334 |
try6 ("Time of day H:M:S", "%T", "23:59:59"); |
340 |
try6 ("Time of day H:M:S", "%T", "23:59:59"); |
|
|
341 |
#if ALLOW_UW_TESTS |
335 |
try7 ("Week number Sun=0", "%Y %U", "2009 22"); |
342 |
try7 ("Week number Sun=0", "%Y %U", "2009 22"); |
|
|
343 |
#endif |
336 |
try1 ("Week day number", "%w", "4", offsetof (struct tm, tm_wday), 4); |
344 |
try1 ("Week day number", "%w", "4", offsetof (struct tm, tm_wday), 4); |
|
|
345 |
#if ALLOW_UW_TESTS |
337 |
try8 ("Week number Mon=0", "%Y %W", "2009 22"); |
346 |
try8 ("Week number Mon=0", "%Y %W", "2009 22"); |
|
|
347 |
#endif |
338 |
try1 ("Year in century", "%y", "9", offsetof (struct tm, tm_year), 109); |
348 |
try1 ("Year in century", "%y", "9", offsetof (struct tm, tm_year), 109); |
339 |
try1 ("Year in century", "%Y", "2009", offsetof (struct tm, tm_year), 109); |
349 |
try1 ("Year in century", "%Y", "2009", offsetof (struct tm, tm_year), 109); |
340 |
|
350 |
|
|
|
351 |
#if ALLOW_UW_TESTS |
341 |
tryU ("U conversion", "%Y %U", "range"); |
352 |
tryU ("U conversion", "%Y %U", "range"); |
|
|
353 |
#endif |
342 |
|
354 |
|
343 |
if (failures) |
355 |
if (failures) |
344 |
printf ("%d tests failed.\n", failures); |
356 |
printf ("%d tests failed.\n", failures); |