156 lines
3.3 KiB
PHP
156 lines
3.3 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace Sabre\VObject;
|
||
|
|
||
|
class TimezoneUtilTest extends \PHPUnit_Framework_TestCase {
|
||
|
|
||
|
/**
|
||
|
* @dataProvider getMapping
|
||
|
*/
|
||
|
function testCorrectTZ($timezoneName) {
|
||
|
|
||
|
$tz = new \DateTimeZone($timezoneName);
|
||
|
|
||
|
}
|
||
|
|
||
|
function getMapping() {
|
||
|
|
||
|
// PHPUNit requires an array of arrays
|
||
|
return array_map(
|
||
|
function($value) {
|
||
|
return array($value);
|
||
|
},
|
||
|
TimeZoneUtil::$map
|
||
|
);
|
||
|
|
||
|
}
|
||
|
|
||
|
function testExchangeMap() {
|
||
|
|
||
|
$vobj = <<<HI
|
||
|
BEGIN:VCALENDAR
|
||
|
METHOD:REQUEST
|
||
|
VERSION:2.0
|
||
|
BEGIN:VTIMEZONE
|
||
|
TZID:foo
|
||
|
X-MICROSOFT-CDO-TZID:2
|
||
|
BEGIN:STANDARD
|
||
|
DTSTART:16010101T030000
|
||
|
TZOFFSETFROM:+0200
|
||
|
TZOFFSETTO:+0100
|
||
|
RRULE:FREQ=YEARLY;WKST=MO;INTERVAL=1;BYMONTH=10;BYDAY=-1SU
|
||
|
END:STANDARD
|
||
|
BEGIN:DAYLIGHT
|
||
|
DTSTART:16010101T020000
|
||
|
TZOFFSETFROM:+0100
|
||
|
TZOFFSETTO:+0200
|
||
|
RRULE:FREQ=YEARLY;WKST=MO;INTERVAL=1;BYMONTH=3;BYDAY=-1SU
|
||
|
END:DAYLIGHT
|
||
|
END:VTIMEZONE
|
||
|
BEGIN:VEVENT
|
||
|
DTSTAMP:20120416T092149Z
|
||
|
DTSTART;TZID="foo":20120418T1
|
||
|
00000
|
||
|
SUMMARY:Begin Unterhaltsreinigung
|
||
|
UID:040000008200E00074C5B7101A82E0080000000010DA091DC31BCD01000000000000000
|
||
|
0100000008FECD2E607780649BE5A4C9EE6418CBC
|
||
|
DTEND;TZID="Sarajevo, Skopje, Sofija, Vilnius, Warsaw, Zagreb":20120418T103
|
||
|
000
|
||
|
END:VEVENT
|
||
|
END:VCALENDAR
|
||
|
HI;
|
||
|
|
||
|
$tz = TimeZoneUtil::getTimeZone('foo', Reader::read($vobj));
|
||
|
|
||
|
$this->assertEquals(new \DateTimeZone('Europe/Sarajevo'), $tz);
|
||
|
|
||
|
}
|
||
|
|
||
|
function testUnknownExchangeId() {
|
||
|
|
||
|
$vobj = <<<HI
|
||
|
BEGIN:VCALENDAR
|
||
|
METHOD:REQUEST
|
||
|
VERSION:2.0
|
||
|
BEGIN:VTIMEZONE
|
||
|
TZID:foo
|
||
|
X-MICROSOFT-CDO-TZID:2000
|
||
|
BEGIN:STANDARD
|
||
|
DTSTART:16010101T030000
|
||
|
TZOFFSETFROM:+0200
|
||
|
TZOFFSETTO:+0100
|
||
|
RRULE:FREQ=YEARLY;WKST=MO;INTERVAL=1;BYMONTH=10;BYDAY=-1SU
|
||
|
END:STANDARD
|
||
|
BEGIN:DAYLIGHT
|
||
|
DTSTART:16010101T020000
|
||
|
TZOFFSETFROM:+0100
|
||
|
TZOFFSETTO:+0200
|
||
|
RRULE:FREQ=YEARLY;WKST=MO;INTERVAL=1;BYMONTH=3;BYDAY=-1SU
|
||
|
END:DAYLIGHT
|
||
|
END:VTIMEZONE
|
||
|
BEGIN:VEVENT
|
||
|
DTSTAMP:20120416T092149Z
|
||
|
DTSTART;TZID="foo":20120418T1
|
||
|
00000
|
||
|
SUMMARY:Begin Unterhaltsreinigung
|
||
|
UID:040000008200E00074C5B7101A82E0080000000010DA091DC31BCD01000000000000000
|
||
|
0100000008FECD2E607780649BE5A4C9EE6418CBC
|
||
|
DTEND;TZID="Sarajevo, Skopje, Sofija, Vilnius, Warsaw, Zagreb":20120418T103
|
||
|
000
|
||
|
END:VEVENT
|
||
|
END:VCALENDAR
|
||
|
HI;
|
||
|
|
||
|
$tz = TimeZoneUtil::getTimeZone('foo', Reader::read($vobj));
|
||
|
|
||
|
$this->assertEquals(new \DateTimeZone(date_default_timezone_get()), $tz);
|
||
|
|
||
|
}
|
||
|
|
||
|
function testWindowsTimeZone() {
|
||
|
|
||
|
$tz = TimeZoneUtil::getTimeZone('Eastern Standard Time');
|
||
|
$this->assertEquals(new \DateTimeZone('America/New_York'), $tz);
|
||
|
|
||
|
}
|
||
|
|
||
|
function testFallBack() {
|
||
|
|
||
|
$vobj = <<<HI
|
||
|
BEGIN:VCALENDAR
|
||
|
METHOD:REQUEST
|
||
|
VERSION:2.0
|
||
|
BEGIN:VTIMEZONE
|
||
|
TZID:foo
|
||
|
BEGIN:STANDARD
|
||
|
DTSTART:16010101T030000
|
||
|
TZOFFSETFROM:+0200
|
||
|
TZOFFSETTO:+0100
|
||
|
RRULE:FREQ=YEARLY;WKST=MO;INTERVAL=1;BYMONTH=10;BYDAY=-1SU
|
||
|
END:STANDARD
|
||
|
BEGIN:DAYLIGHT
|
||
|
DTSTART:16010101T020000
|
||
|
TZOFFSETFROM:+0100
|
||
|
TZOFFSETTO:+0200
|
||
|
RRULE:FREQ=YEARLY;WKST=MO;INTERVAL=1;BYMONTH=3;BYDAY=-1SU
|
||
|
END:DAYLIGHT
|
||
|
END:VTIMEZONE
|
||
|
BEGIN:VEVENT
|
||
|
DTSTAMP:20120416T092149Z
|
||
|
DTSTART;TZID="foo":20120418T1
|
||
|
00000
|
||
|
SUMMARY:Begin Unterhaltsreinigung
|
||
|
UID:040000008200E00074C5B7101A82E0080000000010DA091DC31BCD01000000000000000
|
||
|
0100000008FECD2E607780649BE5A4C9EE6418CBC
|
||
|
000
|
||
|
END:VEVENT
|
||
|
END:VCALENDAR
|
||
|
HI;
|
||
|
$tz = TimeZoneUtil::getTimeZone('foo', Reader::read($vobj));
|
||
|
|
||
|
$this->assertEquals(new \DateTimeZone(date_default_timezone_get()), $tz);
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|