3 class Sabre_VObject_Property_MultiDateTimeTest extends PHPUnit_Framework_TestCase {
5 function testSetDateTime() {
7 $tz = new DateTimeZone('Europe/Amsterdam');
8 $dt1 = new DateTime('1985-07-04 01:30:00', $tz);
9 $dt2 = new DateTime('1986-07-04 01:30:00', $tz);
10 $dt1->setTimeZone($tz);
11 $dt2->setTimeZone($tz);
13 $elem = new Sabre_VObject_Property_MultiDateTime('DTSTART');
14 $elem->setDateTimes(array($dt1,$dt2));
16 $this->assertEquals('19850704T013000,19860704T013000', $elem->value);
17 $this->assertEquals('Europe/Amsterdam', (string)$elem['TZID']);
18 $this->assertEquals('DATE-TIME', (string)$elem['VALUE']);
22 function testSetDateTimeLOCAL() {
24 $tz = new DateTimeZone('Europe/Amsterdam');
25 $dt1 = new DateTime('1985-07-04 01:30:00', $tz);
26 $dt2 = new DateTime('1986-07-04 01:30:00', $tz);
27 $dt1->setTimeZone($tz);
28 $dt2->setTimeZone($tz);
30 $elem = new Sabre_VObject_Property_MultiDateTime('DTSTART');
31 $elem->setDateTimes(array($dt1,$dt2), Sabre_VObject_Property_DateTime::LOCAL);
33 $this->assertEquals('19850704T013000,19860704T013000', $elem->value);
34 $this->assertNull($elem['TZID']);
35 $this->assertEquals('DATE-TIME', (string)$elem['VALUE']);
39 function testSetDateTimeUTC() {
41 $tz = new DateTimeZone('GMT');
42 $dt1 = new DateTime('1985-07-04 01:30:00', $tz);
43 $dt2 = new DateTime('1986-07-04 01:30:00', $tz);
44 $dt1->setTimeZone($tz);
45 $dt2->setTimeZone($tz);
47 $elem = new Sabre_VObject_Property_MultiDateTime('DTSTART');
48 $elem->setDateTimes(array($dt1,$dt2), Sabre_VObject_Property_DateTime::UTC);
50 $this->assertEquals('19850704T013000Z,19860704T013000Z', $elem->value);
51 $this->assertNull($elem['TZID']);
52 $this->assertEquals('DATE-TIME', (string)$elem['VALUE']);
56 function testSetDateTimeLOCALTZ() {
58 $tz = new DateTimeZone('Europe/Amsterdam');
59 $dt1 = new DateTime('1985-07-04 01:30:00', $tz);
60 $dt2 = new DateTime('1986-07-04 01:30:00', $tz);
61 $dt1->setTimeZone($tz);
62 $dt2->setTimeZone($tz);
64 $elem = new Sabre_VObject_Property_MultiDateTime('DTSTART');
65 $elem->setDateTimes(array($dt1,$dt2), Sabre_VObject_Property_DateTime::LOCALTZ);
67 $this->assertEquals('19850704T013000,19860704T013000', $elem->value);
68 $this->assertEquals('Europe/Amsterdam', (string)$elem['TZID']);
69 $this->assertEquals('DATE-TIME', (string)$elem['VALUE']);
73 function testSetDateTimeDATE() {
75 $tz = new DateTimeZone('Europe/Amsterdam');
76 $dt1 = new datetime('1985-07-04 01:30:00', $tz);
77 $dt2 = new datetime('1986-07-04 01:30:00', $tz);
78 $dt1->settimezone($tz);
79 $dt2->settimezone($tz);
81 $elem = new Sabre_VObject_Property_MultiDateTime('DTSTART');
82 $elem->setDateTimes(array($dt1,$dt2), Sabre_VObject_Property_DateTime::DATE);
84 $this->assertEquals('19850704,19860704', $elem->value);
85 $this->assertNull($elem['TZID']);
86 $this->assertEquals('DATE', (string)$elem['VALUE']);
91 * @expectedException InvalidArgumentException
93 function testSetDateTimeInvalid() {
95 $tz = new DateTimeZone('Europe/Amsterdam');
96 $dt = new DateTime('1985-07-04 01:30:00', $tz);
97 $dt->setTimeZone($tz);
99 $elem = new Sabre_VObject_Property_MultiDateTime('DTSTART');
100 $elem->setDateTimes(array($dt), 7);
104 function testGetDateTimeCached() {
106 $tz = new DateTimeZone('Europe/Amsterdam');
107 $dt1 = new datetime('1985-07-04 01:30:00', $tz);
108 $dt2 = new datetime('1986-07-04 01:30:00', $tz);
109 $dt1->settimezone($tz);
110 $dt2->settimezone($tz);
112 $elem = new Sabre_VObject_Property_MultiDateTime('DTSTART');
113 $elem->setDateTimes(array($dt1,$dt2));
115 $this->assertEquals($elem->getDateTimes(), array($dt1,$dt2));
119 function testGetDateTimeDateNULL() {
121 $elem = new Sabre_VObject_Property_MultiDateTime('DTSTART');
122 $dt = $elem->getDateTimes();
124 $this->assertNull($dt);
125 $this->assertNull($elem->getDateType());
129 function testGetDateTimeDateDATE() {
131 $elem = new Sabre_VObject_Property_MultiDateTime('DTSTART','19850704,19860704');
132 $dt = $elem->getDateTimes();
134 $this->assertEquals('1985-07-04 00:00:00', $dt[0]->format('Y-m-d H:i:s'));
135 $this->assertEquals('1986-07-04 00:00:00', $dt[1]->format('Y-m-d H:i:s'));
136 $this->assertEquals(Sabre_VObject_Property_DateTime::DATE, $elem->getDateType());
140 function testGetDateTimeDateDATEReverse() {
142 $elem = new Sabre_VObject_Property_MultiDateTime('DTSTART','19850704,19860704');
144 $this->assertEquals(Sabre_VObject_Property_DateTime::DATE, $elem->getDateType());
146 $dt = $elem->getDateTimes();
147 $this->assertEquals('1985-07-04 00:00:00', $dt[0]->format('Y-m-d H:i:s'));
148 $this->assertEquals('1986-07-04 00:00:00', $dt[1]->format('Y-m-d H:i:s'));
153 function testGetDateTimeDateLOCAL() {
155 $elem = new Sabre_VObject_Property_DateTime('DTSTART','19850704T013000');
156 $dt = $elem->getDateTime();
158 $this->assertInstanceOf('DateTime', $dt);
159 $this->assertEquals('1985-07-04 01:30:00', $dt->format('Y-m-d H:i:s'));
160 $this->assertEquals(Sabre_VObject_Property_DateTime::LOCAL, $elem->getDateType());
164 function testGetDateTimeDateUTC() {
166 $elem = new Sabre_VObject_Property_DateTime('DTSTART','19850704T013000Z');
167 $dt = $elem->getDateTime();
169 $this->assertInstanceOf('DateTime', $dt);
170 $this->assertEquals('1985-07-04 01:30:00', $dt->format('Y-m-d H:i:s'));
171 $this->assertEquals('UTC', $dt->getTimeZone()->getName());
172 $this->assertEquals(Sabre_VObject_Property_DateTime::UTC, $elem->getDateType());
176 function testGetDateTimeDateLOCALTZ() {
178 $elem = new Sabre_VObject_Property_DateTime('DTSTART','19850704T013000');
179 $elem['TZID'] = 'Europe/Amsterdam';
181 $dt = $elem->getDateTime();
183 $this->assertInstanceOf('DateTime', $dt);
184 $this->assertEquals('1985-07-04 01:30:00', $dt->format('Y-m-d H:i:s'));
185 $this->assertEquals('Europe/Amsterdam', $dt->getTimeZone()->getName());
186 $this->assertEquals(Sabre_VObject_Property_DateTime::LOCALTZ, $elem->getDateType());
191 * @expectedException InvalidArgumentException
193 function testGetDateTimeDateInvalid() {
195 $elem = new Sabre_VObject_Property_DateTime('DTSTART','bla');
196 $dt = $elem->getDateTime();