]> git.mxchange.org Git - friendica-addons.git/blob - dav/sabre-vobject/tests/Sabre/VObject/FreeBusyGeneratorTest.php
Merge branch 'master' of git://github.com/friendica/friendica-addons
[friendica-addons.git] / dav / sabre-vobject / tests / Sabre / VObject / FreeBusyGeneratorTest.php
1 <?php
2
3 namespace Sabre\VObject;
4
5 class FreeBusyGeneratorTest extends \PHPUnit_Framework_TestCase {
6
7     function getInput() {
8
9         // shows up
10 $blob1 = <<<ICS
11 BEGIN:VCALENDAR
12 BEGIN:VEVENT
13 DTSTART:20110101T120000Z
14 DTEND:20110101T130000Z
15 END:VEVENT
16 END:VCALENDAR
17 ICS;
18
19     // opaque, shows up
20 $blob2 = <<<ICS
21 BEGIN:VCALENDAR
22 BEGIN:VEVENT
23 TRANSP:OPAQUE
24 DTSTART:20110101T130000Z
25 DTEND:20110101T140000Z
26 END:VEVENT
27 END:VCALENDAR
28 ICS;
29
30     // transparent, hidden
31 $blob3 = <<<ICS
32 BEGIN:VCALENDAR
33 BEGIN:VEVENT
34 TRANSP:TRANSPARENT
35 DTSTART:20110101T140000Z
36 DTEND:20110101T150000Z
37 END:VEVENT
38 END:VCALENDAR
39 ICS;
40
41     // cancelled, hidden
42 $blob4 = <<<ICS
43 BEGIN:VCALENDAR
44 BEGIN:VEVENT
45 STATUS:CANCELLED
46 DTSTART:20110101T160000Z
47 DTEND:20110101T170000Z
48 END:VEVENT
49 END:VCALENDAR
50 ICS;
51
52     // tentative, shows up
53 $blob5 = <<<ICS
54 BEGIN:VCALENDAR
55 BEGIN:VEVENT
56 STATUS:TENTATIVE
57 DTSTART:20110101T180000Z
58 DTEND:20110101T190000Z
59 END:VEVENT
60 END:VCALENDAR
61 ICS;
62
63     // outside of time-range, hidden
64 $blob6 = <<<ICS
65 BEGIN:VCALENDAR
66 BEGIN:VEVENT
67 DTSTART:20110101T090000Z
68 DTEND:20110101T100000Z
69 END:VEVENT
70 END:VCALENDAR
71 ICS;
72
73     // outside of time-range, hidden
74 $blob7 = <<<ICS
75 BEGIN:VCALENDAR
76 BEGIN:VEVENT
77 DTSTART:20110104T090000Z
78 DTEND:20110104T100000Z
79 END:VEVENT
80 END:VCALENDAR
81 ICS;
82
83     // using duration, shows up
84 $blob8 = <<<ICS
85 BEGIN:VCALENDAR
86 BEGIN:VEVENT
87 DTSTART:20110101T190000Z
88 DURATION:PT1H
89 END:VEVENT
90 END:VCALENDAR
91 ICS;
92
93     // Day-long event, shows up
94 $blob9 = <<<ICS
95 BEGIN:VCALENDAR
96 BEGIN:VEVENT
97 DTSTART;TYPE=DATE:20110102
98 END:VEVENT
99 END:VCALENDAR
100 ICS;
101
102 // No duration, does not show up
103 $blob10 = <<<ICS
104 BEGIN:VCALENDAR
105 BEGIN:VEVENT
106 DTSTART:20110101T200000Z
107 END:VEVENT
108 END:VCALENDAR
109 ICS;
110
111 // encoded as object, shows up
112 $blob11 = <<<ICS
113 BEGIN:VCALENDAR
114 BEGIN:VEVENT
115 DTSTART:20110101T210000Z
116 DURATION:PT1H
117 END:VEVENT
118 END:VCALENDAR
119 ICS;
120
121 // Freebusy. Some parts show up
122 $blob12 = <<<ICS
123 BEGIN:VCALENDAR
124 BEGIN:VFREEBUSY
125 FREEBUSY:20110103T010000Z/20110103T020000Z
126 FREEBUSY;FBTYPE=FREE:20110103T020000Z/20110103T030000Z
127 FREEBUSY:20110103T030000Z/20110103T040000Z,20110103T040000Z/20110103T050000Z
128 FREEBUSY:20120101T000000Z/20120101T010000Z
129 FREEBUSY:20110103T050000Z/PT1H
130 END:VFREEBUSY
131 END:VCALENDAR
132 ICS;
133
134 // Yearly recurrence rule, shows up
135 $blob13 = <<<ICS
136 BEGIN:VCALENDAR
137 BEGIN:VEVENT
138 DTSTART:20100101T220000Z
139 DTEND:20100101T230000Z
140 RRULE:FREQ=YEARLY
141 END:VEVENT
142 END:VCALENDAR
143 ICS;
144
145 // Yearly recurrence rule + duration, shows up
146 $blob14 = <<<ICS
147 BEGIN:VCALENDAR
148 BEGIN:VEVENT
149 DTSTART:20100101T230000Z
150 DURATION:PT1H
151 RRULE:FREQ=YEARLY
152 END:VEVENT
153 END:VCALENDAR
154 ICS;
155
156
157         return array(
158             $blob1,
159             $blob2,
160             $blob3,
161             $blob4,
162             $blob5,
163             $blob6,
164             $blob7,
165             $blob8,
166             $blob9,
167             $blob10,
168             Reader::read($blob11),
169             $blob12,
170             $blob13,
171             $blob14,
172         );
173
174     }
175
176     function testGenerator() {
177
178         $gen = new FreeBusyGenerator(
179             new \DateTime('20110101T110000Z', new \DateTimeZone('UTC')),
180             new \DateTime('20110103T110000Z', new \DateTimeZone('UTC')),
181             $this->getInput()
182         );
183
184         $result = $gen->getResult();
185
186         $expected = array(
187             '20110101T120000Z/20110101T130000Z',
188             '20110101T130000Z/20110101T140000Z',
189             '20110101T180000Z/20110101T190000Z',
190             '20110101T190000Z/20110101T200000Z',
191             '20110102T000000Z/20110103T000000Z',
192             '20110101T210000Z/20110101T220000Z',
193
194             '20110103T010000Z/20110103T020000Z',
195             '20110103T030000Z/20110103T040000Z',
196             '20110103T040000Z/20110103T050000Z',
197             '20110103T050000Z/20110103T060000Z',
198
199             '20110101T220000Z/20110101T230000Z',
200             '20110101T230000Z/20110102T000000Z',
201         );
202
203         foreach($result->VFREEBUSY->FREEBUSY as $fb) {
204
205             $this->assertContains((string)$fb, $expected);
206
207             $k = array_search((string)$fb, $expected);
208             unset($expected[$k]);
209
210         }
211         if (count($expected)>0) {
212             $this->fail('There were elements in the expected array that were not found in the output: ' . "\n"  . print_r($expected,true) . "\n" . $result->serialize());
213
214         }
215
216     }
217
218     function testGeneratorBaseObject() {
219
220         $obj = new Component('VCALENDAR');
221         $obj->METHOD = 'PUBLISH';
222
223         $gen = new FreeBusyGenerator();
224         $gen->setObjects(array());
225         $gen->setBaseObject($obj);
226
227         $result = $gen->getResult();
228
229         $this->assertEquals('PUBLISH', $result->METHOD->value);
230
231     }
232
233     /**
234      * @expectedException InvalidArgumentException
235      */
236     function testInvalidArg() {
237
238         $gen = new FreeBusyGenerator(
239             new \DateTime('2012-01-01'),
240             new \DateTime('2012-12-31'),
241             new \StdClass()
242         );
243
244     }
245
246 }