3 namespace Sabre\VObject;
9 class DateTimeParserTest extends \PHPUnit_Framework_TestCase {
11 function testParseICalendarDuration() {
13 $this->assertEquals('+1 weeks', DateTimeParser::parseDuration('P1W',true));
14 $this->assertEquals('+5 days', DateTimeParser::parseDuration('P5D',true));
15 $this->assertEquals('+5 days 3 hours 50 minutes 12 seconds', DateTimeParser::parseDuration('P5DT3H50M12S',true));
16 $this->assertEquals('-1 weeks 50 minutes', DateTimeParser::parseDuration('-P1WT50M',true));
17 $this->assertEquals('+50 days 3 hours 2 seconds', DateTimeParser::parseDuration('+P50DT3H2S',true));
18 $this->assertEquals(new DateInterval('PT0S'), DateTimeParser::parseDuration('PT0S'));
22 function testParseICalendarDurationDateInterval() {
24 $expected = new DateInterval('P7D');
25 $this->assertEquals($expected, DateTimeParser::parseDuration('P1W'));
26 $this->assertEquals($expected, DateTimeParser::parse('P1W'));
28 $expected = new DateInterval('PT3M');
29 $expected->invert = true;
30 $this->assertEquals($expected, DateTimeParser::parseDuration('-PT3M'));
35 * @expectedException LogicException
37 function testParseICalendarDurationFail() {
39 DateTimeParser::parseDuration('P1X',true);
43 function testParseICalendarDateTime() {
45 $dateTime = DateTimeParser::parseDateTime('20100316T141405');
47 $compare = new DateTime('2010-03-16 14:14:05',new DateTimeZone('UTC'));
49 $this->assertEquals($compare, $dateTime);
54 * @depends testParseICalendarDateTime
55 * @expectedException LogicException
57 function testParseICalendarDateTimeBadFormat() {
59 $dateTime = DateTimeParser::parseDateTime('20100316T141405 ');
64 * @depends testParseICalendarDateTime
66 function testParseICalendarDateTimeUTC() {
68 $dateTime = DateTimeParser::parseDateTime('20100316T141405Z');
70 $compare = new DateTime('2010-03-16 14:14:05',new DateTimeZone('UTC'));
71 $this->assertEquals($compare, $dateTime);
76 * @depends testParseICalendarDateTime
78 function testParseICalendarDateTimeUTC2() {
80 $dateTime = DateTimeParser::parseDateTime('20101211T160000Z');
82 $compare = new DateTime('2010-12-11 16:00:00',new DateTimeZone('UTC'));
83 $this->assertEquals($compare, $dateTime);
88 * @depends testParseICalendarDateTime
90 function testParseICalendarDateTimeCustomTimeZone() {
92 $dateTime = DateTimeParser::parseDateTime('20100316T141405', new DateTimeZone('Europe/Amsterdam'));
94 $compare = new DateTime('2010-03-16 13:14:05',new DateTimeZone('UTC'));
95 $this->assertEquals($compare, $dateTime);
99 function testParseICalendarDate() {
101 $dateTime = DateTimeParser::parseDate('20100316');
103 $expected = new DateTime('2010-03-16 00:00:00',new DateTimeZone('UTC'));
105 $this->assertEquals($expected, $dateTime);
107 $dateTime = DateTimeParser::parse('20100316');
108 $this->assertEquals($expected, $dateTime);
113 * @depends testParseICalendarDate
114 * @expectedException LogicException
116 function testParseICalendarDateBadFormat() {
118 $dateTime = DateTimeParser::parseDate('20100316T141405');