3 namespace Sabre\VObject;
5 class FreeBusyGeneratorTest extends \PHPUnit_Framework_TestCase {
13 DTSTART:20110101T120000Z
14 DTEND:20110101T130000Z
24 DTSTART:20110101T130000Z
25 DTEND:20110101T140000Z
30 // transparent, hidden
35 DTSTART:20110101T140000Z
36 DTEND:20110101T150000Z
46 DTSTART:20110101T160000Z
47 DTEND:20110101T170000Z
52 // tentative, shows up
57 DTSTART:20110101T180000Z
58 DTEND:20110101T190000Z
63 // outside of time-range, hidden
67 DTSTART:20110101T090000Z
68 DTEND:20110101T100000Z
73 // outside of time-range, hidden
77 DTSTART:20110104T090000Z
78 DTEND:20110104T100000Z
83 // using duration, shows up
87 DTSTART:20110101T190000Z
93 // Day-long event, shows up
97 DTSTART;TYPE=DATE:20110102
102 // No duration, does not show up
106 DTSTART:20110101T200000Z
111 // encoded as object, shows up
115 DTSTART:20110101T210000Z
121 // Freebusy. Some parts show up
125 FREEBUSY:20110103T010000Z/20110103T020000Z
126 FREEBUSY;FBTYPE=FREE:20110103T020000Z/20110103T030000Z
127 FREEBUSY:20110103T030000Z/20110103T040000Z,20110103T040000Z/20110103T050000Z
128 FREEBUSY:20120101T000000Z/20120101T010000Z
129 FREEBUSY:20110103T050000Z/PT1H
134 // Yearly recurrence rule, shows up
138 DTSTART:20100101T220000Z
139 DTEND:20100101T230000Z
145 // Yearly recurrence rule + duration, shows up
149 DTSTART:20100101T230000Z
168 Reader::read($blob11),
176 function testGenerator() {
178 $gen = new FreeBusyGenerator(
179 new \DateTime('20110101T110000Z', new \DateTimeZone('UTC')),
180 new \DateTime('20110103T110000Z', new \DateTimeZone('UTC')),
184 $result = $gen->getResult();
187 '20110101T120000Z/20110101T130000Z',
188 '20110101T130000Z/20110101T140000Z',
189 '20110101T180000Z/20110101T190000Z',
190 '20110101T190000Z/20110101T200000Z',
191 '20110102T000000Z/20110103T000000Z',
192 '20110101T210000Z/20110101T220000Z',
194 '20110103T010000Z/20110103T020000Z',
195 '20110103T030000Z/20110103T040000Z',
196 '20110103T040000Z/20110103T050000Z',
197 '20110103T050000Z/20110103T060000Z',
199 '20110101T220000Z/20110101T230000Z',
200 '20110101T230000Z/20110102T000000Z',
203 foreach($result->VFREEBUSY->FREEBUSY as $fb) {
205 $this->assertContains((string)$fb, $expected);
207 $k = array_search((string)$fb, $expected);
208 unset($expected[$k]);
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());
218 function testGeneratorBaseObject() {
220 $obj = new Component('VCALENDAR');
221 $obj->METHOD = 'PUBLISH';
223 $gen = new FreeBusyGenerator();
224 $gen->setObjects(array());
225 $gen->setBaseObject($obj);
227 $result = $gen->getResult();
229 $this->assertEquals('PUBLISH', $result->METHOD->value);
234 * @expectedException InvalidArgumentException
236 function testInvalidArg() {
238 $gen = new FreeBusyGenerator(
239 new \DateTime('2012-01-01'),
240 new \DateTime('2012-12-31'),