3 namespace Sabre\VObject\Property;
5 class MultiDateTimeTest extends \PHPUnit_Framework_TestCase {
7 function testSetDateTime() {
9 $tz = new \DateTimeZone('Europe/Amsterdam');
10 $dt1 = new \DateTime('1985-07-04 01:30:00', $tz);
11 $dt2 = new \DateTime('1986-07-04 01:30:00', $tz);
12 $dt1->setTimeZone($tz);
13 $dt2->setTimeZone($tz);
15 $elem = new MultiDateTime('DTSTART');
16 $elem->setDateTimes(array($dt1,$dt2));
18 $this->assertEquals('19850704T013000,19860704T013000', $elem->value);
19 $this->assertEquals('Europe/Amsterdam', (string)$elem['TZID']);
20 $this->assertEquals('DATE-TIME', (string)$elem['VALUE']);
24 function testSetDateTimeLOCAL() {
26 $tz = new \DateTimeZone('Europe/Amsterdam');
27 $dt1 = new \DateTime('1985-07-04 01:30:00', $tz);
28 $dt2 = new \DateTime('1986-07-04 01:30:00', $tz);
29 $dt1->setTimeZone($tz);
30 $dt2->setTimeZone($tz);
32 $elem = new MultiDateTime('DTSTART');
33 $elem->setDateTimes(array($dt1,$dt2), DateTime::LOCAL);
35 $this->assertEquals('19850704T013000,19860704T013000', $elem->value);
36 $this->assertNull($elem['TZID']);
37 $this->assertEquals('DATE-TIME', (string)$elem['VALUE']);
41 function testSetDateTimeUTC() {
43 $tz = new \DateTimeZone('GMT');
44 $dt1 = new \DateTime('1985-07-04 01:30:00', $tz);
45 $dt2 = new \DateTime('1986-07-04 01:30:00', $tz);
46 $dt1->setTimeZone($tz);
47 $dt2->setTimeZone($tz);
49 $elem = new MultiDateTime('DTSTART');
50 $elem->setDateTimes(array($dt1,$dt2), DateTime::UTC);
52 $this->assertEquals('19850704T013000Z,19860704T013000Z', $elem->value);
53 $this->assertNull($elem['TZID']);
54 $this->assertEquals('DATE-TIME', (string)$elem['VALUE']);
58 function testSetDateTimeLOCALTZ() {
60 $tz = new \DateTimeZone('Europe/Amsterdam');
61 $dt1 = new \DateTime('1985-07-04 01:30:00', $tz);
62 $dt2 = new \DateTime('1986-07-04 01:30:00', $tz);
63 $dt1->setTimeZone($tz);
64 $dt2->setTimeZone($tz);
66 $elem = new MultiDateTime('DTSTART');
67 $elem->setDateTimes(array($dt1,$dt2), DateTime::LOCALTZ);
69 $this->assertEquals('19850704T013000,19860704T013000', $elem->value);
70 $this->assertEquals('Europe/Amsterdam', (string)$elem['TZID']);
71 $this->assertEquals('DATE-TIME', (string)$elem['VALUE']);
75 function testSetDateTimeDATE() {
77 $tz = new \DateTimeZone('Europe/Amsterdam');
78 $dt1 = new \DateTime('1985-07-04 01:30:00', $tz);
79 $dt2 = new \DateTime('1986-07-04 01:30:00', $tz);
80 $dt1->settimezone($tz);
81 $dt2->settimezone($tz);
83 $elem = new MultiDateTime('DTSTART');
84 $elem->setDateTimes(array($dt1,$dt2), DateTime::DATE);
86 $this->assertEquals('19850704,19860704', $elem->value);
87 $this->assertNull($elem['TZID']);
88 $this->assertEquals('DATE', (string)$elem['VALUE']);
93 * @expectedException InvalidArgumentException
95 function testSetDateTimeInvalid() {
97 $tz = new \DateTimeZone('Europe/Amsterdam');
98 $dt = new \DateTime('1985-07-04 01:30:00', $tz);
99 $dt->setTimeZone($tz);
101 $elem = new MultiDateTime('DTSTART');
102 $elem->setDateTimes(array($dt), 7);
106 function testGetDateTimeCached() {
108 $tz = new \DateTimeZone('Europe/Amsterdam');
109 $dt1 = new \DateTime('1985-07-04 01:30:00', $tz);
110 $dt2 = new \DateTime('1986-07-04 01:30:00', $tz);
111 $dt1->settimezone($tz);
112 $dt2->settimezone($tz);
114 $elem = new MultiDateTime('DTSTART');
115 $elem->setDateTimes(array($dt1,$dt2));
117 $this->assertEquals($elem->getDateTimes(), array($dt1,$dt2));
121 function testGetDateTimeDateNULL() {
123 $elem = new MultiDateTime('DTSTART');
124 $dt = $elem->getDateTimes();
126 $this->assertNull($dt);
127 $this->assertNull($elem->getDateType());
131 function testGetDateTimeDateDATE() {
133 $elem = new MultiDateTime('DTSTART','19850704,19860704');
134 $dt = $elem->getDateTimes();
136 $this->assertEquals('1985-07-04 00:00:00', $dt[0]->format('Y-m-d H:i:s'));
137 $this->assertEquals('1986-07-04 00:00:00', $dt[1]->format('Y-m-d H:i:s'));
138 $this->assertEquals(DateTime::DATE, $elem->getDateType());
142 function testGetDateTimeDateDATEReverse() {
144 $elem = new MultiDateTime('DTSTART','19850704,19860704');
146 $this->assertEquals(DateTime::DATE, $elem->getDateType());
148 $dt = $elem->getDateTimes();
149 $this->assertEquals('1985-07-04 00:00:00', $dt[0]->format('Y-m-d H:i:s'));
150 $this->assertEquals('1986-07-04 00:00:00', $dt[1]->format('Y-m-d H:i:s'));
155 function testGetDateTimeDateLOCAL() {
157 $elem = new DateTime('DTSTART','19850704T013000');
158 $dt = $elem->getDateTime();
160 $this->assertInstanceOf('DateTime', $dt);
161 $this->assertEquals('1985-07-04 01:30:00', $dt->format('Y-m-d H:i:s'));
162 $this->assertEquals(DateTime::LOCAL, $elem->getDateType());
166 function testGetDateTimeDateUTC() {
168 $elem = new DateTime('DTSTART','19850704T013000Z');
169 $dt = $elem->getDateTime();
171 $this->assertInstanceOf('DateTime', $dt);
172 $this->assertEquals('1985-07-04 01:30:00', $dt->format('Y-m-d H:i:s'));
173 $this->assertEquals('UTC', $dt->getTimeZone()->getName());
174 $this->assertEquals(DateTime::UTC, $elem->getDateType());
178 function testGetDateTimeDateLOCALTZ() {
180 $elem = new DateTime('DTSTART','19850704T013000');
181 $elem['TZID'] = 'Europe/Amsterdam';
183 $dt = $elem->getDateTime();
185 $this->assertInstanceOf('DateTime', $dt);
186 $this->assertEquals('1985-07-04 01:30:00', $dt->format('Y-m-d H:i:s'));
187 $this->assertEquals('Europe/Amsterdam', $dt->getTimeZone()->getName());
188 $this->assertEquals(DateTime::LOCALTZ, $elem->getDateType());
193 * @expectedException InvalidArgumentException
195 function testGetDateTimeDateInvalid() {
197 $elem = new DateTime('DTSTART','bla');
198 $dt = $elem->getDateTime();