1*a1a3b679SAndreas Boehler<?php 2*a1a3b679SAndreas Boehler 3*a1a3b679SAndreas Boehlernamespace Sabre\CalDAV; 4*a1a3b679SAndreas Boehleruse Sabre\VObject; 5*a1a3b679SAndreas Boehleruse Sabre\DAV; 6*a1a3b679SAndreas Boehler 7*a1a3b679SAndreas Boehlerclass Issue172Test extends \PHPUnit_Framework_TestCase { 8*a1a3b679SAndreas Boehler 9*a1a3b679SAndreas Boehler // DateTimeZone() native name: America/Los_Angeles (GMT-8 in January) 10*a1a3b679SAndreas Boehler function testBuiltInTimezoneName() { 11*a1a3b679SAndreas Boehler $input = <<<HI 12*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR 13*a1a3b679SAndreas BoehlerVERSION:2.0 14*a1a3b679SAndreas BoehlerBEGIN:VEVENT 15*a1a3b679SAndreas BoehlerDTSTART;TZID=America/Los_Angeles:20120118T204500 16*a1a3b679SAndreas BoehlerDTEND;TZID=America/Los_Angeles:20120118T214500 17*a1a3b679SAndreas BoehlerEND:VEVENT 18*a1a3b679SAndreas BoehlerEND:VCALENDAR 19*a1a3b679SAndreas BoehlerHI; 20*a1a3b679SAndreas Boehler $validator = new CalendarQueryValidator(); 21*a1a3b679SAndreas Boehler $filters = array( 22*a1a3b679SAndreas Boehler 'name' => 'VCALENDAR', 23*a1a3b679SAndreas Boehler 'comp-filters' => array( 24*a1a3b679SAndreas Boehler array( 25*a1a3b679SAndreas Boehler 'name' => 'VEVENT', 26*a1a3b679SAndreas Boehler 'comp-filters' => array(), 27*a1a3b679SAndreas Boehler 'prop-filters' => array(), 28*a1a3b679SAndreas Boehler 'is-not-defined' => false, 29*a1a3b679SAndreas Boehler 'time-range' => array( 30*a1a3b679SAndreas Boehler 'start' => new \DateTime('2012-01-18 21:00:00 GMT-08:00'), 31*a1a3b679SAndreas Boehler 'end' => new \DateTime('2012-01-18 21:00:00 GMT-08:00'), 32*a1a3b679SAndreas Boehler ), 33*a1a3b679SAndreas Boehler ), 34*a1a3b679SAndreas Boehler ), 35*a1a3b679SAndreas Boehler 'prop-filters' => array(), 36*a1a3b679SAndreas Boehler ); 37*a1a3b679SAndreas Boehler $input = VObject\Reader::read($input); 38*a1a3b679SAndreas Boehler $this->assertTrue($validator->validate($input,$filters)); 39*a1a3b679SAndreas Boehler } 40*a1a3b679SAndreas Boehler 41*a1a3b679SAndreas Boehler // Pacific Standard Time, translates to America/Los_Angeles (GMT-8 in January) 42*a1a3b679SAndreas Boehler function testOutlookTimezoneName() { 43*a1a3b679SAndreas Boehler $input = <<<HI 44*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR 45*a1a3b679SAndreas BoehlerVERSION:2.0 46*a1a3b679SAndreas BoehlerBEGIN:VTIMEZONE 47*a1a3b679SAndreas BoehlerTZID:Pacific Standard Time 48*a1a3b679SAndreas BoehlerBEGIN:STANDARD 49*a1a3b679SAndreas BoehlerDTSTART:16010101T030000 50*a1a3b679SAndreas BoehlerTZOFFSETFROM:+0200 51*a1a3b679SAndreas BoehlerTZOFFSETTO:+0100 52*a1a3b679SAndreas BoehlerRRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 53*a1a3b679SAndreas BoehlerEND:STANDARD 54*a1a3b679SAndreas BoehlerBEGIN:DAYLIGHT 55*a1a3b679SAndreas BoehlerDTSTART:16010101T020000 56*a1a3b679SAndreas BoehlerTZOFFSETFROM:+0100 57*a1a3b679SAndreas BoehlerTZOFFSETTO:+0200 58*a1a3b679SAndreas BoehlerRRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3 59*a1a3b679SAndreas BoehlerEND:DAYLIGHT 60*a1a3b679SAndreas BoehlerEND:VTIMEZONE 61*a1a3b679SAndreas BoehlerBEGIN:VEVENT 62*a1a3b679SAndreas BoehlerDTSTART;TZID=Pacific Standard Time:20120113T100000 63*a1a3b679SAndreas BoehlerDTEND;TZID=Pacific Standard Time:20120113T110000 64*a1a3b679SAndreas BoehlerEND:VEVENT 65*a1a3b679SAndreas BoehlerEND:VCALENDAR 66*a1a3b679SAndreas BoehlerHI; 67*a1a3b679SAndreas Boehler $validator = new CalendarQueryValidator(); 68*a1a3b679SAndreas Boehler $filters = array( 69*a1a3b679SAndreas Boehler 'name' => 'VCALENDAR', 70*a1a3b679SAndreas Boehler 'comp-filters' => array( 71*a1a3b679SAndreas Boehler array( 72*a1a3b679SAndreas Boehler 'name' => 'VEVENT', 73*a1a3b679SAndreas Boehler 'comp-filters' => array(), 74*a1a3b679SAndreas Boehler 'prop-filters' => array(), 75*a1a3b679SAndreas Boehler 'is-not-defined' => false, 76*a1a3b679SAndreas Boehler 'time-range' => array( 77*a1a3b679SAndreas Boehler 'start' => new \DateTime('2012-01-13 10:30:00 GMT-08:00'), 78*a1a3b679SAndreas Boehler 'end' => new \DateTime('2012-01-13 10:30:00 GMT-08:00'), 79*a1a3b679SAndreas Boehler ), 80*a1a3b679SAndreas Boehler ), 81*a1a3b679SAndreas Boehler ), 82*a1a3b679SAndreas Boehler 'prop-filters' => array(), 83*a1a3b679SAndreas Boehler ); 84*a1a3b679SAndreas Boehler $input = VObject\Reader::read($input); 85*a1a3b679SAndreas Boehler $this->assertTrue($validator->validate($input,$filters)); 86*a1a3b679SAndreas Boehler } 87*a1a3b679SAndreas Boehler 88*a1a3b679SAndreas Boehler // X-LIC-LOCATION, translates to America/Los_Angeles (GMT-8 in January) 89*a1a3b679SAndreas Boehler function testLibICalLocationName() { 90*a1a3b679SAndreas Boehler $input = <<<HI 91*a1a3b679SAndreas BoehlerBEGIN:VCALENDAR 92*a1a3b679SAndreas BoehlerVERSION:2.0 93*a1a3b679SAndreas BoehlerBEGIN:VTIMEZONE 94*a1a3b679SAndreas BoehlerTZID:My own timezone name 95*a1a3b679SAndreas BoehlerX-LIC-LOCATION:America/Los_Angeles 96*a1a3b679SAndreas BoehlerBEGIN:STANDARD 97*a1a3b679SAndreas BoehlerDTSTART:16010101T030000 98*a1a3b679SAndreas BoehlerTZOFFSETFROM:+0200 99*a1a3b679SAndreas BoehlerTZOFFSETTO:+0100 100*a1a3b679SAndreas BoehlerRRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 101*a1a3b679SAndreas BoehlerEND:STANDARD 102*a1a3b679SAndreas BoehlerBEGIN:DAYLIGHT 103*a1a3b679SAndreas BoehlerDTSTART:16010101T020000 104*a1a3b679SAndreas BoehlerTZOFFSETFROM:+0100 105*a1a3b679SAndreas BoehlerTZOFFSETTO:+0200 106*a1a3b679SAndreas BoehlerRRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3 107*a1a3b679SAndreas BoehlerEND:DAYLIGHT 108*a1a3b679SAndreas BoehlerEND:VTIMEZONE 109*a1a3b679SAndreas BoehlerBEGIN:VEVENT 110*a1a3b679SAndreas BoehlerDTSTART;TZID=My own timezone name:20120113T100000 111*a1a3b679SAndreas BoehlerDTEND;TZID=My own timezone name:20120113T110000 112*a1a3b679SAndreas BoehlerEND:VEVENT 113*a1a3b679SAndreas BoehlerEND:VCALENDAR 114*a1a3b679SAndreas BoehlerHI; 115*a1a3b679SAndreas Boehler $validator = new CalendarQueryValidator(); 116*a1a3b679SAndreas Boehler $filters = array( 117*a1a3b679SAndreas Boehler 'name' => 'VCALENDAR', 118*a1a3b679SAndreas Boehler 'comp-filters' => array( 119*a1a3b679SAndreas Boehler array( 120*a1a3b679SAndreas Boehler 'name' => 'VEVENT', 121*a1a3b679SAndreas Boehler 'comp-filters' => array(), 122*a1a3b679SAndreas Boehler 'prop-filters' => array(), 123*a1a3b679SAndreas Boehler 'is-not-defined' => false, 124*a1a3b679SAndreas Boehler 'time-range' => array( 125*a1a3b679SAndreas Boehler 'start' => new \DateTime('2012-01-13 10:30:00 GMT-08:00'), 126*a1a3b679SAndreas Boehler 'end' => new \DateTime('2012-01-13 10:30:00 GMT-08:00'), 127*a1a3b679SAndreas Boehler ), 128*a1a3b679SAndreas Boehler ), 129*a1a3b679SAndreas Boehler ), 130*a1a3b679SAndreas Boehler 'prop-filters' => array(), 131*a1a3b679SAndreas Boehler ); 132*a1a3b679SAndreas Boehler $input = VObject\Reader::read($input); 133*a1a3b679SAndreas Boehler $this->assertTrue($validator->validate($input,$filters)); 134*a1a3b679SAndreas Boehler } 135*a1a3b679SAndreas Boehler} 136