]> git.mxchange.org Git - friendica-addons.git/blob - dav/sabre-vobject/tests/Sabre/VObject/Property/MultiDateTimeTest.php
Second part of refactoring; should be runnable again, yet not thoroughly tested
[friendica-addons.git] / dav / sabre-vobject / tests / Sabre / VObject / Property / MultiDateTimeTest.php
1 <?php
2
3 namespace Sabre\VObject\Property;
4
5 class MultiDateTimeTest extends \PHPUnit_Framework_TestCase {
6
7     function testSetDateTime() {
8
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);
14
15         $elem = new MultiDateTime('DTSTART');
16         $elem->setDateTimes(array($dt1,$dt2));
17
18         $this->assertEquals('19850704T013000,19860704T013000', $elem->value);
19         $this->assertEquals('Europe/Amsterdam', (string)$elem['TZID']);
20         $this->assertEquals('DATE-TIME', (string)$elem['VALUE']);
21
22     }
23
24     function testSetDateTimeLOCAL() {
25
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);
31
32         $elem = new MultiDateTime('DTSTART');
33         $elem->setDateTimes(array($dt1,$dt2), DateTime::LOCAL);
34
35         $this->assertEquals('19850704T013000,19860704T013000', $elem->value);
36         $this->assertNull($elem['TZID']);
37         $this->assertEquals('DATE-TIME', (string)$elem['VALUE']);
38
39     }
40
41     function testSetDateTimeUTC() {
42
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);
48
49         $elem = new MultiDateTime('DTSTART');
50         $elem->setDateTimes(array($dt1,$dt2), DateTime::UTC);
51
52         $this->assertEquals('19850704T013000Z,19860704T013000Z', $elem->value);
53         $this->assertNull($elem['TZID']);
54         $this->assertEquals('DATE-TIME', (string)$elem['VALUE']);
55
56     }
57
58     function testSetDateTimeLOCALTZ() {
59
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);
65
66         $elem = new MultiDateTime('DTSTART');
67         $elem->setDateTimes(array($dt1,$dt2), DateTime::LOCALTZ);
68
69         $this->assertEquals('19850704T013000,19860704T013000', $elem->value);
70         $this->assertEquals('Europe/Amsterdam', (string)$elem['TZID']);
71         $this->assertEquals('DATE-TIME', (string)$elem['VALUE']);
72
73     }
74
75     function testSetDateTimeDATE() {
76
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);
82
83         $elem = new MultiDateTime('DTSTART');
84         $elem->setDateTimes(array($dt1,$dt2), DateTime::DATE);
85
86         $this->assertEquals('19850704,19860704', $elem->value);
87         $this->assertNull($elem['TZID']);
88         $this->assertEquals('DATE', (string)$elem['VALUE']);
89
90     }
91
92     /**
93      * @expectedException InvalidArgumentException
94      */
95     function testSetDateTimeInvalid() {
96
97         $tz = new \DateTimeZone('Europe/Amsterdam');
98         $dt = new \DateTime('1985-07-04 01:30:00', $tz);
99         $dt->setTimeZone($tz);
100
101         $elem = new MultiDateTime('DTSTART');
102         $elem->setDateTimes(array($dt), 7);
103
104     }
105
106     function testGetDateTimeCached() {
107
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);
113
114         $elem = new MultiDateTime('DTSTART');
115         $elem->setDateTimes(array($dt1,$dt2));
116
117         $this->assertEquals($elem->getDateTimes(), array($dt1,$dt2));
118
119     }
120
121     function testGetDateTimeDateNULL() {
122
123         $elem = new MultiDateTime('DTSTART');
124         $dt = $elem->getDateTimes();
125
126         $this->assertNull($dt);
127         $this->assertNull($elem->getDateType());
128
129     }
130
131     function testGetDateTimeDateDATE() {
132
133         $elem = new MultiDateTime('DTSTART','19850704,19860704');
134         $dt = $elem->getDateTimes();
135
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());
139
140     }
141
142     function testGetDateTimeDateDATEReverse() {
143
144         $elem = new MultiDateTime('DTSTART','19850704,19860704');
145
146         $this->assertEquals(DateTime::DATE, $elem->getDateType());
147
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'));
151
152     }
153
154
155     function testGetDateTimeDateLOCAL() {
156
157         $elem = new DateTime('DTSTART','19850704T013000');
158         $dt = $elem->getDateTime();
159
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());
163
164     }
165
166     function testGetDateTimeDateUTC() {
167
168         $elem = new DateTime('DTSTART','19850704T013000Z');
169         $dt = $elem->getDateTime();
170
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());
175
176     }
177
178     function testGetDateTimeDateLOCALTZ() {
179
180         $elem = new DateTime('DTSTART','19850704T013000');
181         $elem['TZID'] = 'Europe/Amsterdam';
182
183         $dt = $elem->getDateTime();
184
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());
189
190     }
191
192     /**
193      * @expectedException InvalidArgumentException
194      */
195     function testGetDateTimeDateInvalid() {
196
197         $elem = new DateTime('DTSTART','bla');
198         $dt = $elem->getDateTime();
199
200     }
201
202 }