5use PHPUnit\Framework\TestCase;
 
   20        $tz = new \DateTimeZone(
'Europe/Amsterdam');
 
   21        $dt = new \DateTime(
'1985-07-04 01:30:00', 
$tz);
 
   22        $dt->setTimeZone(
$tz);
 
   24        $elem = $this->vcal->createProperty(
'DTSTART');
 
   25        $elem->setDateTime($dt);
 
   27        $this->assertEquals(
'19850704T013000', (
string)$elem);
 
   28        $this->assertEquals(
'Europe/Amsterdam', (
string)$elem[
'TZID']);
 
   29        $this->assertNull($elem[
'VALUE']);
 
   31        $this->assertTrue($elem->hasTime());
 
   37        $tz = new \DateTimeZone(
'Europe/Amsterdam');
 
   38        $dt = new \DateTime(
'1985-07-04 01:30:00', 
$tz);
 
   39        $dt->setTimeZone(
$tz);
 
   41        $elem = $this->vcal->createProperty(
'DTSTART');
 
   42        $elem->setDateTime($dt, $isFloating = 
true);
 
   44        $this->assertEquals(
'19850704T013000', (
string)$elem);
 
   45        $this->assertNull($elem[
'TZID']);
 
   47        $this->assertTrue($elem->hasTime());
 
   52        $tz = new \DateTimeZone(
'GMT');
 
   53        $dt = new \DateTime(
'1985-07-04 01:30:00', 
$tz);
 
   54        $dt->setTimeZone(
$tz);
 
   56        $elem = $this->vcal->createProperty(
'DTSTART');
 
   57        $elem->setDateTime($dt);
 
   59        $this->assertEquals(
'19850704T013000Z', (
string)$elem);
 
   60        $this->assertNull($elem[
'TZID']);
 
   62        $this->assertTrue($elem->hasTime());
 
   68        $dt = new \DateTime(
'@489288600');
 
   70        $elem = $this->vcal->createProperty(
'DTSTART');
 
   71        $elem->setDateTime($dt);
 
   73        $this->assertEquals(
'19850704T013000Z', (
string)$elem);
 
   74        $this->assertNull($elem[
'TZID']);
 
   76        $this->assertTrue($elem->hasTime());
 
   81        $tz = new \DateTimeZone(
'Europe/Amsterdam');
 
   82        $dt = new \DateTime(
'1985-07-04 01:30:00', 
$tz);
 
   83        $dt->setTimeZone(
$tz);
 
   85        $elem = $this->vcal->createProperty(
'DTSTART');
 
   86        $elem->setDateTime($dt);
 
   88        $this->assertEquals(
'19850704T013000', (
string)$elem);
 
   89        $this->assertEquals(
'Europe/Amsterdam', (
string)$elem[
'TZID']);
 
   91        $this->assertTrue($elem->hasTime());
 
   96        $tz = new \DateTimeZone(
'Europe/Amsterdam');
 
   97        $dt = new \DateTime(
'1985-07-04 01:30:00', 
$tz);
 
   98        $dt->setTimeZone(
$tz);
 
  100        $elem = $this->vcal->createProperty(
'DTSTART');
 
  101        $elem[
'VALUE'] = 
'DATE';
 
  102        $elem->setDateTime($dt);
 
  104        $this->assertEquals(
'19850704', (
string)$elem);
 
  105        $this->assertNull($elem[
'TZID']);
 
  106        $this->assertEquals(
'DATE', (
string)$elem[
'VALUE']);
 
  108        $this->assertFalse($elem->hasTime());
 
  113        $tz = new \DateTimeZone(
'Europe/Amsterdam');
 
  114        $dt = new \DateTime(
'1985-07-04 01:30:00', 
$tz);
 
  115        $dt->setTimeZone(
$tz);
 
  117        $elem = $this->vcal->createProperty(
'DTSTART');
 
  118        $elem->setValue($dt);
 
  120        $this->assertEquals(
'19850704T013000', (
string)$elem);
 
  121        $this->assertEquals(
'Europe/Amsterdam', (
string)$elem[
'TZID']);
 
  122        $this->assertNull($elem[
'VALUE']);
 
  124        $this->assertTrue($elem->hasTime());
 
  130        $tz = new \DateTimeZone(
'Europe/Amsterdam');
 
  131        $dt1 = new \DateTime(
'1985-07-04 01:30:00', 
$tz);
 
  132        $dt2 = new \DateTime(
'1985-07-04 02:30:00', 
$tz);
 
  133        $dt1->setTimeZone(
$tz);
 
  134        $dt2->setTimeZone(
$tz);
 
  136        $elem = $this->vcal->createProperty(
'DTSTART');
 
  137        $elem->setValue([$dt1, $dt2]);
 
  139        $this->assertEquals(
'19850704T013000,19850704T023000', (
string)$elem);
 
  140        $this->assertEquals(
'Europe/Amsterdam', (
string)$elem[
'TZID']);
 
  141        $this->assertNull($elem[
'VALUE']);
 
  143        $this->assertTrue($elem->hasTime());
 
  149        $tz = new \DateTimeZone(
'Europe/Amsterdam');
 
  150        $dt1 = new \DateTime(
'1985-07-04 01:30:00', 
$tz);
 
  151        $dt2 = new \DateTime(
'1985-07-04 02:30:00', 
$tz);
 
  152        $dt1->setTimeZone(
$tz);
 
  153        $dt2->setTimeZone(
$tz);
 
  155        $elem = $this->vcal->createProperty(
'DTSTART');
 
  156        $elem->setParts([$dt1, $dt2]);
 
  158        $this->assertEquals(
'19850704T013000,19850704T023000', (
string)$elem);
 
  159        $this->assertEquals(
'Europe/Amsterdam', (
string)$elem[
'TZID']);
 
  160        $this->assertNull($elem[
'VALUE']);
 
  162        $this->assertTrue($elem->hasTime());
 
  167        $dt1 = 
