function testCustomFieldChange1()
 {
     TimeSource::mock(2013, 3, 1, 9, 0, 0);
     $customFieldDefinition1 = new EventCustomFieldDefinitionModel();
     $customFieldDefinition1->setId(1);
     $customFieldDefinition1->setExtensionId('org.openacalendar');
     $customFieldDefinition1->setType('TextSingleLine');
     $customFieldDefinition1->setKey('cats');
     $customFieldDefinition1->setLabel('cats');
     $event = new EventModel();
     $event->setStartAt(getUTCDateTime(2013, 3, 1, 19, 0, 0));
     $event->setEndAt(getUTCDateTime(2013, 3, 1, 21, 0, 0));
     $event->setCustomField($customFieldDefinition1, "MANY");
     $eventSet = new EventRecurSetModel();
     $eventSet->setTimeZoneName('Europe/London');
     $eventSet->setCustomFields(array($customFieldDefinition1));
     $newEvents = $eventSet->getNewWeeklyEvents($event, 60);
     $this->assertTrue(count($newEvents) >= 8);
     $this->assertTrue($newEvents[0]->hasCustomField($customFieldDefinition1));
     $this->assertEquals("MANY", $newEvents[0]->getCustomField($customFieldDefinition1));
     $this->assertTrue($newEvents[1]->hasCustomField($customFieldDefinition1));
     $this->assertEquals("MANY", $newEvents[1]->getCustomField($customFieldDefinition1));
     $this->assertTrue($newEvents[2]->hasCustomField($customFieldDefinition1));
     $this->assertEquals("MANY", $newEvents[2]->getCustomField($customFieldDefinition1));
     $this->assertTrue($newEvents[3]->hasCustomField($customFieldDefinition1));
     $this->assertEquals("MANY", $newEvents[3]->getCustomField($customFieldDefinition1));
     // DST shift happens here! The cats do not care.
     $this->assertTrue($newEvents[4]->hasCustomField($customFieldDefinition1));
     $this->assertEquals("MANY", $newEvents[4]->getCustomField($customFieldDefinition1));
     $this->assertTrue($newEvents[5]->hasCustomField($customFieldDefinition1));
     $this->assertEquals("MANY", $newEvents[5]->getCustomField($customFieldDefinition1));
 }
 function test3()
 {
     TimeSource::mock(2013, 3, 1, 9, 0, 0);
     $event = new EventModel();
     $event->setStartAt($this->mktime(2013, 3, 1, 19, 0, 0));
     $event->setEndAt($this->mktime(2013, 3, 1, 21, 0, 0));
     $eventSet = new EventRecurSetModel();
     $eventSet->setTimeZoneName('Europe/London');
     $newEvents = $eventSet->getNewWeeklyEvents($event, 60);
     $this->assertTrue(count($newEvents) >= 8);
     $this->assertEquals($this->mktime(2013, 3, 8, 19, 0, 0)->format('r'), $newEvents[0]->getStartAt()->format('r'));
     $this->assertEquals($this->mktime(2013, 3, 8, 21, 0, 0)->format('r'), $newEvents[0]->getEndAt()->format('r'));
     $this->assertEquals($this->mktime(2013, 3, 15, 19, 0, 0)->format('r'), $newEvents[1]->getStartAt()->format('r'));
     $this->assertEquals($this->mktime(2013, 3, 15, 21, 0, 0)->format('r'), $newEvents[1]->getEndAt()->format('r'));
     $this->assertEquals($this->mktime(2013, 3, 22, 19, 0, 0)->format('r'), $newEvents[2]->getStartAt()->format('r'));
     $this->assertEquals($this->mktime(2013, 3, 22, 21, 0, 0)->format('r'), $newEvents[2]->getEndAt()->format('r'));
     $this->assertEquals($this->mktime(2013, 3, 29, 19, 0, 0)->format('r'), $newEvents[3]->getStartAt()->format('r'));
     $this->assertEquals($this->mktime(2013, 3, 29, 21, 0, 0)->format('r'), $newEvents[3]->getEndAt()->format('r'));
     ### at his point DST kicks in and since we are getting data times (in UTC) they shifn by an hour.
     $this->assertEquals($this->mktime(2013, 4, 5, 18, 0, 0)->format('r'), $newEvents[4]->getStartAt()->format('r'));
     $this->assertEquals($this->mktime(2013, 4, 5, 20, 0, 0)->format('r'), $newEvents[4]->getEndAt()->format('r'));
     $this->assertEquals($this->mktime(2013, 4, 12, 18, 0, 0)->format('r'), $newEvents[5]->getStartAt()->format('r'));
     $this->assertEquals($this->mktime(2013, 4, 12, 20, 0, 0)->format('r'), $newEvents[5]->getEndAt()->format('r'));
     $this->assertEquals($this->mktime(2013, 4, 19, 18, 0, 0)->format('r'), $newEvents[6]->getStartAt()->format('r'));
     $this->assertEquals($this->mktime(2013, 4, 19, 20, 0, 0)->format('r'), $newEvents[6]->getEndAt()->format('r'));
     $this->assertEquals($this->mktime(2013, 4, 26, 18, 0, 0)->format('r'), $newEvents[7]->getStartAt()->format('r'));
     $this->assertEquals($this->mktime(2013, 4, 26, 20, 0, 0)->format('r'), $newEvents[7]->getEndAt()->format('r'));
 }