1*a1a3b679SAndreas Boehler<?php 2*a1a3b679SAndreas Boehler 3*a1a3b679SAndreas Boehlernamespace Sabre\VObject\Property\ICalendar; 4*a1a3b679SAndreas Boehler 5*a1a3b679SAndreas Boehleruse Sabre\VObject\Component; 6*a1a3b679SAndreas Boehleruse Sabre\VObject\Component\VCalendar; 7*a1a3b679SAndreas Boehler 8*a1a3b679SAndreas Boehler 9*a1a3b679SAndreas Boehlerclass DateTimeTest extends \PHPUnit_Framework_TestCase { 10*a1a3b679SAndreas Boehler 11*a1a3b679SAndreas Boehler protected $vcal; 12*a1a3b679SAndreas Boehler 13*a1a3b679SAndreas Boehler function setUp() { 14*a1a3b679SAndreas Boehler 15*a1a3b679SAndreas Boehler $this->vcal = new VCalendar(); 16*a1a3b679SAndreas Boehler 17*a1a3b679SAndreas Boehler } 18*a1a3b679SAndreas Boehler 19*a1a3b679SAndreas Boehler function testSetDateTime() { 20*a1a3b679SAndreas Boehler 21*a1a3b679SAndreas Boehler $tz = new \DateTimeZone('Europe/Amsterdam'); 22*a1a3b679SAndreas Boehler $dt = new \DateTime('1985-07-04 01:30:00', $tz); 23*a1a3b679SAndreas Boehler $dt->setTimeZone($tz); 24*a1a3b679SAndreas Boehler 25*a1a3b679SAndreas Boehler $elem = $this->vcal->createProperty('DTSTART'); 26*a1a3b679SAndreas Boehler $elem->setDateTime($dt); 27*a1a3b679SAndreas Boehler 28*a1a3b679SAndreas Boehler $this->assertEquals('19850704T013000', (string)$elem); 29*a1a3b679SAndreas Boehler $this->assertEquals('Europe/Amsterdam', (string)$elem['TZID']); 30*a1a3b679SAndreas Boehler $this->assertNull($elem['VALUE']); 31*a1a3b679SAndreas Boehler 32*a1a3b679SAndreas Boehler $this->assertTrue($elem->hasTime()); 33*a1a3b679SAndreas Boehler 34*a1a3b679SAndreas Boehler } 35*a1a3b679SAndreas Boehler 36*a1a3b679SAndreas Boehler function testSetDateTimeLOCAL() { 37*a1a3b679SAndreas Boehler 38*a1a3b679SAndreas Boehler $tz = new \DateTimeZone('Europe/Amsterdam'); 39*a1a3b679SAndreas Boehler $dt = new \DateTime('1985-07-04 01:30:00', $tz); 40*a1a3b679SAndreas Boehler $dt->setTimeZone($tz); 41*a1a3b679SAndreas Boehler 42*a1a3b679SAndreas Boehler $elem = $this->vcal->createProperty('DTSTART'); 43*a1a3b679SAndreas Boehler $elem->setDateTime($dt, $isFloating = true); 44*a1a3b679SAndreas Boehler 45*a1a3b679SAndreas Boehler $this->assertEquals('19850704T013000', (string)$elem); 46*a1a3b679SAndreas Boehler $this->assertNull($elem['TZID']); 47*a1a3b679SAndreas Boehler 48*a1a3b679SAndreas Boehler $this->assertTrue($elem->hasTime()); 49*a1a3b679SAndreas Boehler } 50*a1a3b679SAndreas Boehler 51*a1a3b679SAndreas Boehler function testSetDateTimeUTC() { 52*a1a3b679SAndreas Boehler 53*a1a3b679SAndreas Boehler $tz = new \DateTimeZone('GMT'); 54*a1a3b679SAndreas Boehler $dt = new \DateTime('1985-07-04 01:30:00', $tz); 55*a1a3b679SAndreas Boehler $dt->setTimeZone($tz); 56*a1a3b679SAndreas Boehler 57*a1a3b679SAndreas Boehler $elem = $this->vcal->createProperty('DTSTART'); 58*a1a3b679SAndreas Boehler $elem->setDateTime($dt); 59*a1a3b679SAndreas Boehler 60*a1a3b679SAndreas Boehler $this->assertEquals('19850704T013000Z', (string)$elem); 61*a1a3b679SAndreas Boehler $this->assertNull($elem['TZID']); 62*a1a3b679SAndreas Boehler 63*a1a3b679SAndreas Boehler $this->assertTrue($elem->hasTime()); 64*a1a3b679SAndreas Boehler } 65*a1a3b679SAndreas Boehler 66*a1a3b679SAndreas Boehler function testSetDateTimeLOCALTZ() { 67*a1a3b679SAndreas Boehler 68*a1a3b679SAndreas Boehler $tz = new \DateTimeZone('Europe/Amsterdam'); 69*a1a3b679SAndreas Boehler $dt = new \DateTime('1985-07-04 01:30:00', $tz); 70*a1a3b679SAndreas Boehler $dt->setTimeZone($tz); 71*a1a3b679SAndreas Boehler 72*a1a3b679SAndreas Boehler $elem = $this->vcal->createProperty('DTSTART'); 73*a1a3b679SAndreas Boehler $elem->setDateTime($dt); 74*a1a3b679SAndreas Boehler 75*a1a3b679SAndreas Boehler $this->assertEquals('19850704T013000', (string)$elem); 76*a1a3b679SAndreas Boehler $this->assertEquals('Europe/Amsterdam', (string)$elem['TZID']); 77*a1a3b679SAndreas Boehler 78*a1a3b679SAndreas Boehler $this->assertTrue($elem->hasTime()); 79*a1a3b679SAndreas Boehler } 80*a1a3b679SAndreas Boehler 81*a1a3b679SAndreas Boehler function testSetDateTimeDATE() { 82*a1a3b679SAndreas Boehler 83*a1a3b679SAndreas Boehler $tz = new \DateTimeZone('Europe/Amsterdam'); 84*a1a3b679SAndreas Boehler $dt = new \DateTime('1985-07-04 01:30:00', $tz); 85*a1a3b679SAndreas Boehler $dt->setTimeZone($tz); 86*a1a3b679SAndreas Boehler 87*a1a3b679SAndreas Boehler $elem = $this->vcal->createProperty('DTSTART'); 88*a1a3b679SAndreas Boehler $elem['VALUE'] = 'DATE'; 89*a1a3b679SAndreas Boehler $elem->setDateTime($dt); 90*a1a3b679SAndreas Boehler 91*a1a3b679SAndreas Boehler $this->assertEquals('19850704', (string)$elem); 92*a1a3b679SAndreas Boehler $this->assertNull($elem['TZID']); 93*a1a3b679SAndreas Boehler $this->assertEquals('DATE', (string)$elem['VALUE']); 94*a1a3b679SAndreas Boehler 95*a1a3b679SAndreas Boehler $this->assertFalse($elem->hasTime()); 96*a1a3b679SAndreas Boehler } 97*a1a3b679SAndreas Boehler 98*a1a3b679SAndreas Boehler function testSetValue() { 99*a1a3b679SAndreas Boehler 100*a1a3b679SAndreas Boehler $tz = new \DateTimeZone('Europe/Amsterdam'); 101*a1a3b679SAndreas Boehler $dt = new \DateTime('1985-07-04 01:30:00', $tz); 102*a1a3b679SAndreas Boehler $dt->setTimeZone($tz); 103*a1a3b679SAndreas Boehler 104*a1a3b679SAndreas Boehler $elem = $this->vcal->createProperty('DTSTART'); 105*a1a3b679SAndreas Boehler $elem->setValue($dt); 106*a1a3b679SAndreas Boehler 107*a1a3b679SAndreas Boehler $this->assertEquals('19850704T013000', (string)$elem); 108*a1a3b679SAndreas Boehler $this->assertEquals('Europe/Amsterdam', (string)$elem['TZID']); 109*a1a3b679SAndreas Boehler $this->assertNull($elem['VALUE']); 110*a1a3b679SAndreas Boehler 111*a1a3b679SAndreas Boehler $this->assertTrue($elem->hasTime()); 112*a1a3b679SAndreas Boehler 113*a1a3b679SAndreas Boehler } 114*a1a3b679SAndreas Boehler 115*a1a3b679SAndreas Boehler function testSetValueArray() { 116*a1a3b679SAndreas Boehler 117*a1a3b679SAndreas Boehler $tz = new \DateTimeZone('Europe/Amsterdam'); 118*a1a3b679SAndreas Boehler $dt1 = new \DateTime('1985-07-04 01:30:00', $tz); 119*a1a3b679SAndreas Boehler $dt2 = new \DateTime('1985-07-04 02:30:00', $tz); 120*a1a3b679SAndreas Boehler $dt1->setTimeZone($tz); 121*a1a3b679SAndreas Boehler $dt2->setTimeZone($tz); 122*a1a3b679SAndreas Boehler 123*a1a3b679SAndreas Boehler $elem = $this->vcal->createProperty('DTSTART'); 124*a1a3b679SAndreas Boehler $elem->setValue(array($dt1, $dt2)); 125*a1a3b679SAndreas Boehler 126*a1a3b679SAndreas Boehler $this->assertEquals('19850704T013000,19850704T023000', (string)$elem); 127*a1a3b679SAndreas Boehler $this->assertEquals('Europe/Amsterdam', (string)$elem['TZID']); 128*a1a3b679SAndreas Boehler $this->assertNull($elem['VALUE']); 129*a1a3b679SAndreas Boehler 130*a1a3b679SAndreas Boehler $this->assertTrue($elem->hasTime()); 131*a1a3b679SAndreas Boehler 132*a1a3b679SAndreas Boehler } 133*a1a3b679SAndreas Boehler 134*a1a3b679SAndreas Boehler function testSetParts() { 135*a1a3b679SAndreas Boehler 136*a1a3b679SAndreas Boehler $tz = new \DateTimeZone('Europe/Amsterdam'); 137*a1a3b679SAndreas Boehler $dt1 = new \DateTime('1985-07-04 01:30:00', $tz); 138*a1a3b679SAndreas Boehler $dt2 = new \DateTime('1985-07-04 02:30:00', $tz); 139*a1a3b679SAndreas Boehler $dt1->setTimeZone($tz); 140*a1a3b679SAndreas Boehler $dt2->setTimeZone($tz); 141*a1a3b679SAndreas Boehler 142*a1a3b679SAndreas Boehler $elem = $this->vcal->createProperty('DTSTART'); 143*a1a3b679SAndreas Boehler $elem->setParts(array($dt1, $dt2)); 144*a1a3b679SAndreas Boehler 145*a1a3b679SAndreas Boehler $this->assertEquals('19850704T013000,19850704T023000', (string)$elem); 146*a1a3b679SAndreas Boehler $this->assertEquals('Europe/Amsterdam', (string)$elem['TZID']); 147*a1a3b679SAndreas Boehler $this->assertNull($elem['VALUE']); 148*a1a3b679SAndreas Boehler 149*a1a3b679SAndreas Boehler $this->assertTrue($elem->hasTime()); 150*a1a3b679SAndreas Boehler 151*a1a3b679SAndreas Boehler } 152*a1a3b679SAndreas Boehler function testSetPartsStrings() { 153*a1a3b679SAndreas Boehler 154*a1a3b679SAndreas Boehler $dt1 = '19850704T013000Z'; 155*a1a3b679SAndreas Boehler $dt2 = '19850704T023000Z'; 156*a1a3b679SAndreas Boehler 157*a1a3b679SAndreas Boehler $elem = $this->vcal->createProperty('DTSTART'); 158*a1a3b679SAndreas Boehler $elem->setParts(array($dt1, $dt2)); 159*a1a3b679SAndreas Boehler 160*a1a3b679SAndreas Boehler $this->assertEquals('19850704T013000Z,19850704T023000Z', (string)$elem); 161*a1a3b679SAndreas Boehler $this->assertNull($elem['VALUE']); 162*a1a3b679SAndreas Boehler 163*a1a3b679SAndreas Boehler $this->assertTrue($elem->hasTime()); 164*a1a3b679SAndreas Boehler 165*a1a3b679SAndreas Boehler } 166*a1a3b679SAndreas Boehler 167*a1a3b679SAndreas Boehler 168*a1a3b679SAndreas Boehler function testGetDateTimeCached() { 169*a1a3b679SAndreas Boehler 170*a1a3b679SAndreas Boehler $tz = new \DateTimeZone('Europe/Amsterdam'); 171*a1a3b679SAndreas Boehler $dt = new \DateTime('1985-07-04 01:30:00', $tz); 172*a1a3b679SAndreas Boehler $dt->setTimeZone($tz); 173*a1a3b679SAndreas Boehler 174*a1a3b679SAndreas Boehler $elem = $this->vcal->createProperty('DTSTART'); 175*a1a3b679SAndreas Boehler $elem->setDateTime($dt); 176*a1a3b679SAndreas Boehler 177*a1a3b679SAndreas Boehler $this->assertEquals($elem->getDateTime(), $dt); 178*a1a3b679SAndreas Boehler 179*a1a3b679SAndreas Boehler } 180*a1a3b679SAndreas Boehler 181*a1a3b679SAndreas Boehler function testGetDateTimeDateNULL() { 182*a1a3b679SAndreas Boehler 183*a1a3b679SAndreas Boehler $elem = $this->vcal->createProperty('DTSTART'); 184*a1a3b679SAndreas Boehler $dt = $elem->getDateTime(); 185*a1a3b679SAndreas Boehler 186*a1a3b679SAndreas Boehler $this->assertNull($dt); 187*a1a3b679SAndreas Boehler 188*a1a3b679SAndreas Boehler } 189*a1a3b679SAndreas Boehler 190*a1a3b679SAndreas Boehler function testGetDateTimeDateDATE() { 191*a1a3b679SAndreas Boehler 192*a1a3b679SAndreas Boehler $elem = $this->vcal->createProperty('DTSTART','19850704'); 193*a1a3b679SAndreas Boehler $dt = $elem->getDateTime(); 194*a1a3b679SAndreas Boehler 195*a1a3b679SAndreas Boehler $this->assertInstanceOf('DateTime', $dt); 196*a1a3b679SAndreas Boehler $this->assertEquals('1985-07-04 00:00:00', $dt->format('Y-m-d H:i:s')); 197*a1a3b679SAndreas Boehler 198*a1a3b679SAndreas Boehler } 199*a1a3b679SAndreas Boehler 200*a1a3b679SAndreas Boehler function testGetDateTimeDateDATEReferenceTimeZone() { 201*a1a3b679SAndreas Boehler 202*a1a3b679SAndreas Boehler $elem = $this->vcal->createProperty('DTSTART','19850704'); 203*a1a3b679SAndreas Boehler 204*a1a3b679SAndreas Boehler $tz = new \DateTimeZone('America/Toronto'); 205*a1a3b679SAndreas Boehler $dt = $elem->getDateTime($tz); 206*a1a3b679SAndreas Boehler $dt->setTimeZone(new \DateTimeZone('UTC')); 207*a1a3b679SAndreas Boehler 208*a1a3b679SAndreas Boehler $this->assertInstanceOf('DateTime', $dt); 209*a1a3b679SAndreas Boehler $this->assertEquals('1985-07-04 04:00:00', $dt->format('Y-m-d H:i:s')); 210*a1a3b679SAndreas Boehler 211*a1a3b679SAndreas Boehler } 212*a1a3b679SAndreas Boehler 213*a1a3b679SAndreas Boehler function testGetDateTimeDateFloating() { 214*a1a3b679SAndreas Boehler 215*a1a3b679SAndreas Boehler $elem = $this->vcal->createProperty('DTSTART','19850704T013000'); 216*a1a3b679SAndreas Boehler $dt = $elem->getDateTime(); 217*a1a3b679SAndreas Boehler 218*a1a3b679SAndreas Boehler $this->assertInstanceOf('DateTime', $dt); 219*a1a3b679SAndreas Boehler $this->assertEquals('1985-07-04 01:30:00', $dt->format('Y-m-d H:i:s')); 220*a1a3b679SAndreas Boehler 221*a1a3b679SAndreas Boehler } 222*a1a3b679SAndreas Boehler 223*a1a3b679SAndreas Boehler function testGetDateTimeDateFloatingReferenceTimeZone() { 224*a1a3b679SAndreas Boehler 225*a1a3b679SAndreas Boehler $elem = $this->vcal->createProperty('DTSTART','19850704T013000'); 226*a1a3b679SAndreas Boehler 227*a1a3b679SAndreas Boehler $tz = new \DateTimeZone('America/Toronto'); 228*a1a3b679SAndreas Boehler $dt = $elem->getDateTime($tz); 229*a1a3b679SAndreas Boehler $dt->setTimeZone(new \DateTimeZone('UTC')); 230*a1a3b679SAndreas Boehler 231*a1a3b679SAndreas Boehler $this->assertInstanceOf('DateTime', $dt); 232*a1a3b679SAndreas Boehler $this->assertEquals('1985-07-04 05:30:00', $dt->format('Y-m-d H:i:s')); 233*a1a3b679SAndreas Boehler 234*a1a3b679SAndreas Boehler } 235*a1a3b679SAndreas Boehler 236*a1a3b679SAndreas Boehler function testGetDateTimeDateUTC() { 237*a1a3b679SAndreas Boehler 238*a1a3b679SAndreas Boehler $elem = $this->vcal->createProperty('DTSTART','19850704T013000Z'); 239*a1a3b679SAndreas Boehler $dt = $elem->getDateTime(); 240*a1a3b679SAndreas Boehler 241*a1a3b679SAndreas Boehler $this->assertInstanceOf('DateTime', $dt); 242*a1a3b679SAndreas Boehler $this->assertEquals('1985-07-04 01:30:00', $dt->format('Y-m-d H:i:s')); 243*a1a3b679SAndreas Boehler $this->assertEquals('UTC', $dt->getTimeZone()->getName()); 244*a1a3b679SAndreas Boehler 245*a1a3b679SAndreas Boehler } 246*a1a3b679SAndreas Boehler 247*a1a3b679SAndreas Boehler function testGetDateTimeDateLOCALTZ() { 248*a1a3b679SAndreas Boehler 249*a1a3b679SAndreas Boehler $elem = $this->vcal->createProperty('DTSTART','19850704T013000'); 250*a1a3b679SAndreas Boehler $elem['TZID'] = 'Europe/Amsterdam'; 251*a1a3b679SAndreas Boehler 252*a1a3b679SAndreas Boehler $dt = $elem->getDateTime(); 253*a1a3b679SAndreas Boehler 254*a1a3b679SAndreas Boehler $this->assertInstanceOf('DateTime', $dt); 255*a1a3b679SAndreas Boehler $this->assertEquals('1985-07-04 01:30:00', $dt->format('Y-m-d H:i:s')); 256*a1a3b679SAndreas Boehler $this->assertEquals('Europe/Amsterdam', $dt->getTimeZone()->getName()); 257*a1a3b679SAndreas Boehler 258*a1a3b679SAndreas Boehler } 259*a1a3b679SAndreas Boehler 260*a1a3b679SAndreas Boehler /** 261*a1a3b679SAndreas Boehler * @expectedException LogicException 262*a1a3b679SAndreas Boehler */ 263*a1a3b679SAndreas Boehler function testGetDateTimeDateInvalid() { 264*a1a3b679SAndreas Boehler 265*a1a3b679SAndreas Boehler $elem = $this->vcal->createProperty('DTSTART','bla'); 266*a1a3b679SAndreas Boehler $dt = $elem->getDateTime(); 267*a1a3b679SAndreas Boehler 268*a1a3b679SAndreas Boehler } 269*a1a3b679SAndreas Boehler 270*a1a3b679SAndreas Boehler function testGetDateTimeWeirdTZ() { 271*a1a3b679SAndreas Boehler 272*a1a3b679SAndreas Boehler $elem = $this->vcal->createProperty('DTSTART','19850704T013000'); 273*a1a3b679SAndreas Boehler $elem['TZID'] = '/freeassociation.sourceforge.net/Tzfile/Europe/Amsterdam'; 274*a1a3b679SAndreas Boehler 275*a1a3b679SAndreas Boehler 276*a1a3b679SAndreas Boehler $event = $this->vcal->createComponent('VEVENT'); 277*a1a3b679SAndreas Boehler $event->add($elem); 278*a1a3b679SAndreas Boehler 279*a1a3b679SAndreas Boehler $timezone = $this->vcal->createComponent('VTIMEZONE'); 280*a1a3b679SAndreas Boehler $timezone->TZID = '/freeassociation.sourceforge.net/Tzfile/Europe/Amsterdam'; 281*a1a3b679SAndreas Boehler $timezone->{'X-LIC-LOCATION'} = 'Europe/Amsterdam'; 282*a1a3b679SAndreas Boehler 283*a1a3b679SAndreas Boehler $this->vcal->add($event); 284*a1a3b679SAndreas Boehler $this->vcal->add($timezone); 285*a1a3b679SAndreas Boehler 286*a1a3b679SAndreas Boehler $dt = $elem->getDateTime(); 287*a1a3b679SAndreas Boehler 288*a1a3b679SAndreas Boehler $this->assertInstanceOf('DateTime', $dt); 289*a1a3b679SAndreas Boehler $this->assertEquals('1985-07-04 01:30:00', $dt->format('Y-m-d H:i:s')); 290*a1a3b679SAndreas Boehler $this->assertEquals('Europe/Amsterdam', $dt->getTimeZone()->getName()); 291*a1a3b679SAndreas Boehler 292*a1a3b679SAndreas Boehler } 293*a1a3b679SAndreas Boehler 294*a1a3b679SAndreas Boehler function testGetDateTimeBadTimeZone() { 295*a1a3b679SAndreas Boehler 296*a1a3b679SAndreas Boehler $default = date_default_timezone_get(); 297*a1a3b679SAndreas Boehler date_default_timezone_set('Canada/Eastern'); 298*a1a3b679SAndreas Boehler 299*a1a3b679SAndreas Boehler $elem = $this->vcal->createProperty('DTSTART','19850704T013000'); 300*a1a3b679SAndreas Boehler $elem['TZID'] = 'Moon'; 301*a1a3b679SAndreas Boehler 302*a1a3b679SAndreas Boehler 303*a1a3b679SAndreas Boehler $event = $this->vcal->createComponent('VEVENT'); 304*a1a3b679SAndreas Boehler $event->add($elem); 305*a1a3b679SAndreas Boehler 306*a1a3b679SAndreas Boehler $timezone = $this->vcal->createComponent('VTIMEZONE'); 307*a1a3b679SAndreas Boehler $timezone->TZID = 'Moon'; 308*a1a3b679SAndreas Boehler $timezone->{'X-LIC-LOCATION'} = 'Moon'; 309*a1a3b679SAndreas Boehler 310*a1a3b679SAndreas Boehler 311*a1a3b679SAndreas Boehler $this->vcal->add($event); 312*a1a3b679SAndreas Boehler $this->vcal->add($timezone); 313*a1a3b679SAndreas Boehler 314*a1a3b679SAndreas Boehler $dt = $elem->getDateTime(); 315*a1a3b679SAndreas Boehler 316*a1a3b679SAndreas Boehler $this->assertInstanceOf('DateTime', $dt); 317*a1a3b679SAndreas Boehler $this->assertEquals('1985-07-04 01:30:00', $dt->format('Y-m-d H:i:s')); 318*a1a3b679SAndreas Boehler $this->assertEquals('Canada/Eastern', $dt->getTimeZone()->getName()); 319*a1a3b679SAndreas Boehler date_default_timezone_set($default); 320*a1a3b679SAndreas Boehler 321*a1a3b679SAndreas Boehler } 322*a1a3b679SAndreas Boehler 323*a1a3b679SAndreas Boehler function testUpdateValueParameter() { 324*a1a3b679SAndreas Boehler 325*a1a3b679SAndreas Boehler $dtStart = $this->vcal->createProperty('DTSTART', new \DateTime('2013-06-07 15:05:00')); 326*a1a3b679SAndreas Boehler $dtStart['VALUE'] = 'DATE'; 327*a1a3b679SAndreas Boehler 328*a1a3b679SAndreas Boehler $this->assertEquals("DTSTART;VALUE=DATE:20130607\r\n", $dtStart->serialize()); 329*a1a3b679SAndreas Boehler 330*a1a3b679SAndreas Boehler } 331*a1a3b679SAndreas Boehler 332*a1a3b679SAndreas Boehler function testValidate() { 333*a1a3b679SAndreas Boehler 334*a1a3b679SAndreas Boehler $exDate = $this->vcal->createProperty('EXDATE', '-00011130T143000Z'); 335*a1a3b679SAndreas Boehler $messages = $exDate->validate(); 336*a1a3b679SAndreas Boehler $this->assertEquals(1, count($messages)); 337*a1a3b679SAndreas Boehler $this->assertEquals(3, $messages[0]['level']); 338*a1a3b679SAndreas Boehler 339*a1a3b679SAndreas Boehler } 340*a1a3b679SAndreas Boehler 341*a1a3b679SAndreas Boehler /** 342*a1a3b679SAndreas Boehler * This issue was discovered on the sabredav mailing list. 343*a1a3b679SAndreas Boehler */ 344*a1a3b679SAndreas Boehler function testCreateDatePropertyThroughAdd() { 345*a1a3b679SAndreas Boehler 346*a1a3b679SAndreas Boehler $vcal = new VCalendar(); 347*a1a3b679SAndreas Boehler $vevent = $vcal->add('VEVENT'); 348*a1a3b679SAndreas Boehler 349*a1a3b679SAndreas Boehler $dtstart = $vevent->add( 350*a1a3b679SAndreas Boehler 'DTSTART', 351*a1a3b679SAndreas Boehler new \DateTime('2014-03-07'), 352*a1a3b679SAndreas Boehler array('VALUE' => 'DATE') 353*a1a3b679SAndreas Boehler ); 354*a1a3b679SAndreas Boehler 355*a1a3b679SAndreas Boehler $this->assertEquals("DTSTART;VALUE=DATE:20140307\r\n", $dtstart->serialize()); 356*a1a3b679SAndreas Boehler 357*a1a3b679SAndreas Boehler } 358*a1a3b679SAndreas Boehler 359*a1a3b679SAndreas Boehler} 360