]>
git.proxmox.com Git - pve-common.git/blob - test/calendar_event_test.pl
10 use PVE
::CalendarEvent
;
12 my $alldays = [0,1,2,3,4,5,6];
16 { h
=> '*', m
=> '*', dow
=> $alldays },
26 { h
=> '*', m
=> [0, 10, 20, 30, 40, 50], dow
=> $alldays },
36 { h
=> [0, 12], m
=> [0], dow
=> $alldays },
44 { h
=> [1, 13], m
=> [0, 15, 30, 45], dow
=> $alldays },
48 [3600+16*60, 3600+30*60 ],
49 [3600+30*60, 3600+45*60 ],
50 [3600+45*60, 3600+12*3600],
51 [13*3600 + 1, 13*3600+15*60],
52 [13*3600 + 15*60, 13*3600+30*60],
53 [13*3600 + 30*60, 13*3600+45*60],
54 [13*3600 + 45*60, 25*3600],
59 { h
=> '*', m
=> [1, 4, 6], dow
=> $alldays},
69 { h
=> '*', m
=> [ 0, 1, 2, 3 ], dow
=> $alldays },
73 { h
=> [ 23 ], m
=> [ 0, 1, 2, 3 ], dow
=> $alldays },
77 { h
=> [0], m
=> [0], dow
=> [1] },
79 [0, 4*86400], # Note: Epoch 0 is Thursday, 1. January 1970
86 { h
=> [0], m
=> [0], dow
=> [0, 6] },
95 { h
=> [0], m
=> [0], dow
=> $alldays },
99 { error
=> "wrong order in range 'Fri..Mon'" },
103 { h
=> [0], m
=> [0], dow
=> [ 1, 2, 3, 5] },
107 { h
=> '*', m
=> [0, 15, 30, 45], dow
=> [1]},
111 { h
=> [22, 23], m
=> [0], dow
=> $alldays },
114 [22*60*60, 23*60*60],
115 [22*60*60 + 59*60, 23*60*60]
120 { h
=> [0,2,4,6,8,10,12,14,16,18,20,22], m
=> '*', dow
=> $alldays },
124 [2*60*60, 2*60*60 + 60]
129 { h
=> [20,21,22], m
=> [0,30], dow
=> $alldays },
132 [20*60*60, 20*60*60 + 30*60],
133 [22*60*60 + 30*60, 44*60*60]
138 { error
=> "value '61' out of range" },
142 { error
=> "repetition '61' out of range" },
146 { error
=> "range end '80' out of range" },
150 { error
=> "unable to parse calendar event - unused parts" },
154 { error
=> "unable to parse calendar event - event is empty" },
158 { error
=> "unable to parse calendar event - unused parts" },
162 { h
=> '*', m
=> [0,1,3,4,5], dow
=> $alldays },
171 { h
=> [2,4], m
=> [0,1,3,4,5], dow
=> $alldays },
174 [2*60*60 + 60, 2*60*60 + 3*60],
175 [2*60*60 + 5*60, 4*60*60]
180 foreach my $test (@$tests) {
181 my ($t, $expect, $nextsync) = @$test;
184 eval { $timespec = PVE
::CalendarEvent
::parse_calendar_event
($t); };
187 if ($expect->{error
}) {
189 $timespec = { error
=> $err } if $err;
190 is_deeply
($timespec, $expect, "expect parse error on '$t' - $expect->{error}");
191 die "unable to execute nextsync tests" if $nextsync;
193 is_deeply
($timespec, $expect, "parse '$t'");
198 foreach my $nt (@$nextsync) {
199 my ($last, $expect_next) = @$nt;
201 my $msg = "next event '$t' $last => ${expect_next}";
202 my $next = PVE
::CalendarEvent
::compute_next_event
($timespec, $last, 1);
203 is($next, $expect_next, $msg);