7use PHPUnit\Framework\TestCase;
16 $ev =
$vcal->createComponent(
'VEVENT');
18 $ev->RRULE =
'FREQ=DAILY;BYHOUR=10;BYMINUTE=5;BYSECOND=16;BYWEEKNO=32;BYYEARDAY=100,200';
19 $dtStart =
$vcal->createProperty(
'DTSTART');
20 $dtStart->setDateTime(
new DateTimeImmutable(
'2011-10-07'));
28 $this->assertTrue($it->isInfinite());
39 $ev =
$vcal->createComponent(
'VEVENT');
40 $ev->RRULE =
'FREQ=SMONTHLY;INTERVAL=3;UNTIL=20111025T000000Z';
42 $dtStart =
$vcal->createProperty(
'DTSTART');
43 $dtStart->setDateTime(
new DateTimeImmutable(
'2011-10-07',
new DateTimeZone(
'UTC')));
78 $ev =
$vcal->createComponent(
'VEVENT');
81 $ev->RRULE =
'FREQ=HOURLY;INTERVAL=3;UNTIL=20111025T000000Z';
82 $dtStart =
$vcal->createProperty(
'DTSTART');
83 $dtStart->setDateTime(
new DateTimeImmutable(
'2011-10-07 12:00:00',
new DateTimeZone(
'UTC')));
93 foreach ($it as $item) {
102 $tz =
new DateTimeZone(
'UTC');
106 new DateTimeImmutable(
'2011-10-07 12:00:00',
$tz),
107 new DateTimeImmutable(
'2011-10-07 15:00:00',
$tz),
108 new DateTimeImmutable(
'2011-10-07 18:00:00',
$tz),
109 new DateTimeImmutable(
'2011-10-07 21:00:00',
$tz),
110 new DateTimeImmutable(
'2011-10-08 00:00:00',
$tz),
111 new DateTimeImmutable(
'2011-10-08 03:00:00',
$tz),
112 new DateTimeImmutable(
'2011-10-08 06:00:00',
$tz),
113 new DateTimeImmutable(
'2011-10-08 09:00:00',
$tz),
114 new DateTimeImmutable(
'2011-10-08 12:00:00',
$tz),
115 new DateTimeImmutable(
'2011-10-08 15:00:00',
$tz),
116 new DateTimeImmutable(
'2011-10-08 18:00:00',
$tz),
117 new DateTimeImmutable(
'2011-10-08 21:00:00',
$tz),
130 $ev =
$vcal->createComponent(
'VEVENT');
133 $ev->RRULE =
'FREQ=DAILY;INTERVAL=3;UNTIL=20111025T000000Z';
134 $dtStart =
$vcal->createProperty(
'DTSTART');
135 $dtStart->setDateTime(
new DateTimeImmutable(
'2011-10-07',
new DateTimeZone(
'UTC')));
146 foreach ($it as $item) {
155 $tz =
new DateTimeZone(
'UTC');
159 new DateTimeImmutable(
'2011-10-07',
$tz),
160 new DateTimeImmutable(
'2011-10-10',
$tz),
161 new DateTimeImmutable(
'2011-10-13',
$tz),
162 new DateTimeImmutable(
'2011-10-16',
$tz),
163 new DateTimeImmutable(
'2011-10-19',
$tz),
164 new DateTimeImmutable(
'2011-10-22',
$tz),
165 new DateTimeImmutable(
'2011-10-25',
$tz),
178 $ev =
$vcal->createComponent(
'VEVENT');
181 $dtStart =
$vcal->createProperty(
'DTSTART');
182 $dtStart->setDateTime(
new DateTimeImmutable(
'2011-10-07',
new DateTimeZone(
'UTC')));
193 foreach ($it as $item) {
202 $tz =
new DateTimeZone(
'UTC');
206 new DateTimeImmutable(
'2011-10-07',
$tz),
219 $ev =
$vcal->createComponent(
'VEVENT');
222 $ev->RRULE =
'FREQ=DAILY;BYDAY=SA,SU;BYHOUR=6,7';
223 $dtStart =
$vcal->createProperty(
'DTSTART');
224 $dtStart->setDateTime(
new DateTimeImmutable(
'2011-10-08 06:00:00',
new DateTimeZone(
'UTC')));
235 foreach ($it as $item) {
244 $tz =
new DateTimeZone(
'UTC');
248 new DateTimeImmutable(
'2011-10-08 06:00:00',
$tz),
249 new DateTimeImmutable(
'2011-10-08 07:00:00',
$tz),
250 new DateTimeImmutable(
'2011-10-09 06:00:00',
$tz),
251 new DateTimeImmutable(
'2011-10-09 07:00:00',
$tz),
252 new DateTimeImmutable(
'2011-10-15 06:00:00',
$tz),
253 new DateTimeImmutable(
'2011-10-15 07:00:00',
$tz),
254 new DateTimeImmutable(
'2011-10-16 06:00:00',
$tz),
255 new DateTimeImmutable(
'2011-10-16 07:00:00',
$tz),
256 new DateTimeImmutable(
'2011-10-22 06:00:00',
$tz),
257 new DateTimeImmutable(
'2011-10-22 07:00:00',
$tz),
258 new DateTimeImmutable(
'2011-10-23 06:00:00',
$tz),
259 new DateTimeImmutable(
'2011-10-23 07:00:00',
$tz),
272 $ev =
$vcal->createComponent(
'VEVENT');
275 $ev->RRULE =
'FREQ=DAILY;INTERVAL=2;BYHOUR=10,11,12,13,14,15';
276 $dtStart =
$vcal->createProperty(
'DTSTART');
277 $dtStart->setDateTime(
new DateTimeImmutable(
'2012-10-11 12:00:00',
new DateTimeZone(
'UTC')));
288 foreach ($it as $item) {
297 $tz =
new DateTimeZone(
'UTC');
301 new DateTimeImmutable(
'2012-10-11 12:00:00',
$tz),
302 new DateTimeImmutable(
'2012-10-11 13:00:00',
$tz),
303 new DateTimeImmutable(
'2012-10-11 14:00:00',
$tz),
304 new DateTimeImmutable(
'2012-10-11 15:00:00',
$tz),
305 new DateTimeImmutable(
'2012-10-13 10:00:00',
$tz),
306 new DateTimeImmutable(
'2012-10-13 11:00:00',
$tz),
307 new DateTimeImmutable(
'2012-10-13 12:00:00',
$tz),
308 new DateTimeImmutable(
'2012-10-13 13:00:00',
$tz),
309 new DateTimeImmutable(
'2012-10-13 14:00:00',
$tz),
310 new DateTimeImmutable(
'2012-10-13 15:00:00',
$tz),
311 new DateTimeImmutable(
'2012-10-15 10:00:00',
$tz),
312 new DateTimeImmutable(
'2012-10-15 11:00:00',
$tz),
325 $ev =
$vcal->createComponent(
'VEVENT');
328 $ev->RRULE =
'FREQ=DAILY;INTERVAL=2;BYDAY=TU,WE,FR';
329 $dtStart =
$vcal->createProperty(
'DTSTART');
330 $dtStart->setDateTime(
new DateTimeImmutable(
'2011-10-07',
new DateTimeZone(
'UTC')));
341 foreach ($it as $item) {
350 $tz =
new DateTimeZone(
'UTC');
354 new DateTimeImmutable(
'2011-10-07',
$tz),
355 new DateTimeImmutable(
'2011-10-11',
$tz),
356 new DateTimeImmutable(
'2011-10-19',
$tz),
357 new DateTimeImmutable(
'2011-10-21',
$tz),
358 new DateTimeImmutable(
'2011-10-25',
$tz),
359 new DateTimeImmutable(
'2011-11-02',
$tz),
360 new DateTimeImmutable(
'2011-11-04',
$tz),
361 new DateTimeImmutable(
'2011-11-08',
$tz),
362 new DateTimeImmutable(
'2011-11-16',
$tz),
363 new DateTimeImmutable(
'2011-11-18',
$tz),
364 new DateTimeImmutable(
'2011-11-22',
$tz),
365 new DateTimeImmutable(
'2011-11-30',
$tz),
378 $ev =
$vcal->createComponent(
'VEVENT');
381 $ev->RRULE =
'FREQ=WEEKLY;INTERVAL=2;COUNT=10';
382 $dtStart =
$vcal->createProperty(
'DTSTART');
383 $dtStart->setDateTime(
new DateTimeImmutable(
'2011-10-07',
new DateTimeZone(
'UTC')));
394 foreach ($it as $item) {
403 $tz =
new DateTimeZone(
'UTC');
407 new DateTimeImmutable(
'2011-10-07',
$tz),
408 new DateTimeImmutable(
'2011-10-21',
$tz),
409 new DateTimeImmutable(
'2011-11-04',
$tz),
410 new DateTimeImmutable(
'2011-11-18',
$tz),
411 new DateTimeImmutable(
'2011-12-02',
$tz),
412 new DateTimeImmutable(
'2011-12-16',
$tz),
413 new DateTimeImmutable(
'2011-12-30',
$tz),
414 new DateTimeImmutable(
'2012-01-13',
$tz),
415 new DateTimeImmutable(
'2012-01-27',
$tz),
416 new DateTimeImmutable(
'2012-02-10',
$tz),
429 $ev =
$vcal->createComponent(
'VEVENT');
432 $ev->RRULE =
'FREQ=WEEKLY;INTERVAL=2;BYDAY=TU,WE,FR;WKST=MO;BYHOUR=8,9,10';
433 $dtStart =
$vcal->createProperty(
'DTSTART');
434 $dtStart->setDateTime(
new DateTimeImmutable(
'2011-10-07 08:00:00',
new DateTimeZone(
'UTC')));
445 foreach ($it as $item) {
454 $tz =
new DateTimeZone(
'UTC');
458 new DateTimeImmutable(
'2011-10-07 08:00:00',
$tz),
459 new DateTimeImmutable(
'2011-10-07 09:00:00',
$tz),
460 new DateTimeImmutable(
'2011-10-07 10:00:00',
$tz),
461 new DateTimeImmutable(
'2011-10-18 08:00:00',
$tz),
462 new DateTimeImmutable(
'2011-10-18 09:00:00',
$tz),
463 new DateTimeImmutable(
'2011-10-18 10:00:00',
$tz),
464 new DateTimeImmutable(
'2011-10-19 08:00:00',
$tz),
465 new DateTimeImmutable(
'2011-10-19 09:00:00',
$tz),
466 new DateTimeImmutable(
'2011-10-19 10:00:00',
$tz),
467 new DateTimeImmutable(
'2011-10-21 08:00:00',
$tz),
468 new DateTimeImmutable(
'2011-10-21 09:00:00',
$tz),
469 new DateTimeImmutable(
'2011-10-21 10:00:00',
$tz),
470 new DateTimeImmutable(
'2011-11-01 08:00:00',
$tz),
471 new DateTimeImmutable(
'2011-11-01 09:00:00',
$tz),
472 new DateTimeImmutable(
'2011-11-01 10:00:00',
$tz),
485 $ev =
$vcal->createComponent(
'VEVENT');
488 $ev->RRULE =
'FREQ=WEEKLY;INTERVAL=2;BYDAY=TU,WE,FR;WKST=SU';
489 $dtStart =
$vcal->createProperty(
'DTSTART');
490 $dtStart->setDateTime(
new DateTimeImmutable(
'2011-10-07 18:00:00',
new DateTimeZone(
'UTC')));
501 foreach ($it as $item) {
510 $tz =
new DateTimeZone(
'UTC');
514 new DateTimeImmutable(
'2011-10-07 18:00:00',
$tz),
515 new DateTimeImmutable(
'2011-10-18 18:00:00',
$tz),
516 new DateTimeImmutable(
'2011-10-19 18:00:00',
$tz),
517 new DateTimeImmutable(
'2011-10-21 18:00:00',
$tz),
518 new DateTimeImmutable(
'2011-11-01 18:00:00',
$tz),
519 new DateTimeImmutable(
'2011-11-02 18:00:00',
$tz),
520 new DateTimeImmutable(
'2011-11-04 18:00:00',
$tz),
521 new DateTimeImmutable(
'2011-11-15 18:00:00',
$tz),
522 new DateTimeImmutable(
'2011-11-16 18:00:00',
$tz),
523 new DateTimeImmutable(
'2011-11-18 18:00:00',
$tz),
524 new DateTimeImmutable(
'2011-11-29 18:00:00',
$tz),
525 new DateTimeImmutable(
'2011-11-30 18:00:00',
$tz),
538 $ev =
$vcal->createComponent(
'VEVENT');
541 $ev->RRULE =
'FREQ=WEEKLY;INTERVAL=2;BYDAY=TU,WE,FR;WKST=SU';
542 $dtStart =
$vcal->createProperty(
'DTSTART');
543 $dtStart->setDateTime(
new DateTimeImmutable(
'2011-10-07',
new DateTimeZone(
'UTC')));
554 foreach ($it as $item) {
563 $tz =
new DateTimeZone(
'UTC');
567 new DateTimeImmutable(
'2011-10-07',
$tz),
568 new DateTimeImmutable(
'2011-10-18',
$tz),
569 new DateTimeImmutable(
'2011-10-19',
$tz),
570 new DateTimeImmutable(
'2011-10-21',
$tz),
571 new DateTimeImmutable(
'2011-11-01',
$tz),
572 new DateTimeImmutable(
'2011-11-02',
$tz),
573 new DateTimeImmutable(
'2011-11-04',
$tz),
574 new DateTimeImmutable(
'2011-11-15',
$tz),
575 new DateTimeImmutable(
'2011-11-16',
$tz),
576 new DateTimeImmutable(
'2011-11-18',
$tz),
577 new DateTimeImmutable(
'2011-11-29',
$tz),
578 new DateTimeImmutable(
'2011-11-30',
$tz),
591 $ev =
$vcal->createComponent(
'VEVENT');
594 $ev->RRULE =
'FREQ=MONTHLY;INTERVAL=3;COUNT=5';
595 $dtStart =
$vcal->createProperty(
'DTSTART');
596 $dtStart->setDateTime(
new DateTimeImmutable(
'2011-12-05',
new DateTimeZone(
'UTC')));
606 foreach ($it as $item) {
615 $tz =
new DateTimeZone(
'UTC');
619 new DateTimeImmutable(
'2011-12-05',
$tz),
620 new DateTimeImmutable(
'2012-03-05',
$tz),
621 new DateTimeImmutable(
'2012-06-05',
$tz),
622 new DateTimeImmutable(
'2012-09-05',
$tz),
623 new DateTimeImmutable(
'2012-12-05',
$tz),
637 $ev =
$vcal->createComponent(
'VEVENT');
640 $ev->RRULE =
'FREQ=MONTHLY;INTERVAL=2;COUNT=12';
641 $dtStart =
$vcal->createProperty(
'DTSTART');
642 $dtStart->setDateTime(
new DateTimeImmutable(
'2011-12-31',
new DateTimeZone(
'UTC')));
652 foreach ($it as $item) {
661 $tz =
new DateTimeZone(
'UTC');
665 new DateTimeImmutable(
'2011-12-31',
$tz),
666 new DateTimeImmutable(
'2012-08-31',
$tz),
667 new DateTimeImmutable(
'2012-10-31',
$tz),
668 new DateTimeImmutable(
'2012-12-31',
$tz),
669 new DateTimeImmutable(
'2013-08-31',
$tz),
670 new DateTimeImmutable(
'2013-10-31',
$tz),
671 new DateTimeImmutable(
'2013-12-31',
$tz),
672 new DateTimeImmutable(
'2014-08-31',
$tz),
673 new DateTimeImmutable(
'2014-10-31',
$tz),
674 new DateTimeImmutable(
'2014-12-31',
$tz),
675 new DateTimeImmutable(
'2015-08-31',
$tz),
676 new DateTimeImmutable(
'2015-10-31',
$tz),
690 $ev =
$vcal->createComponent(
'VEVENT');
693 $ev->RRULE =
'FREQ=MONTHLY;INTERVAL=5;COUNT=9;BYMONTHDAY=1,31,-7';
694 $dtStart =
$vcal->createProperty(
'DTSTART');
695 $dtStart->setDateTime(
new DateTimeImmutable(
'2011-01-01',
new DateTimeZone(
'UTC')));
705 foreach ($it as $item) {
714 $tz =
new DateTimeZone(
'UTC');
718 new DateTimeImmutable(
'2011-01-01',
$tz),
719 new DateTimeImmutable(
'2011-01-25',
$tz),
720 new DateTimeImmutable(
'2011-01-31',
$tz),
721 new DateTimeImmutable(
'2011-06-01',
$tz),
722 new DateTimeImmutable(
'2011-06-24',
$tz),
723 new DateTimeImmutable(
'2011-11-01',
$tz),
724 new DateTimeImmutable(
'2011-11-24',
$tz),
725 new DateTimeImmutable(
'2012-04-01',
$tz),
726 new DateTimeImmutable(
'2012-04-24',
$tz),
743 $ev =
$vcal->createComponent(
'VEVENT');
746 $ev->RRULE =
'FREQ=MONTHLY;INTERVAL=2;COUNT=16;BYDAY=MO,-2TU,+1WE,3TH';
747 $dtStart =
$vcal->createProperty(
'DTSTART');
748 $dtStart->setDateTime(
new DateTimeImmutable(
'2011-01-03',
new DateTimeZone(
'UTC')));
758 foreach ($it as $item) {
767 $tz =
new DateTimeZone(
'UTC');
771 new DateTimeImmutable(
'2011-01-03',
$tz),
772 new DateTimeImmutable(
'2011-01-05',
$tz),
773 new DateTimeImmutable(
'2011-01-10',
$tz),
774 new DateTimeImmutable(
'2011-01-17',
$tz),
775 new DateTimeImmutable(
'2011-01-18',
$tz),
776 new DateTimeImmutable(
'2011-01-20',
$tz),
777 new DateTimeImmutable(
'2011-01-24',
$tz),
778 new DateTimeImmutable(
'2011-01-31',
$tz),
779 new DateTimeImmutable(
'2011-03-02',
$tz),
780 new DateTimeImmutable(
'2011-03-07',
$tz),
781 new DateTimeImmutable(
'2011-03-14',
$tz),
782 new DateTimeImmutable(
'2011-03-17',
$tz),
783 new DateTimeImmutable(
'2011-03-21',
$tz),
784 new DateTimeImmutable(
'2011-03-22',
$tz),
785 new DateTimeImmutable(
'2011-03-28',
$tz),
786 new DateTimeImmutable(
'2011-05-02',
$tz),
799 $ev =
$vcal->createComponent(
'VEVENT');
802 $ev->RRULE =
'FREQ=MONTHLY;COUNT=10;BYDAY=MO;BYMONTHDAY=1';
803 $dtStart =
$vcal->createProperty(
'DTSTART');
804 $dtStart->setDateTime(
new DateTimeImmutable(
'2011-08-01',
new DateTimeZone(
'UTC')));
814 foreach ($it as $item) {
823 $tz =
new DateTimeZone(
'UTC');
827 new DateTimeImmutable(
'2011-08-01',
$tz),
828 new DateTimeImmutable(
'2012-10-01',
$tz),
829 new DateTimeImmutable(
'2013-04-01',
$tz),
830 new DateTimeImmutable(
'2013-07-01',
$tz),
831 new DateTimeImmutable(
'2014-09-01',
$tz),
832 new DateTimeImmutable(
'2014-12-01',
$tz),
833 new DateTimeImmutable(
'2015-06-01',
$tz),
834 new DateTimeImmutable(
'2016-02-01',
$tz),
835 new DateTimeImmutable(
'2016-08-01',
$tz),
836 new DateTimeImmutable(
'2017-05-01',
$tz),
849 $ev =
$vcal->createComponent(
'VEVENT');
852 $ev->RRULE =
'FREQ=MONTHLY;COUNT=10;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=1,-1';
853 $dtStart =
$vcal->createProperty(
'DTSTART');
854 $dtStart->setDateTime(
new DateTimeImmutable(
'2011-01-03',
new DateTimeZone(
'UTC')));
864 foreach ($it as $item) {
873 $tz =
new DateTimeZone(
'UTC');
877 new DateTimeImmutable(
'2011-01-03',
$tz),
878 new DateTimeImmutable(
'2011-01-31',
$tz),
879 new DateTimeImmutable(
'2011-02-01',
$tz),
880 new DateTimeImmutable(
'2011-02-28',
$tz),
881 new DateTimeImmutable(
'2011-03-01',
$tz),
882 new DateTimeImmutable(
'2011-03-31',
$tz),
883 new DateTimeImmutable(
'2011-04-01',
$tz),
884 new DateTimeImmutable(
'2011-04-29',
$tz),
885 new DateTimeImmutable(
'2011-05-02',
$tz),
886 new DateTimeImmutable(
'2011-05-31',
$tz),
899 $ev =
$vcal->createComponent(
'VEVENT');
902 $ev->RRULE =
'FREQ=YEARLY;COUNT=10;INTERVAL=3';
903 $dtStart =
$vcal->createProperty(
'DTSTART');
904 $dtStart->setDateTime(
new DateTimeImmutable(
'2011-01-01',
new DateTimeZone(
'UTC')));
914 foreach ($it as $item) {
923 $tz =
new DateTimeZone(
'UTC');
927 new DateTimeImmutable(
'2011-01-01',
$tz),
928 new DateTimeImmutable(
'2014-01-01',
$tz),
929 new DateTimeImmutable(
'2017-01-01',
$tz),
930 new DateTimeImmutable(
'2020-01-01',
$tz),
931 new DateTimeImmutable(
'2023-01-01',
$tz),
932 new DateTimeImmutable(
'2026-01-01',
$tz),
933 new DateTimeImmutable(
'2029-01-01',
$tz),
934 new DateTimeImmutable(
'2032-01-01',
$tz),
935 new DateTimeImmutable(
'2035-01-01',
$tz),
936 new DateTimeImmutable(
'2038-01-01',
$tz),
949 $ev =
$vcal->createComponent(
'VEVENT');
952 $ev->RRULE =
'FREQ=YEARLY;COUNT=3';
953 $dtStart =
$vcal->createProperty(
'DTSTART');
954 $dtStart->setDateTime(
new DateTimeImmutable(
'2012-02-29',
new DateTimeZone(
'UTC')));
964 foreach ($it as $item) {
973 $tz =
new DateTimeZone(
'UTC');
977 new DateTimeImmutable(
'2012-02-29',
$tz),
978 new DateTimeImmutable(
'2016-02-29',
$tz),
979 new DateTimeImmutable(
'2020-02-29',
$tz),
992 $ev =
$vcal->createComponent(
'VEVENT');
995 $ev->RRULE =
'FREQ=YEARLY;COUNT=8;INTERVAL=4;BYMONTH=4,10';
996 $dtStart =
$vcal->createProperty(
'DTSTART');
997 $dtStart->setDateTime(
new DateTimeImmutable(
'2011-04-07',
new DateTimeZone(
'UTC')));
1007 foreach ($it as $item) {
1016 $tz =
new DateTimeZone(
'UTC');
1018 $this->assertEquals(
1020 new DateTimeImmutable(
'2011-04-07',
$tz),
1021 new DateTimeImmutable(
'2011-10-07',
$tz),
1022 new DateTimeImmutable(
'2015-04-07',
$tz),
1023 new DateTimeImmutable(
'2015-10-07',
$tz),
1024 new DateTimeImmutable(
'2019-04-07',
$tz),
1025 new DateTimeImmutable(
'2019-10-07',
$tz),
1026 new DateTimeImmutable(
'2023-04-07',
$tz),
1027 new DateTimeImmutable(
'2023-10-07',
$tz),
1040 $ev =
$vcal->createComponent(
'VEVENT');
1043 $ev->RRULE =
'FREQ=YEARLY;COUNT=8;INTERVAL=5;BYMONTH=4,10;BYDAY=1MO,-1SU';
1044 $dtStart =
$vcal->createProperty(
'DTSTART');
1045 $dtStart->setDateTime(
new DateTimeImmutable(
'2011-04-04',
new DateTimeZone(
'UTC')));
1055 foreach ($it as $item) {
1064 $tz =
new DateTimeZone(
'UTC');
1066 $this->assertEquals(
1068 new DateTimeImmutable(
'2011-04-04',
$tz),
1069 new DateTimeImmutable(
'2011-04-24',
$tz),
1070 new DateTimeImmutable(
'2011-10-03',
$tz),
1071 new DateTimeImmutable(
'2011-10-30',
$tz),
1072 new DateTimeImmutable(
'2016-04-04',
$tz),
1073 new DateTimeImmutable(
'2016-04-24',
$tz),
1074 new DateTimeImmutable(
'2016-10-03',
$tz),
1075 new DateTimeImmutable(
'2016-10-30',
$tz),
1088 $ev =
$vcal->createComponent(
'VEVENT');
1091 $ev->RRULE =
'FREQ=YEARLY;COUNT=8;INTERVAL=5;BYMONTH=4,10;BYDAY=1MO,-1SU';
1092 $dtStart =
$vcal->createProperty(
'DTSTART');
1093 $dtStart->setDateTime(
new DateTimeImmutable(
'2011-04-04',
new DateTimeZone(
'UTC')));
1103 $it->fastForward(
new DateTimeImmutable(
'2020-05-05',
new DateTimeZone(
'UTC')));
1107 while ($item = $it->current()) {
1117 $this->assertEquals([],
$result);
1126 $ev =
$vcal->createComponent(
'VEVENT');
1129 $ev->RRULE =
'FREQ=DAILY';
1131 $dtStart =
$vcal->createProperty(
'DTSTART');
1132 $dtStart->setDateTime(
new DateTimeImmutable(
'2011-04-04',
new DateTimeZone(
'UTC')));
1135 $dtEnd =
$vcal->createProperty(
'DTSTART');
1136 $dtEnd->setDateTime(
new DateTimeImmutable(
'2011-04-05',
new DateTimeZone(
'UTC')));
1143 $it->fastForward(
new DateTimeImmutable(
'2011-04-05T000000',
new DateTimeZone(
'UTC')));
1145 $this->assertEquals(
new DateTimeImmutable(
'2011-04-06'), $it->getDTStart());
1154 $ev =
$vcal->createComponent(
'VEVENT');
1157 $ev->RRULE =
'FREQ=YEARLY;COUNT=10';
1158 $dtStart =
$vcal->createProperty(
'DTSTART');
1160 $tz =
new DateTimeZone(
'Canada/Eastern');
1161 $dtStart->setDateTime(
new DateTimeImmutable(
'2011-01-01 13:50:20',
$tz));
1163 $exDate1 =
$vcal->createProperty(
'EXDATE');
1164 $exDate1->setDateTimes([
new DateTimeImmutable(
'2012-01-01 13:50:20',
$tz),
new DateTimeImmutable(
'2014-01-01 13:50:20',
$tz)]);
1165 $exDate2 =
$vcal->createProperty(
'EXDATE');
1166 $exDate2->setDateTimes([
new DateTimeImmutable(
'2016-01-01 13:50:20',
$tz)]);
1178 foreach ($it as $item) {
1187 $this->assertEquals(
1189 new DateTimeImmutable(
'2011-01-01 13:50:20',
$tz),
1190 new DateTimeImmutable(
'2013-01-01 13:50:20',
$tz),
1191 new DateTimeImmutable(
'2015-01-01 13:50:20',
$tz),
1192 new DateTimeImmutable(
'2017-01-01 13:50:20',
$tz),
1193 new DateTimeImmutable(
'2018-01-01 13:50:20',
$tz),
1194 new DateTimeImmutable(
'2019-01-01 13:50:20',
$tz),
1195 new DateTimeImmutable(
'2020-01-01 13:50:20',
$tz),
1209 $ev1 =
$vcal->createComponent(
'VEVENT');
1210 $ev1->UID =
'overridden';
1211 $ev1->RRULE =
'FREQ=DAILY;COUNT=10';
1212 $ev1->DTSTART =
'20120107T120000Z';
1213 $ev1->SUMMARY =
'baseEvent';
1218 $ev2 =
$vcal->createComponent(
'VEVENT');
1219 $ev2->UID =
'overridden';
1220 $ev2->{
'RECURRENCE-ID'} =
'20120110T120000Z';
1221 $ev2->DTSTART =
'20120110T140000Z';
1222 $ev2->SUMMARY =
'Event 2';
1227 $ev3 =
$vcal->createComponent(
'VEVENT');
1228 $ev3->UID =
'overridden';
1229 $ev3->{
'RECURRENCE-ID'} =
'20120113T120000Z';
1230 $ev3->DTSTART =
'20120115T140000Z';
1231 $ev3->SUMMARY =
'Event 3';
1239 while ($it->valid()) {
1241 $dates[] = $it->getDTStart();
1242 $summaries[] = (string)$it->getEventObject()->SUMMARY;
1247 $tz =
new DateTimeZone(
'UTC');
1248 $this->assertEquals([
1249 new DateTimeImmutable(
'2012-01-07 12:00:00',
$tz),
1250 new DateTimeImmutable(
'2012-01-08 12:00:00',
$tz),
1251 new DateTimeImmutable(
'2012-01-09 12:00:00',
$tz),
1252 new DateTimeImmutable(
'2012-01-10 14:00:00',
$tz),
1253 new DateTimeImmutable(
'2012-01-11 12:00:00',
$tz),
1254 new DateTimeImmutable(
'2012-01-12 12:00:00',
$tz),
1255 new DateTimeImmutable(
'2012-01-14 12:00:00',
$tz),
1256 new DateTimeImmutable(
'2012-01-15 12:00:00',
$tz),
1257 new DateTimeImmutable(
'2012-01-15 14:00:00',
$tz),
1258 new DateTimeImmutable(
'2012-01-16 12:00:00',
$tz),
1261 $this->assertEquals([
1283 $ev1 =
$vcal->createComponent(
'VEVENT');
1284 $ev1->UID =
'overridden';
1285 $ev1->RRULE =
'FREQ=WEEKLY;COUNT=3';
1286 $ev1->DTSTART =
'20120112T120000Z';
1287 $ev1->SUMMARY =
'baseEvent';
1292 $ev2 =
$vcal->createComponent(
'VEVENT');
1293 $ev2->UID =
'overridden';
1294 $ev2->{
'RECURRENCE-ID'} =
'20120119T120000Z';
1295 $ev2->DTSTART =
'20120113T120000Z';
1296 $ev2->SUMMARY =
'Override!';
1304 while ($it->valid()) {
1306 $dates[] = $it->getDTStart();
1307 $summaries[] = (string)$it->getEventObject()->SUMMARY;
1312 $tz =
new DateTimeZone(
'UTC');
1313 $this->assertEquals([
1314 new DateTimeImmutable(
'2012-01-12 12:00:00',
$tz),
1315 new DateTimeImmutable(
'2012-01-13 12:00:00',
$tz),
1316 new DateTimeImmutable(
'2012-01-26 12:00:00',
$tz),
1320 $this->assertEquals([
1334 $ev1 =
$vcal->createComponent(
'VEVENT');
1336 $ev1->UID =
'overridden';
1337 $ev1->RRULE =
'FREQ=WEEKLY;COUNT=3';
1338 $ev1->DTSTART =
'20120124T120000Z';
1339 $ev1->SUMMARY =
'baseEvent';
1344 $ev2 =
$vcal->createComponent(
'VEVENT');
1345 $ev2->UID =
'overridden';
1346 $ev2->{
'RECURRENCE-ID'} =
'20120131T120000Z';
1347 $ev2->DTSTART =
'20120125T120000Z';
1348 $ev2->SUMMARY =
'Override!';
1360 $it->fastForward(
new DateTimeImmutable(
'2012-01-28 23:00:00'));
1365 while ($it->valid() && $it->getDTStart() <
new DateTimeImmutable(
'2012-02-06 23:00:00')) {
1367 $dates[] = $it->getDTStart();
1368 $summaries[] = (string)$it->getEventObject()->SUMMARY;
1373 $this->assertEquals([], $dates);
1374 $this->assertEquals([], $summaries);
1384 $ev =
$vcal->createComponent(
'VEVENT');
1388 new DateTimeImmutable(
'2014-08-07',
new DateTimeZone(
'UTC')),
1389 new DateTimeImmutable(
'2014-08-08',
new DateTimeZone(
'UTC')),
1391 $dtStart =
$vcal->createProperty(
'DTSTART');
1392 $dtStart->setDateTime(
new DateTimeImmutable(
'2011-10-07',
new DateTimeZone(
'UTC')));
1403 foreach ($it as $item) {
1412 $tz =
new DateTimeZone(
'UTC');
1414 $this->assertEquals(
1416 new DateTimeImmutable(
'2011-10-07',
$tz),
1417 new DateTimeImmutable(
'2014-08-07',
$tz),
1418 new DateTimeImmutable(
'2014-08-08',
$tz),
1433 $ev2 =
$vcal->createComponent(
'VEVENT');
1434 $ev2->UID =
'overridden';
1435 $ev2->{
'RECURRENCE-ID'} =
'20120110T120000Z';
1436 $ev2->DTSTART =
'20120110T140000Z';
1437 $ev2->SUMMARY =
'Event 2';
1442 $ev3 =
$vcal->createComponent(
'VEVENT');
1443 $ev3->UID =
'overridden';
1444 $ev3->{
'RECURRENCE-ID'} =
'20120113T120000Z';
1445 $ev3->DTSTART =
'20120115T140000Z';
1446 $ev3->SUMMARY =
'Event 3';
An exception for terminatinating execution or to throw for unit testing.
testWeeklyByDay()
@depends testValues
testVCalendarNoUID()
@expectedException InvalidArgumentException
testYearlyByMonth()
@depends testValues
testMonthlyByDayByMonthDay()
@depends testValues
testFastForward()
@depends testValues
testMonthlyByMonthDay()
@depends testValues
testDaily()
@depends testValues
testHourly()
@depends testValues
testMonthlyByDay()
A pretty slow test.
testDailyByHour()
@depends testValues
testYearlyLeapYear()
@depends testValues
testOverridenEvent()
@depends testValues
testYearlyByMonthByDay()
@depends testValues
testVCalendarInvalidUID()
@expectedException InvalidArgumentException
testFastForwardAllDayEventThatStopAtTheStartTime()
@depends testValues
testNoRRULE()
@depends testValues
testInvalidFreq()
@expectedException \Sabre\VObject\InvalidDataException @depends testValues
testOverridenEventNoValuesExpected()
@depends testValues
testWeekly()
@depends testValues
testMonthlyEndOfMonth()
@depends testValues
testRDATE()
@depends testValues
testWeeklyByDayByHour()
@depends testValues
testWeeklyByDaySpecificHour()
@depends testValues
testMonthlyByDayBySetPos()
@depends testValues
testNoMasterBadUID()
@depends testValues @expectedException \InvalidArgumentException
testYearly()
@depends testValues
testDailyByDayByHour()
@depends testValues
testOverridenEvent2()
@depends testValues
testComplexExclusions()
@depends testValues
testMonthly()
@depends testValues
testDailyByDay()
@depends testValues
This class is used to determine new for a recurring event, when the next events occur.