/** test event on 5TH tue in month. **/ function testFiveWeekInMonth2() { TimeSource::mock(2014, 4, 20, 14, 27, 0); $event = new EventModel(); $event->setStartAt($this->mktime(2014, 4, 29, 18, 30, 0)); $event->setEndAt($this->mktime(2014, 4, 29, 21, 0, 0)); $eventSet = new EventRecurSetModel(); $eventSet->setTimeZoneName('Europe/London'); $newEvents = $eventSet->getNewMonthlyEventsOnLastDayInWeek($event, 6 * 31); $this->assertTrue(count($newEvents) >= 3); $this->assertEquals($this->mktime(2014, 5, 27, 18, 30, 0)->format('r'), $newEvents[0]->getStartAt()->format('r')); $this->assertEquals($this->mktime(2014, 5, 27, 21, 0, 0)->format('r'), $newEvents[0]->getEndAt()->format('r')); $this->assertEquals($this->mktime(2014, 6, 24, 18, 30, 0)->format('r'), $newEvents[1]->getStartAt()->format('r')); $this->assertEquals($this->mktime(2014, 6, 24, 21, 0, 0)->format('r'), $newEvents[1]->getEndAt()->format('r')); $this->assertEquals($this->mktime(2014, 7, 29, 18, 30, 0)->format('r'), $newEvents[2]->getStartAt()->format('r')); $this->assertEquals($this->mktime(2014, 7, 29, 21, 0, 0)->format('r'), $newEvents[2]->getEndAt()->format('r')); }