diff options
Diffstat (limited to 'vendor/sabre/vobject/tests/Sabre/VObject/FreeBusyGeneratorTest.php')
-rw-r--r-- | vendor/sabre/vobject/tests/Sabre/VObject/FreeBusyGeneratorTest.php | 246 |
1 files changed, 246 insertions, 0 deletions
diff --git a/vendor/sabre/vobject/tests/Sabre/VObject/FreeBusyGeneratorTest.php b/vendor/sabre/vobject/tests/Sabre/VObject/FreeBusyGeneratorTest.php new file mode 100644 index 000000000..1f79e0a47 --- /dev/null +++ b/vendor/sabre/vobject/tests/Sabre/VObject/FreeBusyGeneratorTest.php @@ -0,0 +1,246 @@ +<?php + +namespace Sabre\VObject; + +class FreeBusyGeneratorTest extends \PHPUnit_Framework_TestCase { + + function getInput() { + + // shows up +$blob1 = <<<ICS +BEGIN:VCALENDAR +BEGIN:VEVENT +DTSTART:20110101T120000Z +DTEND:20110101T130000Z +END:VEVENT +END:VCALENDAR +ICS; + + // opaque, shows up +$blob2 = <<<ICS +BEGIN:VCALENDAR +BEGIN:VEVENT +TRANSP:OPAQUE +DTSTART:20110101T130000Z +DTEND:20110101T140000Z +END:VEVENT +END:VCALENDAR +ICS; + + // transparent, hidden +$blob3 = <<<ICS +BEGIN:VCALENDAR +BEGIN:VEVENT +TRANSP:TRANSPARENT +DTSTART:20110101T140000Z +DTEND:20110101T150000Z +END:VEVENT +END:VCALENDAR +ICS; + + // cancelled, hidden +$blob4 = <<<ICS +BEGIN:VCALENDAR +BEGIN:VEVENT +STATUS:CANCELLED +DTSTART:20110101T160000Z +DTEND:20110101T170000Z +END:VEVENT +END:VCALENDAR +ICS; + + // tentative, shows up +$blob5 = <<<ICS +BEGIN:VCALENDAR +BEGIN:VEVENT +STATUS:TENTATIVE +DTSTART:20110101T180000Z +DTEND:20110101T190000Z +END:VEVENT +END:VCALENDAR +ICS; + + // outside of time-range, hidden +$blob6 = <<<ICS +BEGIN:VCALENDAR +BEGIN:VEVENT +DTSTART:20110101T090000Z +DTEND:20110101T100000Z +END:VEVENT +END:VCALENDAR +ICS; + + // outside of time-range, hidden +$blob7 = <<<ICS +BEGIN:VCALENDAR +BEGIN:VEVENT +DTSTART:20110104T090000Z +DTEND:20110104T100000Z +END:VEVENT +END:VCALENDAR +ICS; + + // using duration, shows up +$blob8 = <<<ICS +BEGIN:VCALENDAR +BEGIN:VEVENT +DTSTART:20110101T190000Z +DURATION:PT1H +END:VEVENT +END:VCALENDAR +ICS; + + // Day-long event, shows up +$blob9 = <<<ICS +BEGIN:VCALENDAR +BEGIN:VEVENT +DTSTART;TYPE=DATE:20110102 +END:VEVENT +END:VCALENDAR +ICS; + +// No duration, does not show up +$blob10 = <<<ICS +BEGIN:VCALENDAR +BEGIN:VEVENT +DTSTART:20110101T200000Z +END:VEVENT +END:VCALENDAR +ICS; + +// encoded as object, shows up +$blob11 = <<<ICS +BEGIN:VCALENDAR +BEGIN:VEVENT +DTSTART:20110101T210000Z +DURATION:PT1H +END:VEVENT +END:VCALENDAR +ICS; + +// Freebusy. Some parts show up +$blob12 = <<<ICS +BEGIN:VCALENDAR +BEGIN:VFREEBUSY +FREEBUSY:20110103T010000Z/20110103T020000Z +FREEBUSY;FBTYPE=FREE:20110103T020000Z/20110103T030000Z +FREEBUSY:20110103T030000Z/20110103T040000Z,20110103T040000Z/20110103T050000Z +FREEBUSY:20120101T000000Z/20120101T010000Z +FREEBUSY:20110103T050000Z/PT1H +END:VFREEBUSY +END:VCALENDAR +ICS; + +// Yearly recurrence rule, shows up +$blob13 = <<<ICS +BEGIN:VCALENDAR +BEGIN:VEVENT +DTSTART:20100101T220000Z +DTEND:20100101T230000Z +RRULE:FREQ=YEARLY +END:VEVENT +END:VCALENDAR +ICS; + +// Yearly recurrence rule + duration, shows up +$blob14 = <<<ICS +BEGIN:VCALENDAR +BEGIN:VEVENT +DTSTART:20100101T230000Z +DURATION:PT1H +RRULE:FREQ=YEARLY +END:VEVENT +END:VCALENDAR +ICS; + + + return array( + $blob1, + $blob2, + $blob3, + $blob4, + $blob5, + $blob6, + $blob7, + $blob8, + $blob9, + $blob10, + Reader::read($blob11), + $blob12, + $blob13, + $blob14, + ); + + } + + function testGenerator() { + + $gen = new FreeBusyGenerator( + new \DateTime('20110101T110000Z', new \DateTimeZone('UTC')), + new \DateTime('20110103T110000Z', new \DateTimeZone('UTC')), + $this->getInput() + ); + + $result = $gen->getResult(); + + $expected = array( + '20110101T120000Z/20110101T130000Z', + '20110101T130000Z/20110101T140000Z', + '20110101T180000Z/20110101T190000Z', + '20110101T190000Z/20110101T200000Z', + '20110102T000000Z/20110103T000000Z', + '20110101T210000Z/20110101T220000Z', + + '20110103T010000Z/20110103T020000Z', + '20110103T030000Z/20110103T040000Z', + '20110103T040000Z/20110103T050000Z', + '20110103T050000Z/20110103T060000Z', + + '20110101T220000Z/20110101T230000Z', + '20110101T230000Z/20110102T000000Z', + ); + + foreach($result->VFREEBUSY->FREEBUSY as $fb) { + + $this->assertContains((string)$fb, $expected); + + $k = array_search((string)$fb, $expected); + unset($expected[$k]); + + } + if (count($expected)>0) { + $this->fail('There were elements in the expected array that were not found in the output: ' . "\n" . print_r($expected,true) . "\n" . $result->serialize()); + + } + + } + + function testGeneratorBaseObject() { + + $obj = new Component('VCALENDAR'); + $obj->METHOD = 'PUBLISH'; + + $gen = new FreeBusyGenerator(); + $gen->setObjects(array()); + $gen->setBaseObject($obj); + + $result = $gen->getResult(); + + $this->assertEquals('PUBLISH', $result->METHOD->value); + + } + + /** + * @expectedException InvalidArgumentException + */ + function testInvalidArg() { + + $gen = new FreeBusyGenerator( + new \DateTime('2012-01-01'), + new \DateTime('2012-12-31'), + new \StdClass() + ); + + } + +} |