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