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.