'19850704T013000Z';
 
  168        $dt2 = 
'19850704T023000Z';
 
  170        $elem = $this->vcal->createProperty(
'DTSTART');
 
  171        $elem->setParts([$dt1, $dt2]);
 
  173        $this->assertEquals(
'19850704T013000Z,19850704T023000Z', (
string)$elem);
 
  174        $this->assertNull($elem[
'VALUE']);
 
  176        $this->assertTrue($elem->hasTime());
 
  183        $tz = new \DateTimeZone(
'Europe/Amsterdam');
 
  184        $dt = new \DateTimeImmutable(
'1985-07-04 01:30:00', 
$tz);
 
  185        $dt->setTimeZone(
$tz);
 
  187        $elem = $this->vcal->createProperty(
'DTSTART');
 
  188        $elem->setDateTime($dt);
 
  190        $this->assertEquals($elem->getDateTime(), $dt);
 
  196        $elem = $this->vcal->createProperty(
'DTSTART');
 
  197        $dt = $elem->getDateTime();
 
  199        $this->assertNull($dt);
 
  205        $elem = $this->vcal->createProperty(
'DTSTART', 
'19850704');
 
  206        $dt = $elem->getDateTime();
 
  208        $this->assertInstanceOf(
'DateTimeImmutable', $dt);
 
  209        $this->assertEquals(
'1985-07-04 00:00:00', $dt->format(
'Y-m-d H:i:s'));
 
  215        $elem = $this->vcal->createProperty(
'DTSTART', 
'19850704');
 
  217        $tz = new \DateTimeZone(
'America/Toronto');
 
  218        $dt = $elem->getDateTime(
$tz);
 
  219        $dt = $dt->setTimeZone(
new \DateTimeZone(
'UTC'));
 
  221        $this->assertInstanceOf(
'DateTimeImmutable', $dt);
 
  222        $this->assertEquals(
'1985-07-04 04:00:00', $dt->format(
'Y-m-d H:i:s'));
 
  228        $elem = $this->vcal->createProperty(
'DTSTART', 
'19850704T013000');
 
  229        $dt = $elem->getDateTime();
 
  231        $this->assertInstanceOf(
'DateTimeImmutable', $dt);
 
  232        $this->assertEquals(
'1985-07-04 01:30:00', $dt->format(
'Y-m-d H:i:s'));
 
  238        $elem = $this->vcal->createProperty(
'DTSTART', 
'19850704T013000');
 
  240        $tz = new \DateTimeZone(
'America/Toronto');
 
  241        $dt = $elem->getDateTime(
$tz);
 
  242        $dt = $dt->setTimeZone(
new \DateTimeZone(
'UTC'));
 
  244        $this->assertInstanceOf(
'DateTimeInterface', $dt);
 
  245        $this->assertEquals(
'1985-07-04 05:30:00', $dt->format(
'Y-m-d H:i:s'));
 
  251        $elem = $this->vcal->createProperty(
'DTSTART', 
'19850704T013000Z');
 
  252        $dt = $elem->getDateTime();
 
  254        $this->assertInstanceOf(
'DateTimeImmutable', $dt);
 
  255        $this->assertEquals(
'1985-07-04 01:30:00', $dt->format(
'Y-m-d H:i:s'));
 
  256        $this->assertEquals(
'UTC', $dt->getTimeZone()->getName());
 
  262        $elem = $this->vcal->createProperty(
'DTSTART', 
'19850704T013000');
 
  263        $elem[
'TZID'] = 
'Europe/Amsterdam';
 
  265        $dt = $elem->getDateTime();
 
  267        $this->assertInstanceOf(
'DateTimeImmutable', $dt);
 
  268        $this->assertEquals(
'1985-07-04 01:30:00', $dt->format(
'Y-m-d H:i:s'));
 
  269        $this->assertEquals(
'Europe/Amsterdam', $dt->getTimeZone()->getName());
 
  278        $elem = $this->vcal->createProperty(
'DTSTART', 
'bla');
 
  279        $dt = $elem->getDateTime();
 
  285        $elem = $this->vcal->createProperty(
'DTSTART', 
'19850704T013000');
 
  286        $elem[
'TZID'] = 
'/freeassociation.sourceforge.net/Tzfile/Europe/Amsterdam';
 
  289        $event = $this->vcal->createComponent(
'VEVENT');
 
  292        $timezone = $this->vcal->createComponent(
'VTIMEZONE');
 
  293        $timezone->TZID = 
