aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/sabre/vobject/tests/Sabre/VObject/Component
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/sabre/vobject/tests/Sabre/VObject/Component')
-rw-r--r--vendor/sabre/vobject/tests/Sabre/VObject/Component/VAlarmTest.php175
-rw-r--r--vendor/sabre/vobject/tests/Sabre/VObject/Component/VCalendarTest.php244
-rw-r--r--vendor/sabre/vobject/tests/Sabre/VObject/Component/VCardTest.php100
-rw-r--r--vendor/sabre/vobject/tests/Sabre/VObject/Component/VEventTest.php74
-rw-r--r--vendor/sabre/vobject/tests/Sabre/VObject/Component/VFreeBusyTest.php39
-rw-r--r--vendor/sabre/vobject/tests/Sabre/VObject/Component/VJournalTest.php41
-rw-r--r--vendor/sabre/vobject/tests/Sabre/VObject/Component/VTodoTest.php67
7 files changed, 740 insertions, 0 deletions
diff --git a/vendor/sabre/vobject/tests/Sabre/VObject/Component/VAlarmTest.php b/vendor/sabre/vobject/tests/Sabre/VObject/Component/VAlarmTest.php
new file mode 100644
index 000000000..d57be7aa5
--- /dev/null
+++ b/vendor/sabre/vobject/tests/Sabre/VObject/Component/VAlarmTest.php
@@ -0,0 +1,175 @@
+<?php
+
+namespace Sabre\VObject\Component;
+
+use Sabre\VObject\Component;
+use DateTime;
+use Sabre\VObject\Reader;
+
+class VAlarmTest extends \PHPUnit_Framework_TestCase {
+
+ /**
+ * @dataProvider timeRangeTestData
+ */
+ public function testInTimeRange(VAlarm $valarm,$start,$end,$outcome) {
+
+ $this->assertEquals($outcome, $valarm->isInTimeRange($start, $end));
+
+ }
+
+ public function timeRangeTestData() {
+
+ $tests = array();
+
+ // Hard date and time
+ $valarm1 = Component::create('VALARM');
+ $valarm1->TRIGGER = '20120312T130000Z';
+ $valarm1->TRIGGER['VALUE'] = 'DATE-TIME';
+
+ $tests[] = array($valarm1, new DateTime('2012-03-01 01:00:00'), new DateTime('2012-04-01 01:00:00'), true);
+ $tests[] = array($valarm1, new DateTime('2012-03-01 01:00:00'), new DateTime('2012-03-10 01:00:00'), false);
+
+ // Relation to start time of event
+ $valarm2 = Component::create('VALARM');
+ $valarm2->TRIGGER = '-P1D';
+ $valarm2->TRIGGER['VALUE'] = 'DURATION';
+
+ $vevent2 = Component::create('VEVENT');
+ $vevent2->DTSTART = '20120313T130000Z';
+ $vevent2->add($valarm2);
+
+ $tests[] = array($valarm2, new DateTime('2012-03-01 01:00:00'), new DateTime('2012-04-01 01:00:00'), true);
+ $tests[] = array($valarm2, new DateTime('2012-03-01 01:00:00'), new DateTime('2012-03-10 01:00:00'), false);
+
+ // Relation to end time of event
+ $valarm3 = Component::create('VALARM');
+ $valarm3->TRIGGER = '-P1D';
+ $valarm3->TRIGGER['VALUE'] = 'DURATION';
+ $valarm3->TRIGGER['RELATED']= 'END';
+
+ $vevent3 = Component::create('VEVENT');
+ $vevent3->DTSTART = '20120301T130000Z';
+ $vevent3->DTEND = '20120401T130000Z';
+ $vevent3->add($valarm3);
+
+ $tests[] = array($valarm3, new DateTime('2012-02-25 01:00:00'), new DateTime('2012-03-05 01:00:00'), false);
+ $tests[] = array($valarm3, new DateTime('2012-03-25 01:00:00'), new DateTime('2012-04-05 01:00:00'), true);
+
+ // Relation to end time of todo
+ $valarm4 = Component::create('VALARM');
+ $valarm4->TRIGGER = '-P1D';
+ $valarm4->TRIGGER['VALUE'] = 'DURATION';
+ $valarm4->TRIGGER['RELATED']= 'END';
+
+ $vtodo4 = Component::create('VTODO');
+ $vtodo4->DTSTART = '20120301T130000Z';
+ $vtodo4->DUE = '20120401T130000Z';
+ $vtodo4->add($valarm4);
+
+ $tests[] = array($valarm4, new DateTime('2012-02-25 01:00:00'), new DateTime('2012-03-05 01:00:00'), false);
+ $tests[] = array($valarm4, new DateTime('2012-03-25 01:00:00'), new DateTime('2012-04-05 01:00:00'), true);
+
+ // Relation to start time of event + repeat
+ $valarm5 = Component::create('VALARM');
+ $valarm5->TRIGGER = '-P1D';
+ $valarm5->TRIGGER['VALUE'] = 'DURATION';
+ $valarm5->REPEAT = 10;
+ $valarm5->DURATION = 'P1D';
+
+ $vevent5 = Component::create('VEVENT');
+ $vevent5->DTSTART = '20120301T130000Z';
+ $vevent5->add($valarm5);
+
+ $tests[] = array($valarm5, new DateTime('2012-03-09 01:00:00'), new DateTime('2012-03-10 01:00:00'), true);
+
+ // Relation to start time of event + duration, but no repeat
+ $valarm6 = Component::create('VALARM');
+ $valarm6->TRIGGER = '-P1D';
+ $valarm6->TRIGGER['VALUE'] = 'DURATION';
+ $valarm6->DURATION = 'P1D';
+
+ $vevent6 = Component::create('VEVENT');
+ $vevent6->DTSTART = '20120313T130000Z';
+ $vevent6->add($valarm6);
+
+ $tests[] = array($valarm6, new DateTime('2012-03-01 01:00:00'), new DateTime('2012-04-01 01:00:00'), true);
+ $tests[] = array($valarm6, new DateTime('2012-03-01 01:00:00'), new DateTime('2012-03-10 01:00:00'), false);
+
+
+ // Relation to end time of event (DURATION instead of DTEND)
+ $valarm7 = Component::create('VALARM');
+ $valarm7->TRIGGER = '-P1D';
+ $valarm7->TRIGGER['VALUE'] = 'DURATION';
+ $valarm7->TRIGGER['RELATED']= 'END';
+
+ $vevent7 = Component::create('VEVENT');
+ $vevent7->DTSTART = '20120301T130000Z';
+ $vevent7->DURATION = 'P30D';
+ $vevent7->add($valarm7);
+
+ $tests[] = array($valarm7, new DateTime('2012-02-25 01:00:00'), new DateTime('2012-03-05 01:00:00'), false);
+ $tests[] = array($valarm7, new DateTime('2012-03-25 01:00:00'), new DateTime('2012-04-05 01:00:00'), true);
+
+ // Relation to end time of event (No DTEND or DURATION)
+ $valarm7 = Component::create('VALARM');
+ $valarm7->TRIGGER = '-P1D';
+ $valarm7->TRIGGER['VALUE'] = 'DURATION';
+ $valarm7->TRIGGER['RELATED']= 'END';
+
+ $vevent7 = Component::create('VEVENT');
+ $vevent7->DTSTART = '20120301T130000Z';
+ $vevent7->add($valarm7);
+
+ $tests[] = array($valarm7, new DateTime('2012-02-25 01:00:00'), new DateTime('2012-03-05 01:00:00'), true);
+ $tests[] = array($valarm7, new DateTime('2012-03-25 01:00:00'), new DateTime('2012-04-05 01:00:00'), false);
+
+
+ return $tests;
+ }
+
+ /**
+ * @expectedException LogicException
+ */
+ public function testInTimeRangeInvalidComponent() {
+
+ $valarm = Component::create('VALARM');
+ $valarm->TRIGGER = '-P1D';
+ $valarm->TRIGGER['RELATED'] = 'END';
+
+ $vjournal = Component::create('VJOURNAL');
+ $vjournal->add($valarm);
+
+ $valarm->isInTimeRange(new DateTime('2012-02-25 01:00:00'), new DateTime('2012-03-05 01:00:00'));
+
+ }
+
+ /**
+ * This bug was found and reported on the mailing list.
+ */
+ public function testInTimeRangeBuggy() {
+
+$input = <<<BLA
+BEGIN:VCALENDAR
+BEGIN:VTODO
+DTSTAMP:20121003T064931Z
+UID:b848cb9a7bb16e464a06c222ca1f8102@examle.com
+STATUS:NEEDS-ACTION
+DUE:20121005T000000Z
+SUMMARY:Task 1
+CATEGORIES:AlarmCategory
+BEGIN:VALARM
+TRIGGER:-PT10M
+ACTION:DISPLAY
+DESCRIPTION:Task 1
+END:VALARM
+END:VTODO
+END:VCALENDAR
+BLA;
+
+ $vobj = Reader::read($input);
+
+ $this->assertTrue($vobj->VTODO->VALARM->isInTimeRange(new \DateTime('2012-10-01 00:00:00'), new \DateTime('2012-11-01 00:00:00')));
+
+ }
+}
+
diff --git a/vendor/sabre/vobject/tests/Sabre/VObject/Component/VCalendarTest.php b/vendor/sabre/vobject/tests/Sabre/VObject/Component/VCalendarTest.php
new file mode 100644
index 000000000..1d7e0c603
--- /dev/null
+++ b/vendor/sabre/vobject/tests/Sabre/VObject/Component/VCalendarTest.php
@@ -0,0 +1,244 @@
+<?php
+
+namespace Sabre\VObject\Component;
+
+use Sabre\VObject;
+
+class VCalendarTest extends \PHPUnit_Framework_TestCase {
+
+ /**
+ * @dataProvider expandData
+ */
+ public function testExpand($input, $output) {
+
+ $vcal = VObject\Reader::read($input);
+ $vcal->expand(
+ new \DateTime('2011-12-01'),
+ new \DateTime('2011-12-31')
+ );
+
+ // This will normalize the output
+ $output = VObject\Reader::read($output)->serialize();
+
+ $this->assertEquals($output, $vcal->serialize());
+
+ }
+
+ public function expandData() {
+
+ $tests = array();
+
+ // No data
+ $input = 'BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+VERSION:2.0
+END:VCALENDAR
+';
+
+ $output = $input;
+ $tests[] = array($input,$output);
+
+
+ // Simple events
+ $input = 'BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+VERSION:2.0
+BEGIN:VEVENT
+UID:bla
+SUMMARY:InExpand
+DTSTART;VALUE=DATE:20111202
+END:VEVENT
+BEGIN:VEVENT
+UID:bla2
+SUMMARY:NotInExpand
+DTSTART;VALUE=DATE:20120101
+END:VEVENT
+END:VCALENDAR
+';
+
+ $output = 'BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+VERSION:2.0
+BEGIN:VEVENT
+UID:bla
+SUMMARY:InExpand
+DTSTART;VALUE=DATE:20111202
+END:VEVENT
+END:VCALENDAR
+';
+
+ $tests[] = array($input, $output);
+
+ // Removing timezone info
+ $input = 'BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+VERSION:2.0
+BEGIN:VTIMEZONE
+TZID:Europe/Paris
+END:VTIMEZONE
+BEGIN:VEVENT
+UID:bla4
+SUMMARY:RemoveTZ info
+DTSTART;TZID=Europe/Paris:20111203T130102
+END:VEVENT
+END:VCALENDAR
+';
+
+ $output = 'BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+VERSION:2.0
+BEGIN:VEVENT
+UID:bla4
+SUMMARY:RemoveTZ info
+DTSTART;VALUE=DATE-TIME:20111203T120102Z
+END:VEVENT
+END:VCALENDAR
+';
+
+ $tests[] = array($input, $output);
+
+ // Recurrence rule
+ $input = 'BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+VERSION:2.0
+BEGIN:VEVENT
+UID:bla6
+SUMMARY:Testing RRule
+DTSTART:20111125T120000Z
+DTEND:20111125T130000Z
+RRULE:FREQ=WEEKLY
+END:VEVENT
+END:VCALENDAR
+';
+
+ $output = 'BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+VERSION:2.0
+BEGIN:VEVENT
+UID:bla6
+SUMMARY:Testing RRule
+DTSTART;VALUE=DATE-TIME:20111202T120000Z
+DTEND;VALUE=DATE-TIME:20111202T130000Z
+RECURRENCE-ID:20111202T120000Z
+END:VEVENT
+BEGIN:VEVENT
+UID:bla6
+SUMMARY:Testing RRule
+DTSTART;VALUE=DATE-TIME:20111209T120000Z
+DTEND;VALUE=DATE-TIME:20111209T130000Z
+RECURRENCE-ID:20111209T120000Z
+END:VEVENT
+BEGIN:VEVENT
+UID:bla6
+SUMMARY:Testing RRule
+DTSTART;VALUE=DATE-TIME:20111216T120000Z
+DTEND;VALUE=DATE-TIME:20111216T130000Z
+RECURRENCE-ID:20111216T120000Z
+END:VEVENT
+BEGIN:VEVENT
+UID:bla6
+SUMMARY:Testing RRule
+DTSTART;VALUE=DATE-TIME:20111223T120000Z
+DTEND;VALUE=DATE-TIME:20111223T130000Z
+RECURRENCE-ID:20111223T120000Z
+END:VEVENT
+BEGIN:VEVENT
+UID:bla6
+SUMMARY:Testing RRule
+DTSTART;VALUE=DATE-TIME:20111230T120000Z
+DTEND;VALUE=DATE-TIME:20111230T130000Z
+RECURRENCE-ID:20111230T120000Z
+END:VEVENT
+END:VCALENDAR
+';
+
+ // Recurrence rule + override
+ $input = 'BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+VERSION:2.0
+BEGIN:VEVENT
+UID:bla6
+SUMMARY:Testing RRule2
+DTSTART:20111125T120000Z
+DTEND:20111125T130000Z
+RRULE:FREQ=WEEKLY
+END:VEVENT
+BEGIN:VEVENT
+UID:bla6
+RECURRENCE-ID:20111209T120000Z
+DTSTART:20111209T140000Z
+DTEND:20111209T150000Z
+SUMMARY:Override!
+END:VEVENT
+END:VCALENDAR
+';
+
+ $output = 'BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+VERSION:2.0
+BEGIN:VEVENT
+UID:bla6
+SUMMARY:Testing RRule2
+DTSTART;VALUE=DATE-TIME:20111202T120000Z
+DTEND;VALUE=DATE-TIME:20111202T130000Z
+RECURRENCE-ID:20111202T120000Z
+END:VEVENT
+BEGIN:VEVENT
+UID:bla6
+RECURRENCE-ID:20111209T120000Z
+DTSTART:20111209T140000Z
+DTEND:20111209T150000Z
+SUMMARY:Override!
+END:VEVENT
+BEGIN:VEVENT
+UID:bla6
+SUMMARY:Testing RRule2
+DTSTART;VALUE=DATE-TIME:20111216T120000Z
+DTEND;VALUE=DATE-TIME:20111216T130000Z
+RECURRENCE-ID:20111216T120000Z
+END:VEVENT
+BEGIN:VEVENT
+UID:bla6
+SUMMARY:Testing RRule2
+DTSTART;VALUE=DATE-TIME:20111223T120000Z
+DTEND;VALUE=DATE-TIME:20111223T130000Z
+RECURRENCE-ID:20111223T120000Z
+END:VEVENT
+BEGIN:VEVENT
+UID:bla6
+SUMMARY:Testing RRule2
+DTSTART;VALUE=DATE-TIME:20111230T120000Z
+DTEND;VALUE=DATE-TIME:20111230T130000Z
+RECURRENCE-ID:20111230T120000Z
+END:VEVENT
+END:VCALENDAR
+';
+
+ $tests[] = array($input, $output);
+ return $tests;
+
+ }
+
+ /**
+ * @expectedException LogicException
+ */
+ public function testBrokenEventExpand() {
+
+ $input = 'BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+VERSION:2.0
+BEGIN:VEVENT
+RRULE:FREQ=WEEKLY
+DTSTART;VALUE=DATE:20111202
+END:VEVENT
+END:VCALENDAR
+';
+ $vcal = VObject\Reader::read($input);
+ $vcal->expand(
+ new \DateTime('2011-12-01'),
+ new \DateTime('2011-12-31')
+ );
+
+ }
+
+}
diff --git a/vendor/sabre/vobject/tests/Sabre/VObject/Component/VCardTest.php b/vendor/sabre/vobject/tests/Sabre/VObject/Component/VCardTest.php
new file mode 100644
index 000000000..584a007d9
--- /dev/null
+++ b/vendor/sabre/vobject/tests/Sabre/VObject/Component/VCardTest.php
@@ -0,0 +1,100 @@
+<?php
+
+namespace Sabre\VObject\Component;
+
+use Sabre\VObject;
+
+class VCardTest extends \PHPUnit_Framework_TestCase {
+
+ /**
+ * @dataProvider validateData
+ */
+ function testValidate($input, $expectedWarnings, $expectedRepairedOutput) {
+
+ $vcard = VObject\Reader::read($input);
+
+ $warnings = $vcard->validate();
+
+ $warnMsg = array();
+ foreach($warnings as $warning) {
+ $warnMsg[] = $warning['message'];
+ }
+
+ $this->assertEquals($expectedWarnings, $warnMsg);
+
+ $vcard->validate(VObject\Component::REPAIR);
+
+ $this->assertEquals(
+ $expectedRepairedOutput,
+ $vcard->serialize()
+ );
+
+ }
+
+ public function validateData() {
+
+ $tests = array();
+
+ // Correct
+ $tests[] = array(
+ "BEGIN:VCARD\r\nVERSION:4.0\r\nFN:John Doe\r\nEND:VCARD\r\n",
+ array(),
+ "BEGIN:VCARD\r\nVERSION:4.0\r\nFN:John Doe\r\nEND:VCARD\r\n",
+ );
+
+ // No VERSION
+ $tests[] = array(
+ "BEGIN:VCARD\r\nFN:John Doe\r\nEND:VCARD\r\n",
+ array(
+ 'The VERSION property must appear in the VCARD component exactly 1 time',
+ ),
+ "BEGIN:VCARD\r\nVERSION:4.0\r\nFN:John Doe\r\nEND:VCARD\r\n",
+ );
+
+ // Unknown version
+ $tests[] = array(
+ "BEGIN:VCARD\r\nVERSION:2.2\r\nFN:John Doe\r\nEND:VCARD\r\n",
+ array(
+ 'Only vcard version 4.0 (RFC6350), version 3.0 (RFC2426) or version 2.1 (icm-vcard-2.1) are supported.',
+ ),
+ "BEGIN:VCARD\r\nVERSION:4.0\r\nFN:John Doe\r\nEND:VCARD\r\n",
+ );
+
+ // No FN
+ $tests[] = array(
+ "BEGIN:VCARD\r\nVERSION:4.0\r\nEND:VCARD\r\n",
+ array(
+ 'The FN property must appear in the VCARD component exactly 1 time',
+ ),
+ "BEGIN:VCARD\r\nVERSION:4.0\r\nEND:VCARD\r\n",
+ );
+ // No FN, N fallback
+ $tests[] = array(
+ "BEGIN:VCARD\r\nVERSION:4.0\r\nN:Doe;John;;;;;\r\nEND:VCARD\r\n",
+ array(
+ 'The FN property must appear in the VCARD component exactly 1 time',
+ ),
+ "BEGIN:VCARD\r\nVERSION:4.0\r\nN:Doe;John;;;;;\r\nFN:John Doe\r\nEND:VCARD\r\n",
+ );
+ // No FN, N fallback, no first name
+ $tests[] = array(
+ "BEGIN:VCARD\r\nVERSION:4.0\r\nN:Doe;;;;;;\r\nEND:VCARD\r\n",
+ array(
+ 'The FN property must appear in the VCARD component exactly 1 time',
+ ),
+ "BEGIN:VCARD\r\nVERSION:4.0\r\nN:Doe;;;;;;\r\nFN:Doe\r\nEND:VCARD\r\n",
+ );
+
+ // No FN, ORG fallback
+ $tests[] = array(
+ "BEGIN:VCARD\r\nVERSION:4.0\r\nORG:Acme Co.\r\nEND:VCARD\r\n",
+ array(
+ 'The FN property must appear in the VCARD component exactly 1 time',
+ ),
+ "BEGIN:VCARD\r\nVERSION:4.0\r\nORG:Acme Co.\r\nFN:Acme Co.\r\nEND:VCARD\r\n",
+ );
+ return $tests;
+
+ }
+
+}
diff --git a/vendor/sabre/vobject/tests/Sabre/VObject/Component/VEventTest.php b/vendor/sabre/vobject/tests/Sabre/VObject/Component/VEventTest.php
new file mode 100644
index 000000000..616da4ac7
--- /dev/null
+++ b/vendor/sabre/vobject/tests/Sabre/VObject/Component/VEventTest.php
@@ -0,0 +1,74 @@
+<?php
+
+namespace Sabre\VObject\Component;
+
+use Sabre\VObject;
+
+class VEventTest extends \PHPUnit_Framework_TestCase {
+
+ /**
+ * @dataProvider timeRangeTestData
+ */
+ public function testInTimeRange(VEvent $vevent,$start,$end,$outcome) {
+
+ $this->assertEquals($outcome, $vevent->isInTimeRange($start, $end));
+
+ }
+
+ public function timeRangeTestData() {
+
+ $tests = array();
+
+ $vevent = new VEvent('VEVENT');
+ $vevent->DTSTART = '20111223T120000Z';
+ $tests[] = array($vevent, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true);
+ $tests[] = array($vevent, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false);
+
+ $vevent2 = clone $vevent;
+ $vevent2->DTEND = '20111225T120000Z';
+ $tests[] = array($vevent2, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true);
+ $tests[] = array($vevent2, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false);
+
+ $vevent3 = clone $vevent;
+ $vevent3->DURATION = 'P1D';
+ $tests[] = array($vevent3, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true);
+ $tests[] = array($vevent3, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false);
+
+ $vevent4 = clone $vevent;
+ $vevent4->DTSTART = '20111225';
+ $vevent4->DTSTART['VALUE'] = 'DATE';
+ $tests[] = array($vevent4, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true);
+ $tests[] = array($vevent4, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false);
+ // Event with no end date should be treated as lasting the entire day.
+ $tests[] = array($vevent4, new \DateTime('2011-12-25 16:00:00'), new \DateTime('2011-12-25 17:00:00'), true);
+
+
+ $vevent5 = clone $vevent;
+ $vevent5->DURATION = 'P1D';
+ $vevent5->RRULE = 'FREQ=YEARLY';
+ $tests[] = array($vevent5, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true);
+ $tests[] = array($vevent5, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false);
+ $tests[] = array($vevent5, new \DateTime('2013-12-01'), new \DateTime('2013-12-31'), true);
+
+ $vevent6 = clone $vevent;
+ $vevent6->DTSTART = '20111225';
+ $vevent6->DTSTART['VALUE'] = 'DATE';
+ $vevent6->DTEND = '20111225';
+ $vevent6->DTEND['VALUE'] = 'DATE';
+
+ $tests[] = array($vevent6, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true);
+ $tests[] = array($vevent6, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false);
+
+ // Added this test to ensure that recurrence rules with no DTEND also
+ // get checked for the entire day.
+ $vevent7 = clone $vevent;
+ $vevent7->DTSTART = '20120101';
+ $vevent7->DTSTART['VALUE'] = 'DATE';
+ $vevent7->RRULE = 'FREQ=MONTHLY';
+ $tests[] = array($vevent7, new \DateTime('2012-02-01 15:00:00'), new \DateTime('2012-02-02'), true);
+ return $tests;
+
+ }
+
+}
+
diff --git a/vendor/sabre/vobject/tests/Sabre/VObject/Component/VFreeBusyTest.php b/vendor/sabre/vobject/tests/Sabre/VObject/Component/VFreeBusyTest.php
new file mode 100644
index 000000000..031c3c684
--- /dev/null
+++ b/vendor/sabre/vobject/tests/Sabre/VObject/Component/VFreeBusyTest.php
@@ -0,0 +1,39 @@
+<?php
+
+namespace Sabre\VObject\Component;
+use Sabre\VObject;
+
+class VFreeBusyTest extends \PHPUnit_Framework_TestCase {
+
+ function testIsFree() {
+
+ $input = <<<BLA
+BEGIN:VCALENDAR
+BEGIN:VFREEBUSY
+FREEBUSY;FBTYPE=FREE:20120912T000500Z/PT1H
+FREEBUSY;FBTYPE=BUSY:20120912T010000Z/20120912T020000Z
+FREEBUSY;FBTYPE=BUSY-TENTATIVE:20120912T020000Z/20120912T030000Z
+FREEBUSY;FBTYPE=BUSY-UNAVAILABLE:20120912T030000Z/20120912T040000Z
+FREEBUSY;FBTYPE=BUSY:20120912T050000Z/20120912T060000Z,20120912T080000Z/20120912T090000Z
+FREEBUSY;FBTYPE=BUSY:20120912T100000Z/PT1H
+END:VFREEBUSY
+END:VCALENDAR
+BLA;
+
+ $obj = VObject\Reader::read($input);
+ $vfb = $obj->VFREEBUSY;
+
+ $tz = new \DateTimeZone('UTC');
+
+ $this->assertFalse($vfb->isFree(new \DateTime('2012-09-12 01:15:00', $tz), new \DateTime('2012-09-12 01:45:00', $tz)));
+ $this->assertFalse($vfb->isFree(new \DateTime('2012-09-12 08:05:00', $tz), new \DateTime('2012-09-12 08:10:00', $tz)));
+ $this->assertFalse($vfb->isFree(new \DateTime('2012-09-12 10:15:00', $tz), new \DateTime('2012-09-12 10:45:00', $tz)));
+
+ // Checking whether the end time is treated as non-inclusive
+ $this->assertTrue($vfb->isFree(new \DateTime('2012-09-12 09:00:00', $tz), new \DateTime('2012-09-12 09:15:00', $tz)));
+ $this->assertTrue($vfb->isFree(new \DateTime('2012-09-12 09:45:00', $tz), new \DateTime('2012-09-12 10:00:00', $tz)));
+ $this->assertTrue($vfb->isFree(new \DateTime('2012-09-12 11:00:00', $tz), new \DateTime('2012-09-12 12:00:00', $tz)));
+
+ }
+
+}
diff --git a/vendor/sabre/vobject/tests/Sabre/VObject/Component/VJournalTest.php b/vendor/sabre/vobject/tests/Sabre/VObject/Component/VJournalTest.php
new file mode 100644
index 000000000..46ecb992b
--- /dev/null
+++ b/vendor/sabre/vobject/tests/Sabre/VObject/Component/VJournalTest.php
@@ -0,0 +1,41 @@
+<?php
+
+namespace Sabre\VObject\Component;
+
+use Sabre\VObject\Component;
+
+class VJournalTest extends \PHPUnit_Framework_TestCase {
+
+ /**
+ * @dataProvider timeRangeTestData
+ */
+ public function testInTimeRange(VJournal $vtodo,$start,$end,$outcome) {
+
+ $this->assertEquals($outcome, $vtodo->isInTimeRange($start, $end));
+
+ }
+
+ public function timeRangeTestData() {
+
+ $tests = array();
+
+ $vjournal = Component::create('VJOURNAL');
+ $vjournal->DTSTART = '20111223T120000Z';
+ $tests[] = array($vjournal, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true);
+ $tests[] = array($vjournal, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false);
+
+ $vjournal2 = Component::create('VJOURNAL');
+ $vjournal2->DTSTART = '20111223';
+ $vjournal2->DTSTART['VALUE'] = 'DATE';
+ $tests[] = array($vjournal2, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true);
+ $tests[] = array($vjournal2, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false);
+
+ $vjournal3 = Component::create('VJOURNAL');
+ $tests[] = array($vjournal3, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), false);
+ $tests[] = array($vjournal3, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false);
+
+ return $tests;
+ }
+
+}
+
diff --git a/vendor/sabre/vobject/tests/Sabre/VObject/Component/VTodoTest.php b/vendor/sabre/vobject/tests/Sabre/VObject/Component/VTodoTest.php
new file mode 100644
index 000000000..a84da5cdf
--- /dev/null
+++ b/vendor/sabre/vobject/tests/Sabre/VObject/Component/VTodoTest.php
@@ -0,0 +1,67 @@
+<?php
+
+namespace Sabre\VObject\Component;
+
+use Sabre\VObject\Component;
+
+class VTodoTest extends \PHPUnit_Framework_TestCase {
+
+ /**
+ * @dataProvider timeRangeTestData
+ */
+ public function testInTimeRange(VTodo $vtodo,$start,$end,$outcome) {
+
+ $this->assertEquals($outcome, $vtodo->isInTimeRange($start, $end));
+
+ }
+
+ public function timeRangeTestData() {
+
+ $tests = array();
+
+ $vtodo = Component::create('VTODO');
+ $vtodo->DTSTART = '20111223T120000Z';
+ $tests[] = array($vtodo, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true);
+ $tests[] = array($vtodo, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false);
+
+ $vtodo2 = clone $vtodo;
+ $vtodo2->DURATION = 'P1D';
+ $tests[] = array($vtodo2, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true);
+ $tests[] = array($vtodo2, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false);
+
+ $vtodo3 = clone $vtodo;
+ $vtodo3->DUE = '20111225';
+ $tests[] = array($vtodo3, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true);
+ $tests[] = array($vtodo3, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false);
+
+ $vtodo4 = Component::create('VTODO');
+ $vtodo4->DUE = '20111225';
+ $tests[] = array($vtodo4, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true);
+ $tests[] = array($vtodo4, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false);
+
+ $vtodo5 = Component::create('VTODO');
+ $vtodo5->COMPLETED = '20111225';
+ $tests[] = array($vtodo5, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true);
+ $tests[] = array($vtodo5, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false);
+
+ $vtodo6 = Component::create('VTODO');
+ $vtodo6->CREATED = '20111225';
+ $tests[] = array($vtodo6, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true);
+ $tests[] = array($vtodo6, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false);
+
+ $vtodo7 = Component::create('VTODO');
+ $vtodo7->CREATED = '20111225';
+ $vtodo7->COMPLETED = '20111226';
+ $tests[] = array($vtodo7, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true);
+ $tests[] = array($vtodo7, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), false);
+
+ $vtodo7 = Component::create('VTODO');
+ $tests[] = array($vtodo7, new \DateTime('2011-01-01'), new \DateTime('2012-01-01'), true);
+ $tests[] = array($vtodo7, new \DateTime('2011-01-01'), new \DateTime('2011-11-01'), true);
+
+ return $tests;
+
+ }
+
+}
+