31 #include "test-stuff.h"
33 static gboolean test_data_is_init = FALSE;
34 static GList *test_data = NULL;
50 check_date_cycles (gpointer data,
51 gpointer user_data __attribute__ ((unused)))
68 for (i = 1; i <= 6; i++)
71 cmp = (gchar*)g_list_nth_data (d->string_list, (i - 1));
73 DEBUG (
" str=%s cmp=%s", str, cmp);
82 base.tm_year = base.tm_mday = base.tm_mon = 0;
83 base.tm_min = base.tm_hour = base.tm_gmtoff = 0;
84 base.tm_sec = base.tm_isdst = 0;
87 if ((d->date->qd_year > 0) &&
88 (d->date->qd_year < 9999))
91 do_test ((h != NULL),
"no date could be parsed");
93 PERR (
" h failed for str=%s, "
94 "cmp=%s, %d\n", str, cmp, i);
96 strptime (cmp, t, &base);
98 do_test ((j != NULL),
"no value from struct tm");
104 "compare with strptime");
115 test_date_init (
void)
117 test_data_is_init = TRUE;
121 QTestDate *td = g_new0 (QTestDate, 1);
126 td->date->qd_year = 2006;
127 td->date->qd_mon = 5;
128 td->date->qd_mday = 14;
129 td->date->qd_hour = 15;
130 td->date->qd_min = 45;
131 td->date->qd_sec = G_GINT64_CONSTANT(50);
134 td->string_list = NULL;
135 td->string_list = g_list_append (td->string_list,
"05/14/2006");
136 td->string_list = g_list_append (td->string_list,
"14/05/2006");
137 td->string_list = g_list_append (td->string_list,
"14.05.2006");
138 td->string_list = g_list_append (td->string_list,
"2006-05-14");
139 td->string_list = g_list_append (td->string_list,
"2006-05-14T15:45:50Z");
140 td->string_list = g_list_append (td->string_list,
141 "2006-05-14 15:45:50.000001000 +0000");
142 td->id =
"a current time";
143 test_data = g_list_prepend (test_data, td);
146 QTestDate *td = g_new0 (QTestDate, 1);
151 td->date->qd_year = 2006;
152 td->date->qd_mon = 5;
153 td->date->qd_mday = 9;
154 td->date->qd_hour = 0;
155 td->date->qd_min = 0;
156 td->date->qd_sec = G_GINT64_CONSTANT(0);
159 td->string_list = NULL;
160 td->string_list = g_list_prepend (td->string_list,
"05/09/2006");
161 td->string_list = g_list_prepend (td->string_list,
"09/05/2006");
162 td->string_list = g_list_prepend (td->string_list,
"09.05.2006");
163 td->string_list = g_list_prepend (td->string_list,
"2006-05-09");
164 td->string_list = g_list_prepend (td->string_list,
"2006-05-09T00:00:00Z");
165 td->string_list = g_list_prepend (td->string_list,
166 "2006-05-09 00:00:00.000000002 +0000");
167 td->string_list = g_list_reverse (td->string_list);
168 td->id =
"a recent time";
169 test_data = g_list_prepend (test_data, td);
172 QTestDate *td = g_new0 (QTestDate, 1);
177 td->date->qd_year = 2006;
178 td->date->qd_mon = 5;
179 td->date->qd_mday = 9;
180 td->date->qd_hour = 14;
181 td->date->qd_min = 49;
182 td->date->qd_sec = G_GINT64_CONSTANT(4);
185 td->string_list = NULL;
186 td->string_list = g_list_prepend (td->string_list,
"05/09/2006");
187 td->string_list = g_list_prepend (td->string_list,
"09/05/2006");
188 td->string_list = g_list_prepend (td->string_list,
"09.05.2006");
189 td->string_list = g_list_prepend (td->string_list,
"2006-05-09");
190 td->string_list = g_list_prepend (td->string_list,
"2006-05-09T14:49:04Z");
191 td->string_list = g_list_prepend (td->string_list,
192 "2006-05-09 14:49:04.000000100 +0000");
193 td->string_list = g_list_reverse (td->string_list);
194 td->id =
"second recent time";
195 test_data = g_list_prepend (test_data, td);
198 QTestDate *td = g_new0 (QTestDate, 1);
203 td->date->qd_year = 1971;
204 td->date->qd_mon = 12;
205 td->date->qd_mday = 31;
206 td->date->qd_hour = 15;
207 td->date->qd_min = 0;
208 td->date->qd_sec = G_GINT64_CONSTANT(0);
211 td->string_list = NULL;
212 td->string_list = g_list_prepend (td->string_list,
"12/31/1971");
213 td->string_list = g_list_prepend (td->string_list,
"31/12/1971");
214 td->string_list = g_list_prepend (td->string_list,
"31.12.1971");
215 td->string_list = g_list_prepend (td->string_list,
"1971-12-31");
216 td->string_list = g_list_prepend (td->string_list,
"1971-12-31T15:00:00Z");
217 td->string_list = g_list_prepend (td->string_list,
218 "1971-12-31 15:00:00.000000004 +0000");
219 td->string_list = g_list_reverse (td->string_list);
220 td->id =
"New Year's Eve 1971";
221 test_data = g_list_prepend (test_data, td);
224 QTestDate *td = g_new0 (QTestDate, 1);
229 td->date->qd_year = 1980;
230 td->date->qd_mon = 1;
231 td->date->qd_mday = 1;
232 td->date->qd_hour = 0;
233 td->date->qd_min = 0;
234 td->date->qd_sec = G_GINT64_CONSTANT(0);
237 td->string_list = NULL;
238 td->string_list = g_list_prepend (td->string_list,
"01/01/1980");
239 td->string_list = g_list_prepend (td->string_list,
"01/01/1980");
240 td->string_list = g_list_prepend (td->string_list,
"01.01.1980");
241 td->string_list = g_list_prepend (td->string_list,
"1980-01-01");
242 td->string_list = g_list_prepend (td->string_list,
"1980-01-01T00:00:00Z");
243 td->string_list = g_list_prepend (td->string_list,
244 "1980-01-01 00:00:00.123456789 +0000");
245 td->string_list = g_list_reverse (td->string_list);
246 td->id =
"New Year's Day 1980";
247 test_data = g_list_prepend (test_data, td);
250 QTestDate *td = g_new0 (QTestDate, 1);
255 td->date->qd_year = 1999;
256 td->date->qd_mon = 12;
257 td->date->qd_mday = 31;
258 td->date->qd_hour = 23;
259 td->date->qd_min = 59;
260 td->date->qd_sec = G_GINT64_CONSTANT(59);
263 td->string_list = NULL;
264 td->string_list = g_list_prepend (td->string_list,
"12/31/1999");
265 td->string_list = g_list_prepend (td->string_list,
"31/12/1999");
266 td->string_list = g_list_prepend (td->string_list,
"31.12.1999");
267 td->string_list = g_list_prepend (td->string_list,
"1999-12-31");
268 td->string_list = g_list_prepend (td->string_list,
"1999-12-31T23:59:59Z");
269 td->string_list = g_list_prepend (td->string_list,
270 "1999-12-31 23:59:59.987654321 +0000");
271 td->string_list = g_list_reverse (td->string_list);
272 td->id =
"Millenium Eve";
273 test_data = g_list_prepend (test_data, td);
276 QTestDate *td = g_new0 (QTestDate, 1);
281 td->date->qd_year = 1992;
282 td->date->qd_mon = 2;
283 td->date->qd_mday = 29;
284 td->date->qd_hour = 15;
285 td->date->qd_min = 45;
286 td->date->qd_sec = G_GINT64_CONSTANT(23);
289 td->string_list = NULL;
290 td->string_list = g_list_prepend (td->string_list,
"02/29/1992");
291 td->string_list = g_list_prepend (td->string_list,
"29/02/1992");
292 td->string_list = g_list_prepend (td->string_list,
"29.02.1992");
293 td->string_list = g_list_prepend (td->string_list,
"1992-02-29");
294 td->string_list = g_list_prepend (td->string_list,
"1992-02-29T15:45:23Z");
295 td->string_list = g_list_prepend (td->string_list,
296 "1992-02-29 15:45:23.000090000 +0000");
297 td->string_list = g_list_reverse (td->string_list);
298 td->id =
"29th February 1992";
299 test_data = g_list_prepend (test_data, td);
303 QTestDate *td = g_new0 (QTestDate, 1);
308 td->date->qd_year = 1969;
309 td->date->qd_mon = 12;
310 td->date->qd_mday = 31;
311 td->date->qd_hour = 23;
312 td->date->qd_min = 59;
313 td->date->qd_sec = G_GINT64_CONSTANT(59);
316 td->string_list = NULL;
317 td->string_list = g_list_prepend (td->string_list,
"12/31/1969");
318 td->string_list = g_list_prepend (td->string_list,
"31/12/1969");
319 td->string_list = g_list_prepend (td->string_list,
"31.12.1969");
320 td->string_list = g_list_prepend (td->string_list,
"1969-12-31");
321 td->string_list = g_list_prepend (td->string_list,
"1969-12-31T23:59:59Z");
322 td->string_list = g_list_prepend (td->string_list,
323 "1969-12-31 23:59:59.000000009 +0000");
324 td->string_list = g_list_reverse (td->string_list);
325 td->id =
"epoch eve";
326 test_data = g_list_prepend (test_data, td);
329 QTestDate *td = g_new0 (QTestDate, 1);
334 td->date->qd_year = 1963;
335 td->date->qd_mon = 11;
336 td->date->qd_mday = 22;
337 td->date->qd_hour = 19;
338 td->date->qd_min = 0;
339 td->date->qd_sec = G_GINT64_CONSTANT(0);
342 td->string_list = NULL;
343 td->string_list = g_list_prepend (td->string_list,
"11/22/1963");
344 td->string_list = g_list_prepend (td->string_list,
"22/11/1963");
345 td->string_list = g_list_prepend (td->string_list,
"22.11.1963");
346 td->string_list = g_list_prepend (td->string_list,
"1963-11-22");
347 td->string_list = g_list_prepend (td->string_list,
"1963-11-22T19:00:00Z");
348 td->string_list = g_list_prepend (td->string_list,
349 "1963-11-22 19:00:00.818818818 +0000");
350 td->string_list = g_list_reverse (td->string_list);
351 td->id =
"approx JFK, 1963";
352 test_data = g_list_prepend (test_data, td);
355 QTestDate *td = g_new0 (QTestDate, 1);
360 td->date->qd_year = 1945;
361 td->date->qd_mon = 9;
362 td->date->qd_mday = 8;
363 td->date->qd_hour = 2;
364 td->date->qd_min = 2;
365 td->date->qd_sec = G_GINT64_CONSTANT(0);
368 td->string_list = NULL;
369 td->string_list = g_list_prepend (td->string_list,
"09/08/1945");
370 td->string_list = g_list_prepend (td->string_list,
"08/09/1945");
371 td->string_list = g_list_prepend (td->string_list,
"08.09.1945");
372 td->string_list = g_list_prepend (td->string_list,
"1945-09-08");
373 td->string_list = g_list_prepend (td->string_list,
"1945-09-08T02:02:00Z");
374 td->string_list = g_list_prepend (td->string_list,
375 "1945-09-08 02:02:00.000000000 +0000");
376 td->string_list = g_list_reverse (td->string_list);
377 td->id =
"Nagasaki, 1945";
378 test_data = g_list_prepend (test_data, td);
381 QTestDate *td = g_new0 (QTestDate, 1);
386 td->date->qd_year = 1918;
387 td->date->qd_mon = 11;
388 td->date->qd_mday = 11;
389 td->date->qd_hour = 11;
390 td->date->qd_min = 0;
391 td->date->qd_sec = G_GINT64_CONSTANT(0);
394 td->string_list = NULL;
395 td->string_list = g_list_prepend (td->string_list,
"11/11/1918");
396 td->string_list = g_list_prepend (td->string_list,
"11/11/1918");
397 td->string_list = g_list_prepend (td->string_list,
"11.11.1918");
398 td->string_list = g_list_prepend (td->string_list,
"1918-11-11");
399 td->string_list = g_list_prepend (td->string_list,
"1918-11-11T11:00:00Z");
400 td->string_list = g_list_prepend (td->string_list,
401 "1918-11-11 11:00:00.000000000 +0000");
402 td->string_list = g_list_reverse (td->string_list);
403 td->id =
"Armistice 1918";
404 test_data = g_list_prepend (test_data, td);
407 QTestDate *td = g_new0 (QTestDate, 1);
410 G_GINT64_CONSTANT(-2208988801));
413 td->date->qd_year = 1899;
414 td->date->qd_mon = 12;
415 td->date->qd_mday = 31;
416 td->date->qd_hour = 23;
417 td->date->qd_min = 59;
418 td->date->qd_sec = G_GINT64_CONSTANT(59);
421 td->string_list = NULL;
422 td->string_list = g_list_prepend (td->string_list,
"12/31/1899");
423 td->string_list = g_list_prepend (td->string_list,
"31/12/1899");
424 td->string_list = g_list_prepend (td->string_list,
"31.12.1899");
425 td->string_list = g_list_prepend (td->string_list,
"1899-12-31");
426 td->string_list = g_list_prepend (td->string_list,
"1899-12-31T23:59:59Z");
427 td->string_list = g_list_prepend (td->string_list,
428 "1899-12-31 23:59:59.000000000 +0000");
429 td->string_list = g_list_reverse (td->string_list);
430 td->id =
"19th century Millenium Eve";
431 test_data = g_list_prepend (test_data, td);
434 QTestDate *td = g_new0 (QTestDate, 1);
437 G_GINT64_CONSTANT(-13311993599));
440 td->date->qd_year = 1548;
441 td->date->qd_mon = 2;
442 td->date->qd_mday = 29;
443 td->date->qd_hour = 0;
444 td->date->qd_min = 0;
445 td->date->qd_sec = G_GINT64_CONSTANT(1);
448 td->string_list = NULL;
449 td->string_list = g_list_prepend (td->string_list,
"02/29/1548");
450 td->string_list = g_list_prepend (td->string_list,
"29/02/1548");
451 td->string_list = g_list_prepend (td->string_list,
"29.02.1548");
452 td->string_list = g_list_prepend (td->string_list,
"1548-02-29");
453 td->string_list = g_list_prepend (td->string_list,
"1548-02-29T00:00:01Z");
454 td->string_list = g_list_prepend (td->string_list,
455 "1548-02-29 00:00:01.000000000 +0000");
456 td->string_list = g_list_reverse (td->string_list);
457 td->id =
"16th century leap day";
458 test_data = g_list_prepend (test_data, td);
461 QTestDate *td = g_new0 (QTestDate, 1);
466 td->date->qd_year = 1066;
467 td->date->qd_mon = 10;
468 td->date->qd_mday = 14;
469 td->date->qd_hour = 8;
470 td->date->qd_min = 0;
471 td->date->qd_sec = G_GINT64_CONSTANT(0);
474 td->string_list = NULL;
475 td->string_list = g_list_prepend (td->string_list,
"10/14/1066");
476 td->string_list = g_list_prepend (td->string_list,
"14/10/1066");
477 td->string_list = g_list_prepend (td->string_list,
"14.10.1066");
478 td->string_list = g_list_prepend (td->string_list,
"1066-10-14");
479 td->string_list = g_list_prepend (td->string_list,
"1066-10-14T08:00:00Z");
480 td->string_list = g_list_prepend (td->string_list,
481 "1066-10-14 08:00:00.000000000 +0000");
482 td->string_list = g_list_reverse (td->string_list);
483 td->id =
"Battle of Hastings, 1066";
484 test_data = g_list_prepend (test_data, td);
487 QTestDate *td = g_new0 (QTestDate, 1);
490 G_GINT64_CONSTANT(-36417340799));
493 td->date->qd_year = 815;
494 td->date->qd_mon = 12;
495 td->date->qd_mday = 25;
496 td->date->qd_hour = 0;
497 td->date->qd_min = 0;
498 td->date->qd_sec = G_GINT64_CONSTANT(1);
501 td->string_list = NULL;
502 td->string_list = g_list_prepend (td->string_list,
"12/25/0815");
503 td->string_list = g_list_prepend (td->string_list,
"25/12/0815");
504 td->string_list = g_list_prepend (td->string_list,
"25.12.0815");
505 td->string_list = g_list_prepend (td->string_list,
"0815-12-25");
506 td->string_list = g_list_prepend (td->string_list,
"0815-12-25T00:00:01Z");
507 td->string_list = g_list_prepend (td->string_list,
508 "0815-12-25 00:00:01.000000000 +0000");
509 td->string_list = g_list_reverse (td->string_list);
510 td->id =
"9th century Christmas Day";
511 test_data = g_list_prepend (test_data, td);
514 QTestDate *td = g_new0 (QTestDate, 1);
519 td->date->qd_year = 43;
520 td->date->qd_mon = 5;
521 td->date->qd_mday = 20;
522 td->date->qd_hour = 14;
523 td->date->qd_min = 0;
524 td->date->qd_sec = G_GINT64_CONSTANT(0);
527 td->string_list = NULL;
528 td->string_list = g_list_prepend (td->string_list,
"05/20/0043");
529 td->string_list = g_list_prepend (td->string_list,
"20/05/0043");
530 td->string_list = g_list_prepend (td->string_list,
"20.05.0043");
531 td->string_list = g_list_prepend (td->string_list,
"0043-05-20");
532 td->string_list = g_list_prepend (td->string_list,
"0043-05-20T14:00:00Z");
533 td->string_list = g_list_prepend (td->string_list,
534 "0043-05-20 14:00:00.000000000 +0000");
535 td->string_list = g_list_reverse (td->string_list);
536 td->id =
"approx Roman invasion, 43AD";
537 test_data = g_list_prepend (test_data, td);
544 QTestDate *td = g_new0 (QTestDate, 1);
549 td->date->qd_year = -1;
550 td->date->qd_mon = 12;
551 td->date->qd_mday = 24;
552 td->date->qd_hour = 23;
553 td->date->qd_min = 59;
554 td->date->qd_sec = G_GINT64_CONSTANT(59);
557 td->string_list = NULL;
558 td->string_list = g_list_prepend (td->string_list,
"12/24/-001");
559 td->string_list = g_list_prepend (td->string_list,
"24/12/-001");
560 td->string_list = g_list_prepend (td->string_list,
"24.12.-001");
561 td->string_list = g_list_prepend (td->string_list,
"-001-12-24");
562 td->string_list = g_list_prepend (td->string_list,
"-001-12-24T23:59:59Z");
563 td->string_list = g_list_prepend (td->string_list,
564 "-001-12-24 23:59:59.000000000 +0000");
565 td->string_list = g_list_reverse (td->string_list);
566 td->id =
"Xmas eve, 1BC";
567 test_data = g_list_prepend (test_data, td);
570 QTestDate *td = g_new0 (QTestDate, 1);
573 G_GINT64_CONSTANT(-204110409601));
576 td->date->qd_year = -4499;
577 td->date->qd_mon = 12;
578 td->date->qd_mday = 31;
579 td->date->qd_hour = 23;
580 td->date->qd_min = 59;
581 td->date->qd_sec = G_GINT64_CONSTANT(59);
584 td->string_list = NULL;
585 td->string_list = g_list_prepend (td->string_list,
"12/31/-4499");
586 td->string_list = g_list_prepend (td->string_list,
"31/12/-4499");
587 td->string_list = g_list_prepend (td->string_list,
"31.12.-4499");
588 td->string_list = g_list_prepend (td->string_list,
"-4499-12-31");
589 td->string_list = g_list_prepend (td->string_list,
"-4499-12-31T23:59:59Z");
590 td->string_list = g_list_prepend (td->string_list,
591 "-4499-12-31 23:59:59.000000000 +0000");
592 td->string_list = g_list_reverse (td->string_list);
593 td->id =
"far past.";
594 test_data = g_list_prepend (test_data, td);
597 QTestDate *td = g_new0 (QTestDate, 1);
600 G_GINT64_CONSTANT(-2097527529601));
603 td->date->qd_year = -64499;
604 td->date->qd_mon = 12;
605 td->date->qd_mday = 31;
606 td->date->qd_hour = 23;
607 td->date->qd_min = 59;
608 td->date->qd_sec = G_GINT64_CONSTANT(59);
611 td->string_list = NULL;
612 td->string_list = g_list_prepend (td->string_list,
"12/31/-64499");
613 td->string_list = g_list_prepend (td->string_list,
"31/12/-64499");
614 td->string_list = g_list_prepend (td->string_list,
"31.12.-64499");
615 td->string_list = g_list_prepend (td->string_list,
"-64499-12-31");
616 td->string_list = g_list_prepend (td->string_list,
"-64499-12-31T23:59:59Z");
617 td->string_list = g_list_prepend (td->string_list,
618 "-64499-12-31 23:59:59.000000000 +0000");
619 td->string_list = g_list_reverse (td->string_list);
620 td->id =
"far, far past.";
621 test_data = g_list_prepend (test_data, td);
625 QTestDate *td = g_new0 (QTestDate, 1);
630 td->date->qd_year = 3005;
631 td->date->qd_mon = 7;
632 td->date->qd_mday = 24;
633 td->date->qd_hour = 6;
634 td->date->qd_min = 34;
635 td->date->qd_sec = G_GINT64_CONSTANT(26);
638 td->string_list = NULL;
639 td->string_list = g_list_prepend (td->string_list,
"07/24/3005");
640 td->string_list = g_list_prepend (td->string_list,
"24/07/3005");
641 td->string_list = g_list_prepend (td->string_list,
"24.07.3005");
642 td->string_list = g_list_prepend (td->string_list,
"3005-07-24");
643 td->string_list = g_list_prepend (td->string_list,
"3005-07-24T06:34:26Z");
644 td->string_list = g_list_prepend (td->string_list,
645 "3005-07-24 06:34:26.000000800 +0000");
646 td->string_list = g_list_reverse (td->string_list);
647 td->id =
"24th July 3005";
648 test_data = g_list_prepend (test_data, td);
651 QTestDate *td = g_new0 (QTestDate, 1);
654 G_GINT64_CONSTANT(79839129599));
657 td->date->qd_year = 4499;
658 td->date->qd_mon = 12;
659 td->date->qd_mday = 31;
660 td->date->qd_hour = 23;
661 td->date->qd_min = 59;
662 td->date->qd_sec = G_GINT64_CONSTANT(59);
665 td->string_list = NULL;
666 td->string_list = g_list_prepend (td->string_list,
"12/31/4499");
667 td->string_list = g_list_prepend (td->string_list,
"31/12/4499");
668 td->string_list = g_list_prepend (td->string_list,
"31.12.4499");
669 td->string_list = g_list_prepend (td->string_list,
"4499-12-31");
670 td->string_list = g_list_prepend (td->string_list,
"4499-12-31T23:59:59Z");
671 td->string_list = g_list_prepend (td->string_list,
672 "4499-12-31 23:59:59.000050000 +0000");
673 td->string_list = g_list_reverse (td->string_list);
674 td->id =
"44th century Millenium Eve";
675 test_data = g_list_prepend (test_data, td);
678 QTestDate *td = g_new0 (QTestDate, 1);
681 G_GINT64_CONSTANT(395408649599));
684 td->date->qd_year = 14499;
685 td->date->qd_mon = 12;
686 td->date->qd_mday = 31;
687 td->date->qd_hour = 23;
688 td->date->qd_min = 59;
689 td->date->qd_sec = G_GINT64_CONSTANT(59);
692 td->string_list = NULL;
693 td->string_list = g_list_prepend (td->string_list,
"12/31/14499");
694 td->string_list = g_list_prepend (td->string_list,
"31/12/14499");
695 td->string_list = g_list_prepend (td->string_list,
"31.12.14499");
696 td->string_list = g_list_prepend (td->string_list,
"14499-12-31");
697 td->string_list = g_list_prepend (td->string_list,
"14499-12-31T23:59:59Z");
698 td->string_list = g_list_prepend (td->string_list,
699 "14499-12-31 23:59:59.007000000 +0000");
700 td->string_list = g_list_reverse (td->string_list);
701 td->id =
"144th century Millenium Eve";
702 test_data = g_list_prepend (test_data, td);
705 QTestDate *td = g_new0 (QTestDate, 1);
708 G_GINT64_CONSTANT(74869815369599));
711 td->date->qd_year = 2374499;
712 td->date->qd_mon = 12;
713 td->date->qd_mday = 31;
714 td->date->qd_hour = 23;
715 td->date->qd_min = 59;
716 td->date->qd_sec = G_GINT64_CONSTANT(59);
719 td->string_list = NULL;
720 td->string_list = g_list_prepend (td->string_list,
"12/31/2374499");
721 td->string_list = g_list_prepend (td->string_list,
"31/12/2374499");
722 td->string_list = g_list_prepend (td->string_list,
"31.12.2374499");
723 td->string_list = g_list_prepend (td->string_list,
"2374499-12-31");
724 td->string_list = g_list_prepend (td->string_list,
"2374499-12-31T23:59:59Z");
725 td->string_list = g_list_prepend (td->string_list,
726 "2374499-12-31 23:59:59.045321545 +0000");
727 td->string_list = g_list_reverse (td->string_list);
728 td->id =
"far, far future";
729 test_data = g_list_prepend (test_data, td);
734 free_test_data (gpointer data, gpointer user_data __attribute__ ((unused)))
738 td = (QTestDate*)data;
741 td->string_list = NULL;
747 test_date_close (
void)
749 g_list_foreach (test_data, free_test_data, NULL);
761 do_test ((scan != NULL),
"scan failed");
765 " timezone reset incorrect");
769 PERR (
" wrong time value %"
770 G_GINT64_FORMAT
" %" G_GINT64_FORMAT
" diff=%"
771 G_GINT64_FORMAT
" df=%d str=%s cmp=%s",
776 do_test ((stamp != NULL),
"stamp failed");
793 do_test ((str1 != NULL),
"stamp failed");
797 do_test ((check != NULL),
"parse failed");
799 PERR (
" tried to parse %s\n", str1);
802 do_test ((scan != NULL),
"scan failed");
812 do_test ((str2 != NULL),
"printed string is null");
814 "from_qtime failed");
816 "stamp different to scan");
818 PERR (
" df=%d str=%s scan=%s", df, str1, str2);
826 run_print_scan_tests (
void)
839 stamp_and_scan (796179600, 0, i);
840 stamp_and_scan (796179500, 72000, i);
841 stamp_and_scan (152098136, 0, i);
842 stamp_and_scan (1964049931, 0, i);
843 stamp_and_scan (1162088421, 12548000, i);
844 stamp_and_scan (325659000 - 6500, 0, i);
845 stamp_and_scan (1143943200, 0, i);
846 stamp_and_scan (1603591171, 595311000, i);
847 stamp_and_scan (1738909365, 204102000, i);
848 stamp_and_scan (1603591171, 595311000, i);
849 stamp_and_scan (1143943200 - 1, 0, i);
850 stamp_and_scan (1143943200, 0, i);
851 stamp_and_scan (1143943200 + (7 * 60 * 60), 0, i);
852 stamp_and_scan (1143943200 + (8 * 60 * 60), 0, i);
853 stamp_and_scan (1841443200, 0, i);
856 stamp_and_scan (G_GINT64_CONSTANT (-796179600), 253, i);
857 stamp_and_scan (G_GINT64_CONSTANT (-152098136), 865, i);
858 stamp_and_scan (G_GINT64_CONSTANT (-1143943200), 67, i);
859 stamp_and_scan (G_GINT64_CONSTANT (-1964049931), 53, i);
860 stamp_and_scan (G_GINT64_CONSTANT (-2463880447), 48, i);
861 stamp_and_scan (G_GINT64_CONSTANT (-22905158401), 9, i);
862 stamp_and_scan (G_GINT64_CONSTANT (-28502726400), 1, i);
863 stamp_and_scan (G_GINT64_CONSTANT (-60798211200), 0, i);
864 stamp_and_scan (G_GINT64_CONSTANT (-32727638740), 0, i);
866 stamp_and_scan (secs, 0, i);
868 stamp_and_scan (G_GINT64_CONSTANT (2463880447), 0, i);
870 stamp_and_scan (G_GINT64_CONSTANT (2527038847), 0, i);
873 stamp_and_scan (G_GINT64_CONSTANT (32727638740), 0, i);
875 stamp_and_scan (G_GINT64_CONSTANT (88313632867), 0, i);
877 stamp_and_scan (G_GINT64_CONSTANT (189216632865), 0, i);
879 stamp_and_scan (G_GINT64_CONSTANT (378432632864), 0, i);
881 stamp_and_scan (G_GINT64_CONSTANT (3165071328567), 0, i);
886 stamp_and_scan (G_GINT64_CONSTANT (3165071328567),
889 stamp_and_scan (G_GINT64_CONSTANT(843165071328567),
914 &df) == TRUE),
"failed to add scan suitable format");
917 scan_and_stamp (
"1971-12-31 15:00:00 -0900", df, 63072000);
919 scan_and_stamp (
"1979-12-31 15:00:00 -0900", df, 315532800);
920 scan_and_stamp (
"1980-01-01 00:00:00 -0000", df, 315532800);
921 scan_and_stamp (
"1980-01-01 00:00:00 +0000", df, 315532800);
922 scan_and_stamp (
"1980-01-01 09:00:00 +0900", df, 315532800);
923 scan_and_stamp (
"1980-01-01 08:30:00 +0830", df, 315532800);
925 scan_and_stamp (
"1963-11-22 14:00:00 -0500", df, -192776400);
926 scan_and_stamp (
"1945-09-08 11:02:00 +0900", df, -767311080);
927 scan_and_stamp (
"1918-11-11 11:00:00 +0000", df, -1613826000);
930 scan_and_stamp (
"1066-10-14 08:00:00 +0000", df,
931 G_GINT64_CONSTANT (-28502726400));
933 scan_and_stamp (
"0043-05-20 14:00:00 +0000", df,
934 G_GINT64_CONSTANT (-60798160800));
951 "add_days gave incorrect result.");
953 PERR (
" secs=%" G_GINT64_FORMAT
"cmp=%"
958 "add_months failed");
962 "add_months gave incorrect result.");
969 run_qofdate_test (
void)
979 "setting current format as UK");
981 "uk") == 0),
"getting the shorthand name");
984 "default name should not be overridden");
987 "getting date format from shorthand name");
989 "getting date format separator from date format");
991 test)),
"default separator should not be overridden");
997 "adding a valid format");
999 &df2) == FALSE),
"adding an invalid format");
1002 do_test ((test == df),
"setting current format");
1004 "%T") == 0),
"getting the shorthand name");
1006 "custom name should be overridden");
1008 "getting date format from shorthand name");
1010 "getting date format separator from date format");
1012 "custom separator should be overridden");
1014 "getting modified date format separator from date format");
1026 do_test ((date->
qd_sec == 30),
"normalised seconds incorrect - 1");
1027 do_test ((date->
qd_mday == 2),
"normalised day incorrect - 1");
1030 do_test ((date->
qd_sec == 30),
"normalised seconds incorrect - 2");
1031 do_test ((date->
qd_mday == 23),
"normalised day incorrect - 2");
1034 do_test ((date->
qd_hour == 10),
"normalised hour incorrect");
1035 do_test ((date->
qd_mday == 24),
"normalised day incorrect - 3");
1038 do_test ((date->
qd_mon == 5),
"normalised month incorrect");
1039 do_test ((date->
qd_year == 2001),
"normalised year incorrect");
1042 do_test ((date->
qd_hour == 3),
"normalised hour incorrect - 1");
1043 do_test ((date->
qd_mday == 25),
"normalised day incorrect - 4");
1046 do_test ((date->
qd_hour == 19),
"normalised hour incorrect - 2");
1047 do_test ((date->
qd_mday == 22),
"normalised day incorrect - 5");
1050 do_test ((date->
qd_min == 15),
"normalised min incorrect");
1051 do_test ((date->
qd_hour == 15),
"normalised hour incorrect - 3");
1055 do_test ((date->
qd_sec == 8),
"doxygen sec example incorrect - 1");
1056 do_test ((date->
qd_min == 6),
"doxygen min example incorrect - 1");
1060 do_test ((date->
qd_sec == 56),
"doxygen sec example incorrect - 2");
1061 do_test ((date->
qd_min == 3),
"doxygen min example incorrect - 2");
1082 "2006-05-30T18:24:17Z")),
"with nanosecs");
1084 123456789L),
"nanosecs mismatched.");
1087 "strftime:US:first");
1090 "strftime:UK:first");
1093 "strftime:CE:first");
1096 "strftime:ISO:first");
1099 "strftime:UTC:first");
1102 "strftime:LOCALE:first:inrange");
1105 "strftime:CUSTOM:first:inrange");
1119 "strftime:US:forward");
1122 "strftime:UK:forward");
1125 "strftime:CE:forward");
1128 "strftime:ISO:forward");
1131 "strftime:UTC:forward");
1134 "strftime:LOCALE:forward:inrange");
1137 "strftime:CUSTOM:forward:inrange");
1150 "strftime:US:fifth");
1153 "strftime:UK:fifth");
1156 "strftime:CE:fifth");
1159 "strftime:ISO:fifth");
1162 "strftime:UTC:fifth");
1165 "strftime:LOCALE:fifth:inrange");
1168 "strftime:CUSTOM:fifth:inrange");
1181 "strftime:US:forward2");
1184 "strftime:UK:forward2");
1187 "strftime:CE:forward2");
1190 "strftime:ISO:forward2");
1193 "strftime:UTC:forward2");
1196 "strftime:LOCALE:forward2:outofrange");
1199 "strftime:CUSTOM:forward2:outofrange");
1211 "1914-11-11T11:00:00Z")),
"armistice day");
1214 "strftime:US:second");
1217 "strftime:UK:second");
1220 "strftime:CE:second");
1223 "strftime:ISO:second");
1226 "strftime:UTC:second");
1229 "strftime:LOCALE:second:inrange");
1232 "strftime:CUSTOM:second:inrange");
1246 "strftime:US:third");
1249 "strftime:UK:third");
1252 "strftime:CE:third");
1255 "strftime:ISO:third");
1258 "strftime:UTC:third");
1261 "strftime:LOCALE:third:outofrange");
1264 "strftime:CUSTOM:third:outofrange");
1277 "strftime:US:fourth");
1280 "strftime:UK:fourth");
1283 "strftime:CE:fourth");
1286 "strftime:ISO:fourth");
1289 "strftime:UTC:fourth");
1292 "strftime:LOCALE:fourth:outofrange");
1295 "strftime:CUSTOM:fourth:outofrange");
1308 "strftime:US:fifth");
1311 "strftime:UK:fifth");
1314 "strftime:CE:fifth");
1317 "strftime:ISO:fifth");
1320 "strftime:UTC:fifth");
1323 "strftime:LOCALE:fifth:outofrange");
1326 "strftime:CUSTOM:fifth:outofrange");
1339 "strftime:US:sixth");
1342 "strftime:UK:sixth");
1345 "strftime:CE:sixth");
1348 "strftime:ISO:sixth");
1351 "strftime:UTC:sixth");
1354 "strftime:LOCALE:sixth:outofrange");
1357 "strftime:CUSTOM:sixth:outofrange");
1370 "strftime:US:seventh");
1373 "strftime:UK:seventh");
1376 "strftime:CE:seventh");
1379 "strftime:ISO:seventh");
1382 "strftime:UTC:seventh");
1385 "strftime:LOCALE:seventh:outofrange");
1388 "strftime:CUSTOM:seventh:outofrange");
1394 run_qoftime_test (
void)
1399 do_test ((time != NULL),
"failed to initialise QofTime.");
1404 do_test ((time != NULL),
"error found");
1408 do_test ((time != NULL),
"error found");
1410 "failed to set nanosecs");
1416 do_test ((time != NULL),
"error found");
1419 do_test ((
qof_time_equal (time, cmp) == FALSE),
"test equal failed.");
1420 do_test ((
qof_time_cmp (time, cmp) == -1),
"compare cmp test");
1423 do_test ((
qof_time_cmp (diff, cmp) == 0),
"compare diff test");
1435 "equality test failed");
1444 date = g_date_new_dmy (15, 5, 2006);
1447 do_test ((g_date_get_day (test) == 15),
"gdate day fail");
1448 do_test ((g_date_get_month (test) == 5),
"gdate month fail");
1449 do_test ((g_date_get_year (test) == 2006),
"gdate year fail");
1458 "add seconds failed");
1469 gint64 time_secs, diff;
1472 date = g_date_new_dmy (15, 5, 2006);
1475 do_test ((g_date_compare (date, cmp) == 0),
1476 "convert to and from gdate failed");
1484 "start of day incorrect");
1486 "set nano at day start incorrect");
1488 "set_day_middle failed");
1490 do_test (diff == (
SECS_PER_DAY / 2),
"middle of day incorrect");
1493 do_test ((g_date_compare (date, cmp) == 0),
1494 "middle of day not the same as original day");
1504 do_test ((g_date_compare (date, cmp) == 0),
1505 "end of day not the same as original day");
1522 "start of day incorrect");
1524 "today start nanosecs non zero");
1529 "start of today incorrect");
1531 "today start nanosecs non zero");
1539 date = g_date_new_dmy (15, 5, 2006);
1542 do_test ((mday == 31),
" wrong last day of May");
1549 "get year day test, September");
1555 "3/9/2003 not valid");
1556 do_test ((3 == d->
qd_wday),
"not Wednesday");
1560 "get year day test, leap year");
1566 "3/9/2003 not valid");
1567 do_test ((5 == d->
qd_wday),
"not Friday");
1571 "get year day test, May");
1577 "3/9/2003 not valid");
1578 do_test ((0 == d->
qd_wday),
"not Sunday");
1582 "get year day test, May");
1588 "3/9/2003 not valid");
1589 do_test ((3 == d->
qd_wday),
"not Wednesday, May");
1593 "get days in month, non-leap");
1596 "get days in month, leap year");
1606 date = g_date_new_dmy (15, 5, 2006);
1609 do_test ((success == TRUE),
"time to dmy failed");
1610 do_test ((day == 15),
"wrong day calculated");
1611 do_test ((month == 5),
"wrong month calculated");
1612 do_test ((year == 2006),
"wrong year calculated");
1614 do_test ((
qof_time_cmp (time, reverse) == 0),
"dmy to time failed");
1623 glong day, month, year;
1628 PINFO (
" base date for section = %s",
1638 do_test ((wrap_d->
qd_mon == month &&
1640 wrap_d->
qd_mday == (day - 1)),
1641 " this time on previous day");
1642 PINFO (
" same time previous day = %s",
1649 do_test ((wrap_d->
qd_mon == (month - 1) &&
1652 " this time last month");
1653 PINFO (
" same time previous month = %s",
1660 do_test ((wrap_d->
qd_mon == month &&
1661 wrap_d->
qd_year == (year - 1) &&
1663 " this time last year");
1664 PINFO (
" same time previous year = %s",
1681 run_qoftime_test ();
1682 run_qofdate_test ();
1683 run_print_scan_tests ();
1684 g_list_foreach (test_data, check_date_cycles, NULL);
1685 print_test_results ();