assertEquals('+1 weeks', Sabre_CalDAV_XMLUtil::parseICalendarDuration('P1W')); $this->assertEquals('+5 days', Sabre_CalDAV_XMLUtil::parseICalendarDuration('P5D')); $this->assertEquals('+5 days 3 hours 50 minutes 12 seconds', Sabre_CalDAV_XMLUtil::parseICalendarDuration('P5DT3H50M12S')); $this->assertEquals('-1 weeks 50 minutes', Sabre_CalDAV_XMLUtil::parseICalendarDuration('-P1WT50M')); $this->assertEquals('+50 days 3 hours 2 seconds', Sabre_CalDAV_XMLUtil::parseICalendarDuration('+P50DT3H2S')); } /** * @expectedException Sabre_DAV_Exception_BadRequest */ function testParseICalendarDurationFail() { Sabre_CalDAV_XMLUtil::parseICalendarDuration('P1X'); } function testCompFilter() { $xml = << XML; $dom = Sabre_DAV_XMLUtil::loadDOMDocument($xml); $expected = array( '/c:iCalendar/c:vcalendar' => array(), '/c:iCalendar/c:vcalendar/c:vevent' => array(), ); $result = Sabre_CalDAV_XMLUtil::parseCalendarQueryFilters($dom->firstChild); $this->assertEquals($expected, $result); } /** * @depends testCompFilter * @depends testParseICalendarDuration */ function testTimeRangeEvent() { $xml = << XML; $dom = Sabre_DAV_XMLUtil::loadDOMDocument($xml); $expected = array( '/c:iCalendar/c:vcalendar' => array(), '/c:iCalendar/c:vcalendar/c:vevent' => array( 'time-range' => array( 'start' => new DateTime('2006-01-04 00:00:00',new DateTimeZone('UTC')), 'end' => new DateTime('2006-01-05 00:00:00',new DateTimeZone('UTC')), ), ), ); $filters = Sabre_CalDAV_XMLUtil::parseCalendarQueryFilters($dom->firstChild); $this->assertEquals($expected, $filters); } /** * @depends testCompFilter * @depends testParseICalendarDuration * @depends testTimeRangeEvent */ function testTimeRangeTodo() { $xml = << XML; $dom = Sabre_DAV_XMLUtil::loadDOMDocument($xml); $expected = array( '/c:iCalendar/c:vcalendar' => array(), '/c:iCalendar/c:vcalendar/c:vtodo' => array( 'time-range' => array( 'start' => new DateTime('2006-01-01 00:00:00',new DateTimeZone('UTC')), 'end' => new DateTime('2007-01-01 00:00:00', new DateTimeZone('UTC')), ), ), ); $filters = Sabre_CalDAV_XMLUtil::parseCalendarQueryFilters($dom->firstChild); $this->assertEquals($expected, $filters); } /** * @depends testCompFilter */ function testPropFilter() { $xml = << DC6C50A017428C5216A2F1CD@example.com XML; $dom = Sabre_DAV_XMLUtil::loadDOMDocument($xml); $expected = array( '/c:iCalendar/c:vcalendar' => array(), '/c:iCalendar/c:vcalendar/c:vevent' => array(), '/c:iCalendar/c:vcalendar/c:vevent/c:uid' => array( 'text-match' => array( 'collation' => 'i;octet', 'value' => 'DC6C50A017428C5216A2F1CD@example.com', 'negate-condition' => false, ), ), ); $filters = Sabre_CalDAV_XMLUtil::parseCalendarQueryFilters($dom->firstChild); $this->assertEquals($expected, $filters); } /** * @depends testPropFilter */ function testParamFilter() { $xml = << mailto:lisa@example.com needs-action XML; $dom = Sabre_DAV_XMLUtil::loadDOMDocument($xml); $expected = array( '/c:iCalendar/c:vcalendar' => array(), '/c:iCalendar/c:vcalendar/c:vevent' => array(), '/c:iCalendar/c:vcalendar/c:vevent/c:attendee' => array( 'text-match' => array( 'collation' => 'i;ascii-casemap', 'negate-condition' => false, 'value' => 'mailto:lisa@example.com', ), ), '/c:iCalendar/c:vcalendar/c:vevent/c:attendee/@partstat' => array( 'text-match' => array( 'collation' => 'i;ascii-casemap', 'negate-condition' => false, 'value' => 'needs-action', ), ), ); $result = Sabre_CalDAV_XMLUtil::parseCalendarQueryFilters($dom->firstChild); $this->assertEquals($expected, $result); } /** * @depends testParamFilter */ function testUndefinedNegation() { $xml = << CANCELLED XML; $dom = Sabre_DAV_XMLUtil::loadDOMDocument($xml); $expected = array( '/c:iCalendar/c:vcalendar' => array(), '/c:iCalendar/c:vcalendar/c:vtodo' => array(), '/c:iCalendar/c:vcalendar/c:vtodo/c:completed' => array( 'is-not-defined' => true, ), '/c:iCalendar/c:vcalendar/c:vtodo/c:status' => array( 'text-match' => array( 'collation' => 'i;ascii-casemap', 'negate-condition' => true, 'value' => 'CANCELLED', ), ), ); $result = Sabre_CalDAV_XMLUtil::parseCalendarQueryFilters($dom->firstChild); $this->assertEquals($expected, $result); } function testParseICalendarDateTime() { $dateTime = Sabre_CalDAV_XMLUtil::parseICalendarDateTime('20100316T141405'); $compare = new DateTime('2010-03-16 14:14:05',new DateTimeZone('UTC')); $this->assertEquals($compare, $dateTime); } /** * @depends testParseICalendarDateTime * @expectedException Sabre_DAV_Exception_BadRequest */ function testParseICalendarDateTimeBadFormat() { $dateTime = Sabre_CalDAV_XMLUtil::parseICalendarDateTime('20100316T141405 '); } /** * @depends testParseICalendarDateTime */ function testParseICalendarDateTimeUTC() { $dateTime = Sabre_CalDAV_XMLUtil::parseICalendarDateTime('20100316T141405Z'); $compare = new DateTime('2010-03-16 14:14:05',new DateTimeZone('UTC')); $this->assertEquals($compare, $dateTime); } /** * @depends testParseICalendarDateTime */ function testParseICalendarDateTimeUTC2() { $dateTime = Sabre_CalDAV_XMLUtil::parseICalendarDateTime('20101211T160000Z'); $compare = new DateTime('2010-12-11 16:00:00',new DateTimeZone('UTC')); $this->assertEquals($compare, $dateTime); } /** * @depends testParseICalendarDateTime */ function testParseICalendarDateTimeCustomTimeZone() { $dateTime = Sabre_CalDAV_XMLUtil::parseICalendarDateTime('20100316T141405', new DateTimeZone('Europe/Amsterdam')); $compare = new DateTime('2010-03-16 13:14:05',new DateTimeZone('UTC')); $this->assertEquals($compare, $dateTime); } function testParseICalendarDate() { $dateTime = Sabre_CalDAV_XMLUtil::parseICalendarDate('20100316'); $compare = new DateTime('2010-03-16 00:00:00',new DateTimeZone('UTC')); $this->assertEquals($compare, $dateTime); } /** * @depends testParseICalendarDate * @expectedException Sabre_DAV_Exception_BadRequest */ function testParseICalendarDateBadFormat() { $dateTime = Sabre_CalDAV_XMLUtil::parseICalendarDate('20100316T141405'); } }