xref: /plugin/davcal/vendor/sabre/vobject/tests/VObject/Property/ICalendar/DateTimeTest.php (revision a1a3b6794e0e143a4a8b51d3185ce2d339be61ab)
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