'/freeassociation.sourceforge.net/Tzfile/Europe/Amsterdam';
 
  294        $timezone->{
'X-LIC-LOCATION'} = 
'Europe/Amsterdam';
 
  296        $this->vcal->add($event);
 
  297        $this->vcal->add($timezone);
 
  299        $dt = $elem->getDateTime();
 
  301        $this->assertInstanceOf(
'DateTimeImmutable', $dt);
 
  302        $this->assertEquals(
'1985-07-04 01:30:00', $dt->format(
'Y-m-d H:i:s'));
 
  303        $this->assertEquals(
'Europe/Amsterdam', $dt->getTimeZone()->getName());
 
  309        $default = date_default_timezone_get();
 
  310        date_default_timezone_set(
'Canada/Eastern');
 
  312        $elem = $this->vcal->createProperty(
'DTSTART', 
'19850704T013000');
 
  313        $elem[
'TZID'] = 
'Moon';
 
  316        $event = $this->vcal->createComponent(
'VEVENT');
 
  319        $timezone = $this->vcal->createComponent(
'VTIMEZONE');
 
  320        $timezone->TZID = 
'Moon';
 
  321        $timezone->{
'X-LIC-LOCATION'} = 
'Moon';
 
  324        $this->vcal->add($event);
 
  325        $this->vcal->add($timezone);
 
  327        $dt = $elem->getDateTime();
 
  329        $this->assertInstanceOf(
'DateTimeImmutable', $dt);
 
  330        $this->assertEquals(
'1985-07-04 01:30:00', $dt->format(
'Y-m-d H:i:s'));
 
  331        $this->assertEquals(
'Canada/Eastern', $dt->getTimeZone()->getName());
 
  332        date_default_timezone_set(
$default);
 
  338        $dtStart = $this->vcal->createProperty(
'DTSTART', 
new \
DateTime(
'2013-06-07 15:05:00'));
 
  339        $dtStart[
'VALUE'] = 
'DATE';
 
  341        $this->assertEquals(
"DTSTART;VALUE=DATE:20130607\r\n", $dtStart->serialize());
 
  347        $exDate = $this->vcal->createProperty(
'EXDATE', 
'-00011130T143000Z');
 
  349        $this->assertEquals(1, count(
$messages));
 
  350        $this->assertEquals(3, 
$messages[0][
'level']);
 
  360        $vevent = 
$vcal->add(
'VEVENT');
 
  362        $dtstart = $vevent->add(
 
  368        $this->assertEquals(
"DTSTART;VALUE=DATE:20140307\r\n", $dtstart->serialize());
 
An exception for terminatinating execution or to throw for unit testing.
testGetDateTimeDateDATE()
testUpdateValueParameter()
testGetDateTimeDateDATEReferenceTimeZone()
testGetDateTimeDateFloating()
testGetDateTimeDateInvalid()
@expectedException \Sabre\VObject\InvalidDataException
testCreateDatePropertyThroughAdd()
This issue was discovered on the sabredav mailing list.
testGetDateTimeDateLOCALTZ()
testGetDateTimeDateNULL()
testGetDateTimeBadTimeZone()
testGetDateTimeDateFloatingReferenceTimeZone()
testSetDateTimeFromUnixTimestamp()