]> git.mxchange.org Git - friendica-addons.git/blob - dav/SabreDAV/tests/Sabre/VObject/ComponentTest.php
Initial Release of the calendar plugin
[friendica-addons.git] / dav / SabreDAV / tests / Sabre / VObject / ComponentTest.php
1 <?php
2
3 class Sabre_VObject_ComponentTest extends PHPUnit_Framework_TestCase {
4
5     function testIterate() {
6
7         $comp = new Sabre_VObject_Component('VCALENDAR');
8
9         $sub = new Sabre_VObject_Component('VEVENT');
10         $comp->children[] = $sub;
11
12         $sub = new Sabre_VObject_Component('VTODO');
13         $comp->children[] = $sub;
14
15         $count = 0;
16         foreach($comp->children() as $key=>$subcomponent) {
17
18            $count++;
19            $this->assertInstanceOf('Sabre_VObject_Component',$subcomponent);
20
21         }
22         $this->assertEquals(2,$count);
23         $this->assertEquals(1,$key);
24
25     }
26
27     function testMagicGet() {
28
29         $comp = new Sabre_VObject_Component('VCALENDAR');
30
31         $sub = new Sabre_VObject_Component('VEVENT');
32         $comp->children[] = $sub;
33
34         $sub = new Sabre_VObject_Component('VTODO');
35         $comp->children[] = $sub;
36
37         $event = $comp->vevent;
38         $this->assertInstanceOf('Sabre_VObject_Component', $event);
39         $this->assertEquals('VEVENT', $event->name);
40
41         $this->assertInternalType('null', $comp->vjournal);
42
43     }
44
45     function testMagicGetGroups() {
46
47         $comp = new Sabre_VObject_Component('VCARD');
48
49         $sub = new Sabre_VObject_Property('GROUP1.EMAIL','1@1.com');
50         $comp->children[] = $sub;
51
52         $sub = new Sabre_VObject_Property('GROUP2.EMAIL','2@2.com');
53         $comp->children[] = $sub;
54
55         $sub = new Sabre_VObject_Property('EMAIL','3@3.com');
56         $comp->children[] = $sub;
57
58         $emails = $comp->email;
59         $this->assertEquals(3, count($emails));
60
61         $email1 = $comp->{"group1.email"};
62         $this->assertEquals('EMAIL', $email1[0]->name);
63         $this->assertEquals('GROUP1', $email1[0]->group);
64
65         $email3 = $comp->{".email"};
66         $this->assertEquals('EMAIL', $email3[0]->name);
67         $this->assertEquals(null, $email3[0]->group);
68
69     }
70
71     function testMagicIsset() {
72
73         $comp = new Sabre_VObject_Component('VCALENDAR');
74
75         $sub = new Sabre_VObject_Component('VEVENT');
76         $comp->children[] = $sub;
77
78         $sub = new Sabre_VObject_Component('VTODO');
79         $comp->children[] = $sub;
80
81         $this->assertTrue(isset($comp->vevent));
82         $this->assertTrue(isset($comp->vtodo));
83         $this->assertFalse(isset($comp->vjournal));
84
85     }
86
87     function testMagicSetScalar() {
88
89         $comp = new Sabre_VObject_Component('VCALENDAR');
90         $comp->myProp = 'myValue';
91
92         $this->assertInstanceOf('Sabre_VObject_Property',$comp->MYPROP);
93         $this->assertEquals('myValue',$comp->MYPROP->value);
94
95
96     }
97
98     function testMagicSetScalarTwice() {
99
100         $comp = new Sabre_VObject_Component('VCALENDAR');
101         $comp->myProp = 'myValue';
102         $comp->myProp = 'myValue';
103
104         $this->assertEquals(1,count($comp->children));
105         $this->assertInstanceOf('Sabre_VObject_Property',$comp->MYPROP);
106         $this->assertEquals('myValue',$comp->MYPROP->value);
107
108     }
109
110     function testMagicSetComponent() {
111
112         $comp = new Sabre_VObject_Component('VCALENDAR');
113
114         // Note that 'myProp' is ignored here.
115         $comp->myProp = new Sabre_VObject_Component('VEVENT');
116
117         $this->assertEquals(1, count($comp->children));
118
119         $this->assertEquals('VEVENT',$comp->VEVENT->name);
120
121     }
122
123     function testMagicSetTwice() {
124
125         $comp = new Sabre_VObject_Component('VCALENDAR');
126
127         $comp->VEVENT = new Sabre_VObject_Component('VEVENT');
128         $comp->VEVENT = new Sabre_VObject_Component('VEVENT');
129
130         $this->assertEquals(1, count($comp->children));
131
132         $this->assertEquals('VEVENT',$comp->VEVENT->name);
133
134     }
135
136     function testArrayAccessGet() {
137
138         $comp = new Sabre_VObject_Component('VCALENDAR');
139
140         $event = new Sabre_VObject_Component('VEVENT');
141         $event->summary = 'Event 1';
142
143         $comp->add($event);
144
145         $event2 = clone $event;
146         $event2->summary = 'Event 2';
147
148         $comp->add($event2);
149
150         $this->assertEquals(2,count($comp->children()));
151         $this->assertTrue($comp->vevent[1] instanceof Sabre_VObject_Component);
152         $this->assertEquals('Event 2', (string)$comp->vevent[1]->summary);
153
154     }
155
156     function testArrayAccessExists() {
157
158         $comp = new Sabre_VObject_Component('VCALENDAR');
159
160         $event = new Sabre_VObject_Component('VEVENT');
161         $event->summary = 'Event 1';
162
163         $comp->add($event);
164
165         $event2 = clone $event;
166         $event2->summary = 'Event 2';
167
168         $comp->add($event2);
169
170         $this->assertTrue(isset($comp->vevent[0]));
171         $this->assertTrue(isset($comp->vevent[1]));
172
173     }
174
175     /**
176      * @expectedException LogicException
177      */
178     function testArrayAccessSet() {
179
180         $comp = new Sabre_VObject_Component('VCALENDAR');
181         $comp['hey'] = 'hi there';
182
183     }
184     /**
185      * @expectedException LogicException
186      */
187     function testArrayAccessUnset() {
188
189         $comp = new Sabre_VObject_Component('VCALENDAR');
190         unset($comp[0]);
191
192     }
193
194     function testAddScalar() {
195
196         $comp = new Sabre_VObject_Component('VCALENDAR');
197
198         $comp->add('myprop','value');
199
200         $this->assertEquals(1, count($comp->children));
201
202         $this->assertTrue($comp->children[0] instanceof Sabre_VObject_Property);
203         $this->assertEquals('MYPROP',$comp->children[0]->name);
204         $this->assertEquals('value',$comp->children[0]->value);
205
206     }
207
208     function testAddComponent() {
209
210         $comp = new Sabre_VObject_Component('VCALENDAR');
211
212         $comp->add(new Sabre_VObject_Component('VEVENT'));
213
214         $this->assertEquals(1, count($comp->children));
215
216         $this->assertEquals('VEVENT',$comp->VEVENT->name);
217
218     }
219
220     function testAddComponentTwice() {
221
222         $comp = new Sabre_VObject_Component('VCALENDAR');
223
224         $comp->add(new Sabre_VObject_Component('VEVENT'));
225         $comp->add(new Sabre_VObject_Component('VEVENT'));
226
227         $this->assertEquals(2, count($comp->children));
228
229         $this->assertEquals('VEVENT',$comp->VEVENT->name);
230
231     }
232
233     /**
234      * @expectedException InvalidArgumentException
235      */
236     function testAddArgFail() {
237
238         $comp = new Sabre_VObject_Component('VCALENDAR');
239         $comp->add(new Sabre_VObject_Component('VEVENT'),'hello');
240
241     }
242
243     /**
244      * @expectedException InvalidArgumentException
245      */
246     function testAddArgFail2() {
247
248         $comp = new Sabre_VObject_Component('VCALENDAR');
249         $comp->add(array());
250
251     }
252
253     /**
254      * @expectedException InvalidArgumentException
255      */
256     function testAddArgFail3() {
257
258         $comp = new Sabre_VObject_Component('VCALENDAR');
259         $comp->add('hello',array());
260
261     }
262
263     /**
264      * @expectedException InvalidArgumentException
265      */
266     function testMagicSetInvalid() {
267
268         $comp = new Sabre_VObject_Component('VCALENDAR');
269
270         // Note that 'myProp' is ignored here.
271         $comp->myProp = new StdClass();
272
273         $this->assertEquals(1, count($comp->children));
274
275         $this->assertEquals('VEVENT',$comp->VEVENT->name);
276
277     }
278
279     function testMagicUnset() {
280
281         $comp = new Sabre_VObject_Component('VCALENDAR');
282         $comp->add(new Sabre_VObject_Component('VEVENT'));
283
284         unset($comp->vevent);
285
286         $this->assertEquals(array(), $comp->children);
287
288     }
289
290
291     function testCount() {
292
293         $comp = new Sabre_VObject_Component('VCALENDAR');
294         $this->assertEquals(1,$comp->count());
295
296     }
297
298     function testChildren() {
299
300         $comp = new Sabre_VObject_Component('VCALENDAR');
301
302         // Note that 'myProp' is ignored here.
303         $comp->children = array(
304             new Sabre_VObject_Component('VEVENT'),
305             new Sabre_VObject_Component('VTODO')
306         );
307
308         $r = $comp->children();
309         $this->assertTrue($r instanceof Sabre_VObject_ElementList);
310         $this->assertEquals(2,count($r));
311     }
312
313     function testGetComponents() {
314
315         $comp = new Sabre_VObject_Component('VCALENDAR');
316
317         // Note that 'myProp' is ignored here.
318         $comp->children = array(
319             new Sabre_VObject_Property('FOO','BAR'),
320             new Sabre_VObject_Component('VTODO')
321         );
322
323         $r = $comp->getComponents();
324         $this->assertInternalType('array', $r);
325         $this->assertEquals(1, count($r));
326         $this->assertEquals('VTODO', $r[0]->name);
327     }
328
329     function testSerialize() {
330
331         $comp = new Sabre_VObject_Component('VCALENDAR');
332         $this->assertEquals("BEGIN:VCALENDAR\r\nEND:VCALENDAR\r\n", $comp->serialize());
333
334     }
335
336     function testSerializeChildren() {
337
338         $comp = new Sabre_VObject_Component('VCALENDAR');
339         $comp->children = array(
340             new Sabre_VObject_Component('VEVENT'),
341             new Sabre_VObject_Component('VTODO')
342         );
343         $this->assertEquals("BEGIN:VCALENDAR\r\nBEGIN:VTODO\r\nEND:VTODO\r\nBEGIN:VEVENT\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", $comp->serialize());
344
345     }
346
347     function testSerializeOrder() {
348         
349         $comp = new Sabre_VObject_Component('VCALENDAR');
350         $comp->add(new Sabre_VObject_Component('VEVENT'));
351         $comp->add('PROP1','BLABLA');
352         $comp->add('VERSION','2.0');
353         $comp->add(new Sabre_VObject_Component('VTIMEZONE'));
354
355         $str = $comp->serialize();
356
357         $this->assertEquals("BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPROP1:BLABLA\r\nBEGIN:VTIMEZONE\r\nEND:VTIMEZONE\r\nBEGIN:VEVENT\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", $str);
358
359     }
360
361 }