1#!/usr/bin/perl 2 3use warnings; 4use strict; 5use Test::Inter; 6$::ti = new Test::Inter $0; 7require "tests-dm5.pl"; 8 9Date_Init("TZ=EST"); 10Date_Init(qw( PersonalCnf=Manip5.cnf PathSep=! PersonalCnfPath=./t!. IgnoreGlobalCnf=1 )); 11 12my $tests =" 13 141*1:1:1:0:0:0*EASTER 15'Jan 1 1997' 16'Jan 1 1997' 17'Jan 1 2000' 18 => 19 1997033000:00:00 20 1998041200:00:00 21 1999040400:00:00 22 23*1997-1999:1:1:1:0:0:0*EASTER 24 => 25 1997033000:00:00 26 1998041200:00:00 27 1999040400:00:00 28 29*1999:1:1,2:6:0:0:0*CWD 30 => 31 1999010400:00:00 32 1999010800:00:00 33 34*1999:1:1,2:6:0:0:0*CWP 35 => 36 1998123100:00:00 37 1999010800:00:00 38 39*1999:1:1,2:6:0:0:0*CWN 40 => 41 1999010400:00:00 42 1999010800:00:00 43 44*1999:1-4:2:0:12:00:00*PD1,BD2,FW2 45 => 46 1999010512:00:00 47 1999020212:00:00 48 1999030212:00:00 49 1999040612:00:00 50 51*1999:1-4:2:0:12:00:00*PD1,BD2 52 => 53 1999010212:00:00 54 1999013012:00:00 55 1999022712:00:00 56 1999040312:00:00 57 58*1999:1-4:2:0:12:00:00*PD1 59 => 60 1999010412:00:00 61 1999020112:00:00 62 1999030112:00:00 63 1999040512:00:00 64 65*1999:1-4:2:0:12:00:00*PT1 66 => 67 1999011112:00:00 68 1999020812:00:00 69 1999030812:00:00 70 1999041212:00:00 71 72*1999:1-2:2:0:12:00:00*PD7 73 => 74 1999011012:00:00 75 1999020712:00:00 76 77*1999:1-2:2:0:12:00:00 78 => 79 1999011112:00:00 80 1999020812:00:00 81 82*1999:1-4:2:0:12:00:00*MW3 83 => 84 1999011112:00:00 85 1999020812:00:00 86 1999030812:00:00 87 1999041212:00:00 88 890*1-4:2:0:12:00:00*MW3 90'Jan 1 1999' 91'Jan 1 1999' 92'Jan 1 2000' 93 => 94 1999011112:00:00 95 1999020812:00:00 96 1999030812:00:00 97 1999041212:00:00 98 990:1*2:0:12:00:00*MW3 100'Jan 1 1999' 101'Jan 1 1999' 102'May 1 1999' 103 => 104 1999011112:00:00 105 1999020812:00:00 106 1999030812:00:00 107 1999041212:00:00 108 1090:0:0:0:12:0:0 110'Jan 16 1998 at 12:00' 111'Jan 15 1998 at 00:00' 112'Jan 20 1998 at 00:00' 113 => 114 1998011500:00:00 115 1998011512:00:00 116 1998011600:00:00 117 1998011612:00:00 118 1998011700:00:00 119 1998011712:00:00 120 1998011800:00:00 121 1998011812:00:00 122 1998011900:00:00 123 1998011912:00:00 124 1250:0:0:1*12,14:0,30:0 126'Jan 16 1998 at 12:00' 127'Jan 15 1998 at 00:00' 128'Jan 20 1998 at 00:00' 129 => 130 1998011512:00:00 131 1998011512:30:00 132 1998011514:00:00 133 1998011514:30:00 134 1998011612:00:00 135 1998011612:30:00 136 1998011614:00:00 137 1998011614:30:00 138 1998011712:00:00 139 1998011712:30:00 140 1998011714:00:00 141 1998011714:30:00 142 1998011812:00:00 143 1998011812:30:00 144 1998011814:00:00 145 1998011814:30:00 146 1998011912:00:00 147 1998011912:30:00 148 1998011914:00:00 149 1998011914:30:00 150 1510:0:0:1:6*0,30:0 152'Jan 16 1998 at 12:00' 153'Jan 15 1998 at 00:00' 154'Jan 20 1998 at 00:00' 155 => 156 1998011506:00:00 157 1998011506:30:00 158 1998011612:00:00 159 1998011612:30:00 160 1998011718:00:00 161 1998011718:30:00 162 1998011900:00:00 163 1998011900:30:00 164 1652:0:0*045:0:0:0 166'Jan 1 1998' 167'Jan 1 1980' 168'Jan 1 1990' 169 => 170 1980021400:00:00 171 1982021400:00:00 172 1984021400:00:00 173 1986021400:00:00 174 1988021400:00:00 175 1762:0:0*045-047:0:0:0 177'Jan 1 1998' 178'Jan 1 1980' 179'Jan 1 1990' 180 => 181 1980021400:00:00 182 1980021500:00:00 183 1980021600:00:00 184 1982021400:00:00 185 1982021500:00:00 186 1982021600:00:00 187 1984021400:00:00 188 1984021500:00:00 189 1984021600:00:00 190 1986021400:00:00 191 1986021500:00:00 192 1986021600:00:00 193 1988021400:00:00 194 1988021500:00:00 195 1988021600:00:00 196 1972:1:0*0:0:0:0 198'Jan 1 1985' 199'Jan 1 1980' 200'Jan 1 1990' 201 => 202 1980110100:00:00 203 1982120100:00:00 204 1985010100:00:00 205 1987020100:00:00 206 1989030100:00:00 207 2080:0:2*2:0:0:0 209'Jan 16 1998' 210'Jan 1 1998' 211'Feb 28 1998' 212 => 213 1998011300:00:00 214 1998012700:00:00 215 1998021000:00:00 216 1998022400:00:00 217 2180:0:2*2,4:0:0:0 219'Jan 16 1998' 220'Jan 1 1998' 221'Feb 28 1998' 222 => 223 1998010100:00:00 224 1998011300:00:00 225 1998011500:00:00 226 1998012700:00:00 227 1998012900:00:00 228 1998021000:00:00 229 1998021200:00:00 230 1998022400:00:00 231 1998022600:00:00 232 2330:1:0*2,31:0:0:0 234'Jan 1 1998' 235'Jan 1 1998' 236'Jul 1 1998' 237 => 238 1998010200:00:00 239 1998013100:00:00 240 1998020200:00:00 241 1998030200:00:00 242 1998033100:00:00 243 1998040200:00:00 244 1998050200:00:00 245 1998053100:00:00 246 1998060200:00:00 247 2480:1:0*-2,-31:0:0:0 249'Jan 1 1998' 250'Jan 1 1998' 251'Jul 1 1998' 252 => 253 1998010100:00:00 254 1998013000:00:00 255 1998022700:00:00 256 1998030100:00:00 257 1998033000:00:00 258 1998042900:00:00 259 1998050100:00:00 260 1998053000:00:00 261 1998062900:00:00 262 2630:1*2,-1:0:0:0:0 264'Jan 1 1998' 265'Jan 1 1998' 266'Mar 31 1998' 267 => 268 1998011200:00:00 269 1998012600:00:00 270 1998020900:00:00 271 1998022300:00:00 272 1998030900:00:00 273 1998033000:00:00 274 2750:1*2,-2:2:0:0:0 276'Jan 1 1998' 277'Jan 1 1998' 278'Jul 1 1998' 279 => 280 1998011300:00:00 281 1998012000:00:00 282 1998021000:00:00 283 1998021700:00:00 284 1998031000:00:00 285 1998032400:00:00 286 1998041400:00:00 287 1998042100:00:00 288 1998051200:00:00 289 1998051900:00:00 290 1998060900:00:00 291 1998062300:00:00 292 2932:0*10:0:0:0:0 294'Jan 1 1985' 295'Jan 1 1980' 296'Jan 1 1990' 297 => 298 1981030900:00:00 299 1983030700:00:00 300 1985031100:00:00 301 1987030900:00:00 302 1989030600:00:00 303 3042:0*10:2:0:0:0 305'Jan 1 1985' 306'Jan 1 1980' 307'Jan 1 1990' 308 => 309 1981031000:00:00 310 1983030800:00:00 311 1985030500:00:00 312 1987031000:00:00 313 1989030700:00:00 314 3152*3:0:2,30:0:0:0 316'Jan 1 1985' 317'Jan 1 1980' 318'Jan 1 1990' 319 => 320 1981030200:00:00 321 1981033000:00:00 322 1983030200:00:00 323 1983033000:00:00 324 1985030200:00:00 325 1985033000:00:00 326 1987030200:00:00 327 1987033000:00:00 328 1989030200:00:00 329 1989033000:00:00 330 3312*3:0:0:0:0:0 332'Jan 1 1985' 333'Jan 1 1980' 334'Jan 1 1990' 335 => 336 1981030100:00:00 337 1983030100:00:00 338 1985030100:00:00 339 1987030100:00:00 340 1989030100:00:00 341 3423*2,5:2,-2:0:0:0:0 343'Jan 1 1985' 344'Jan 1 1980' 345'Jan 1 1986' 346 => 347 1982020800:00:00 348 1982021500:00:00 349 1982051000:00:00 350 1982052400:00:00 351 1985021100:00:00 352 1985021800:00:00 353 1985051300:00:00 354 1985052000:00:00 355 3563*5,2:2,-2:0:0:0:0 357'Jan 1 1985' 358'Jan 1 1980' 359'Jan 1 1986' 360 => 361 1982020800:00:00 362 1982021500:00:00 363 1982051000:00:00 364 1982052400:00:00 365 1985021100:00:00 366 1985021800:00:00 367 1985051300:00:00 368 1985052000:00:00 369 3703*2,5:2:2:0:0:0 371'Jan 1 1985' 372'Jan 1 1980' 373'Jan 1 1990' 374 => 375 1982020900:00:00 376 1982051100:00:00 377 1985021200:00:00 378 1985051400:00:00 379 1988020900:00:00 380 1988051000:00:00 381 3821*2:2:0:0:0:0 383'' 384'Jan 1 1980' 385'Dec 1 1982' 386 => 387 1980021100:00:00 388 1981020900:00:00 389 1982020800:00:00 390 3911*2:2:2:0:0:0 392'' 393'Jan 1 1980' 394'Dec 1 1982' 395 => 396 1980021200:00:00 397 1981021000:00:00 398 1982020900:00:00 399 400*2000:2:1:1:0:0:0 401 => 402 2000020700:00:00 403 404*2000:2:1:-1:0:0:0 405 => 406 2000020600:00:00 407 408*2000:2:1:0:0:0:0 409 => 410 2000020700:00:00 411 412*2000:2:-1:1:0:0:0 413 => 414 2000022800:00:00 415 416*2000:2:-1:-1:0:0:0 417 => 418 2000022700:00:00 419 420*2000:2:-1:0:0:0:0 421 => 422 2000022800:00:00 423 424*2000:0:0:0:0:0:0 425 => 426 2000010100:00:00 427 428*2000:0:0:61:0:0:0 429 => 430 2000030100:00:00 431 432*2000:0:0:-1:0:0:0 433 => 434 2000123100:00:00 435 436*2000:2:0:2:0:0:0 437 => 438 2000020200:00:00 439 440*2000:2:0:-2:0:0:0 441 => 442 2000022800:00:00 443 444*2000:0:2:2:0:0:0 445 => 446 2000011100:00:00 447 448*2000:0:2:-2:0:0:0 449 => 450 2000010800:00:00 451 452*2000:0:-2:2:0:0:0 453 => 454 2000121900:00:00 455 456*2000:0:-2:-2:0:0:0 457 => 458 2000122300:00:00 459 460*2000:0:2:0:0:0:0 461 => 462 2000011000:00:00 463 464*2000:0:-2:0:0:0:0 465 => 466 2000121800:00:00 467 468*1990,1992:0:0:45:0:0:0 469 => 470 1990021400:00:00 471 1992021400:00:00 472 473*1990,1992:0:0:0:0:0:0 474 => 475 1990010100:00:00 476 1992010100:00:00 477 478*1990,1992:5:0:0:0:0:0 479 => 480 1990050100:00:00 481 1992050100:00:00 482 483*1990,1992:5:0:12:0:0:0 484 => 485 1990051200:00:00 486 1992051200:00:00 487 488*1998:0:12,14:0:0:0:0 489 => 490 1998032300:00:00 491 1998040600:00:00 492 493*1998:0:12,14:2:0:0:0 494 => 495 1998032400:00:00 496 1998040700:00:00 497 498*1998:2:2,-2:0:0:0:0 499 => 500 1998020900:00:00 501 1998021600:00:00 502 503*1998:2:2,-2:2:0:0:0 504 => 505 1998021000:00:00 506 1998021700:00:00 507 508*1998:2:2,-2:-6:0:0:0 509 => 510 1998021000:00:00 511 1998021700:00:00 512 513*1998:2:2,-2:2:0:0:0 5141998021000:00:00 5151998021000:00:00 5161998021200:00:00 517 => 518 1998021000:00:00 519 5201*2:0:-1:0:0:0 521'' 5222000-01-01 5232005-12-31 524 => 525 2000022900:00:00 526 2001022800:00:00 527 2002022800:00:00 528 2003022800:00:00 529 2004022900:00:00 530 2005022800:00:00 531 5321:0*2:0:0:0:0 533'' 5342000-01-01 5352000-12-31 536 => 537 2000011000:00:00 538 5391:0*-2:0:0:0:0 540'' 5412000-01-01 5422000-12-31 543 => 544 2000121800:00:00 545 5461:0*2:1:0:0:0 547'' 5482000-01-01 5492000-12-31 550 => 551 2000011000:00:00 552 5531:0*-2:1:0:0:0 554'' 5552000-01-01 5562000-12-31 557 => 558 2000121800:00:00 559 5601:0*2:-7:0:0:0 561'' 5622000-01-01 5632000-12-31 564 => 565 2000011000:00:00 566 5671:0*-2:-7:0:0:0 568'' 5692000-01-01 5702000-12-31 571 => 572 2000121800:00:00 573 5741:1*2:0:0:0:0 575'Jan 10 2000' 576'Jan 1 2000' 577'Dec 31 2002' 578 => 579 2000011000:00:00 580 2001021200:00:00 581 2002031100:00:00 582 5831:1*-2:0:0:0:0 584'Jan 10 2000' 585'Jan 1 2000' 586'Dec 31 2002' 587 => 588 2000012400:00:00 589 2001021900:00:00 590 2002031800:00:00 591 5921:1*2:1:0:0:0 593'Jan 10 2000' 594'Jan 1 2000' 595'Dec 31 2002' 596 => 597 2000011000:00:00 598 2001021200:00:00 599 2002031100:00:00 600 6011:1*-2:1:0:0:0 602'Jan 10 2000' 603'Jan 1 2000' 604'Dec 31 2002' 605 => 606 2000012400:00:00 607 2001021900:00:00 608 2002031800:00:00 609 6101:1*2:-7:0:0:0 611'Jan 10 2000' 612'Jan 1 2000' 613'Dec 31 2002' 614 => 615 2000011000:00:00 616 2001021200:00:00 617 2002031100:00:00 618 6191:1*-2:-7:0:0:0 620'Jan 10 2000' 621'Jan 1 2000' 622'Dec 31 2002' 623 => 624 2000012400:00:00 625 2001021900:00:00 626 2002031800:00:00 627 6281:1:1*0:0:0:0 629'Jan 4 2000' 630'Jan 1 2000' 631'Dec 31 2002' 632 => 633 2000010400:00:00 634 2001021100:00:00 635 2002031800:00:00 636 6371:0:0*15:0:0:0 638'' 639'Jan 1 2000' 640'Dec 31 2002' 641 => 642 2000011500:00:00 643 2001011500:00:00 644 2002011500:00:00 645 6461:0:0*-10:0:0:0 647'' 648'Jan 1 2000' 649'Dec 31 2002' 650 => 651 2000122200:00:00 652 2001122200:00:00 653 2002122200:00:00 654 6551:1:1*2:0:0:0 656'Jan 4 2000' 657'Jan 1 2000' 658'Dec 31 2002' 659 => 660 2000010400:00:00 661 2001021100:00:00 662 2002031800:00:00 663 6641:1:1*-6:0:0:0 665'Jan 4 2000' 666'Jan 1 2000' 667'Dec 31 2002' 668 => 669 2000010400:00:00 670 2001021100:00:00 671 2002031800:00:00 672 6731:1:0*10:0:0:0 674'Jan 4 2000' 675'Jan 1 2000' 676'Dec 31 2002' 677 => 678 2000011000:00:00 679 2001021000:00:00 680 2002031000:00:00 681 682*2000-2009:0:0:366:0:0:0 683 => 684 2000123100:00:00 685 2004123100:00:00 686 2008123100:00:00 687 688*2000:1-5:0:31:0:0:0 689 => 690 2000013100:00:00 691 2000033100:00:00 692 2000053100:00:00 693 694*2000-2009:0:53:1:0:0:0 695 => 696 2001123100:00:00 697 2007123100:00:00 698 699*2000-2009:0:-53:1:0:0:0 700 => 701 2001010100:00:00 702 2007010100:00:00 703 7041*1-4:0:31:0:0:0 705'' 706'Jan 1 2000' 707'Dec 31 2000' 708 => 709 2000013100:00:00 710 2000033100:00:00 711 7121*1-4:0:-31:0:0:0 713'' 714'Jan 1 2000' 715'Dec 31 2000' 716 => 717 2000010100:00:00 718 2000030100:00:00 719 7201:1:0*-10:0:0:0 721'Jan 4 2000' 722'Jan 1 2000' 723'Dec 31 2002' 724 => 725 2000012200:00:00 726 2001021900:00:00 727 2002032200:00:00 728 729*2000:1-5:5:-1:0:0:0 730 => 731 2000013000:00:00 732 2000043000:00:00 733 734*2000:1-5:-5:-1:0:0:0 735 => 736 2000010200:00:00 737 2000040200:00:00 738 739*2000:1-5:5:0:0:0:0 740 => 741 2000013100:00:00 742 2000052900:00:00 743 744*2000:1-5:-5:0:0:0:0 745 => 746 2000010300:00:00 747 2000050100:00:00 748 7491*1-5:5:-1:0:0:0 750'' 751'Jan 1 2000' 752'Dec 1 2000' 753 => 754 2000013000:00:00 755 2000043000:00:00 756 7571*1-5:-5:-1:0:0:0 758'' 759'Jan 1 2000' 760'Dec 1 2000' 761 => 762 2000010200:00:00 763 2000040200:00:00 764 7651*1-5:5:0:0:0:0 766'' 767'Jan 1 2000' 768'Dec 1 2000' 769 => 770 2000013100:00:00 771 2000052900:00:00 772 7731*1-5:-5:0:0:0:0 774'' 775'Jan 1 2000' 776'Dec 1 2000' 777 => 778 2000010300:00:00 779 2000050100:00:00 780 7811:0*53:1:0:0:0 782'' 783'Jan 1 2000' 784'Jan 1 2010' 785 => 786 2001123100:00:00 787 2007123100:00:00 788 7891:0*-53:1:0:0:0 790'' 791'Jan 1 2000' 792'Jan 1 2010' 793 => 794 2001010100:00:00 795 2007010100:00:00 796 7971:0:0*366:0:0:0 798'' 799'Jan 1 2000' 800'Jan 1 2010' 801 => 802 2000123100:00:00 803 2004123100:00:00 804 2008123100:00:00 805 8061:0:0*-366:0:0:0 807'' 808'Jan 1 2000' 809'Jan 1 2010' 810 => 811 2000010100:00:00 812 2004010100:00:00 813 2008010100:00:00 814 8150:1*1:1:12:0:0 816'' 817'Sep 1 2007' 818'Nov 20 2007' 819 => 820 2007090312:00:00 821 2007100112:00:00 822 2007110512:00:00 823 8240:0:1*1:12:30:0 825'' 826'Sep 1 2007' 827'Sep 30 2007' 828 => 829 2007090312:30:00 830 2007091012:30:00 831 2007091712:30:00 832 2007092412:30:00 833 8340:1:0*1:12:0:0 835'' 836'Sep 1 2007' 837'Dec 15 2007' 838 => 839 2007090112:00:00 840 2007100112:00:00 841 2007110112:00:00 842 2007120112:00:00 843 8440:0:0:0:1*30:0 845'' 846'Jan 1 1990 12:12' 847'Jan 2 1990 01:32' 848 => 849 1990010112:30:00 850 1990010113:30:00 851 1990010114:30:00 852 1990010115:30:00 853 1990010116:30:00 854 1990010117:30:00 855 1990010118:30:00 856 1990010119:30:00 857 1990010120:30:00 858 1990010121:30:00 859 1990010122:30:00 860 1990010123:30:00 861 1990010200:30:00 862 1990010201:30:00 863 864"; 865 866$::ti->tests(func => \&ParseRecur, 867 tests => $tests); 868$::ti->done_testing(); 869 870#Local Variables: 871#mode: cperl 872#indent-tabs-mode: nil 873#cperl-indent-level: 3 874#cperl-continued-statement-offset: 2 875#cperl-continued-brace-offset: 0 876#cperl-brace-offset: 0 877#cperl-brace-imaginary-offset: 0 878#cperl-label-offset: 0 879#End: 880