]> git.mxchange.org Git - friendica-addons.git/blob - dav/SabreDAV/tests/Sabre/VObject/Property/DateTimeTest.php
Move friendica-specific parts into an own subdirectory
[friendica-addons.git] / dav / SabreDAV / tests / Sabre / VObject / Property / DateTimeTest.php
1 <?php
2
3 class Sabre_VObject_Property_DateTimeTest extends PHPUnit_Framework_TestCase {
4
5     function testSetDateTime() {
6
7         $tz = new DateTimeZone('Europe/Amsterdam');
8         $dt = new DateTime('1985-07-04 01:30:00', $tz);
9         $dt->setTimeZone($tz);
10
11         $elem = new Sabre_VObject_Property_DateTime('DTSTART');
12         $elem->setDateTime($dt);
13
14         $this->assertEquals('19850704T013000', $elem->value);
15         $this->assertEquals('Europe/Amsterdam', (string)$elem['TZID']);
16         $this->assertEquals('DATE-TIME', (string)$elem['VALUE']);
17
18     }
19
20     function testSetDateTimeLOCAL() {
21
22         $tz = new DateTimeZone('Europe/Amsterdam');
23         $dt = new DateTime('1985-07-04 01:30:00', $tz);
24         $dt->setTimeZone($tz);
25
26         $elem = new Sabre_VObject_Property_DateTime('DTSTART');
27         $elem->setDateTime($dt, Sabre_VObject_Property_DateTime::LOCAL);
28
29         $this->assertEquals('19850704T013000', $elem->value);
30         $this->assertNull($elem['TZID']);
31         $this->assertEquals('DATE-TIME', (string)$elem['VALUE']);
32
33     }
34
35     function testSetDateTimeUTC() {
36
37         $tz = new DateTimeZone('GMT');
38         $dt = new DateTime('1985-07-04 01:30:00', $tz);
39         $dt->setTimeZone($tz);
40
41         $elem = new Sabre_VObject_Property_DateTime('DTSTART');
42         $elem->setDateTime($dt, Sabre_VObject_Property_DateTime::UTC);
43
44         $this->assertEquals('19850704T013000Z', $elem->value);
45         $this->assertNull($elem['TZID']);
46         $this->assertEquals('DATE-TIME', (string)$elem['VALUE']);
47
48     }
49
50     function testSetDateTimeLOCALTZ() {
51
52         $tz = new DateTimeZone('Europe/Amsterdam');
53         $dt = new DateTime('1985-07-04 01:30:00', $tz);
54         $dt->setTimeZone($tz);
55
56         $elem = new Sabre_VObject_Property_DateTime('DTSTART');
57         $elem->setDateTime($dt, Sabre_VObject_Property_DateTime::LOCALTZ);
58
59         $this->assertEquals('19850704T013000', $elem->value);
60         $this->assertEquals('Europe/Amsterdam', (string)$elem['TZID']);
61         $this->assertEquals('DATE-TIME', (string)$elem['VALUE']);
62
63     }
64
65     function testSetDateTimeDATE() {
66
67         $tz = new DateTimeZone('Europe/Amsterdam');
68         $dt = new DateTime('1985-07-04 01:30:00', $tz);
69         $dt->setTimeZone($tz);
70
71         $elem = new Sabre_VObject_Property_DateTime('DTSTART');
72         $elem->setDateTime($dt, Sabre_VObject_Property_DateTime::DATE);
73
74         $this->assertEquals('19850704', $elem->value);
75         $this->assertNull($elem['TZID']);
76         $this->assertEquals('DATE', (string)$elem['VALUE']);
77
78     }
79
80     /**
81      * @expectedException InvalidArgumentException
82      */
83     function testSetDateTimeInvalid() {
84
85         $tz = new DateTimeZone('Europe/Amsterdam');
86         $dt = new DateTime('1985-07-04 01:30:00', $tz);
87         $dt->setTimeZone($tz);
88
89         $elem = new Sabre_VObject_Property_DateTime('DTSTART');
90         $elem->setDateTime($dt, 7);
91
92     }
93
94     function testGetDateTimeCached() {
95
96         $tz = new DateTimeZone('Europe/Amsterdam');
97         $dt = new DateTime('1985-07-04 01:30:00', $tz);
98         $dt->setTimeZone($tz);
99
100         $elem = new Sabre_VObject_Property_DateTime('DTSTART');
101         $elem->setDateTime($dt);
102
103         $this->assertEquals($elem->getDateTime(), $dt);
104
105     }
106
107     function testGetDateTimeDateNULL() {
108
109         $elem = new Sabre_VObject_Property_DateTime('DTSTART');
110         $dt = $elem->getDateTime();
111
112         $this->assertNull($dt);
113         $this->assertNull($elem->getDateType());
114
115     }
116
117     function testGetDateTimeDateDATE() {
118
119         $elem = new Sabre_VObject_Property_DateTime('DTSTART','19850704');
120         $dt = $elem->getDateTime();
121
122         $this->assertInstanceOf('DateTime', $dt);
123         $this->assertEquals('1985-07-04 00:00:00', $dt->format('Y-m-d H:i:s'));
124         $this->assertEquals(Sabre_VObject_Property_DateTime::DATE, $elem->getDateType());
125
126     }
127
128
129     function testGetDateTimeDateLOCAL() {
130
131         $elem = new Sabre_VObject_Property_DateTime('DTSTART','19850704T013000');
132         $dt = $elem->getDateTime();
133
134         $this->assertInstanceOf('DateTime', $dt);
135         $this->assertEquals('1985-07-04 01:30:00', $dt->format('Y-m-d H:i:s'));
136         $this->assertEquals(Sabre_VObject_Property_DateTime::LOCAL, $elem->getDateType());
137
138     }
139
140     function testGetDateTimeDateUTC() {
141
142         $elem = new Sabre_VObject_Property_DateTime('DTSTART','19850704T013000Z');
143         $dt = $elem->getDateTime();
144
145         $this->assertInstanceOf('DateTime', $dt);
146         $this->assertEquals('1985-07-04 01:30:00', $dt->format('Y-m-d H:i:s'));
147         $this->assertEquals('UTC', $dt->getTimeZone()->getName());
148         $this->assertEquals(Sabre_VObject_Property_DateTime::UTC, $elem->getDateType());
149
150     }
151
152     function testGetDateTimeDateLOCALTZ() {
153
154         $elem = new Sabre_VObject_Property_DateTime('DTSTART','19850704T013000');
155         $elem['TZID'] = 'Europe/Amsterdam';
156
157         $dt = $elem->getDateTime();
158
159         $this->assertInstanceOf('DateTime', $dt);
160         $this->assertEquals('1985-07-04 01:30:00', $dt->format('Y-m-d H:i:s'));
161         $this->assertEquals('Europe/Amsterdam', $dt->getTimeZone()->getName());
162         $this->assertEquals(Sabre_VObject_Property_DateTime::LOCALTZ, $elem->getDateType());
163
164     }
165
166     /**
167      * @expectedException InvalidArgumentException
168      */
169     function testGetDateTimeDateInvalid() {
170
171         $elem = new Sabre_VObject_Property_DateTime('DTSTART','bla');
172         $dt = $elem->getDateTime();
173
174     }
175
176     function testGetDateTimeWeirdTZ() {
177
178         $elem = new Sabre_VObject_Property_DateTime('DTSTART','19850704T013000');
179         $elem['TZID'] = '/freeassociation.sourceforge.net/Tzfile/Europe/Amsterdam';
180
181
182         $event = new Sabre_VObject_Component('VEVENT');
183         $event->add($elem);
184
185         $timezone = new Sabre_VObject_Component('VTIMEZONE');
186         $timezone->TZID = '/freeassociation.sourceforge.net/Tzfile/Europe/Amsterdam';
187         $timezone->{'X-LIC-LOCATION'} = 'Europe/Amsterdam';
188
189         $calendar = new Sabre_VObject_Component('VCALENDAR');
190         $calendar->add($event);
191         $calendar->add($timezone);
192
193         $dt = $elem->getDateTime();
194
195         $this->assertInstanceOf('DateTime', $dt);
196         $this->assertEquals('1985-07-04 01:30:00', $dt->format('Y-m-d H:i:s'));
197         $this->assertEquals('Europe/Amsterdam', $dt->getTimeZone()->getName());
198         $this->assertEquals(Sabre_VObject_Property_DateTime::LOCALTZ, $elem->getDateType());
199
200     }
201
202     function testGetDateTimeBadTimeZone() {
203
204         $default = date_default_timezone_get();
205         date_default_timezone_set('Canada/Eastern');
206
207         $elem = new Sabre_VObject_Property_DateTime('DTSTART','19850704T013000');
208         $elem['TZID'] = 'Moon';
209
210
211         $event = new Sabre_VObject_Component('VEVENT');
212         $event->add($elem);
213
214         $timezone = new Sabre_VObject_Component('VTIMEZONE');
215         $timezone->TZID = 'Moon';
216         $timezone->{'X-LIC-LOCATION'} = 'Moon';
217
218         $calendar = new Sabre_VObject_Component('VCALENDAR');
219         $calendar->add($event);
220         $calendar->add($timezone);
221
222         $dt = $elem->getDateTime();
223
224         $this->assertInstanceOf('DateTime', $dt);
225         $this->assertEquals('1985-07-04 01:30:00', $dt->format('Y-m-d H:i:s'));
226         $this->assertEquals('Canada/Eastern', $dt->getTimeZone()->getName());
227         $this->assertEquals(Sabre_VObject_Property_DateTime::LOCALTZ, $elem->getDateType());
228         date_default_timezone_set($default);
229
230     }
231 }