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