Page MenuHomePhorge

No OneTemporary

Size
10 KB
Referenced Files
None
Subscribers
None
diff --git a/tests/timezone_converter.php b/tests/timezone_converter.php
index 354cac1..2d32593 100644
--- a/tests/timezone_converter.php
+++ b/tests/timezone_converter.php
@@ -1,156 +1,177 @@
<?php
class timezone_converter extends PHPUnit\Framework\TestCase
{
function test_list_timezones()
{
// date_default_timezone_set('America/Los_Angeles');
$converter = timezone_converter_test::getInstance();
$output = $converter->getListOfTimezones('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAEAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAFAAEAAAAAAAAAxP///w==');
$this->assertTrue(is_array($output));
$this->assertSame(array(), $output);
$converter = timezone_converter_test::getInstance();
$output = $converter->getListOfTimezones('xP///0MAZQBuAHQAcgBhAGwAIABFAHUAcgBvAHAAZQAgAFMAdABhAG4AZABhAHIAZAAgAFQAaQBtAGUAAAAAAAAAAAAAAAoAAAAFAAMAAAAAAAAAAAAAAEMAZQBuAHQAcgBhAGwAIABFAHUAcgBvAHAAZQAgAEQAYQB5AGwAaQBnAGgAdAAgAFQAaQBtAGUAAAAAAAAAAAAAAAMAAAAFAAIAAAAAAAAAxP///w==');
$this->assertTrue(is_array($output));
$this->assertTrue(isset($output['Europe/Warsaw']));
$converter = timezone_converter_test::getInstance();
$output = $converter->getListOfTimezones('4AEAAFAAYQBjAGkAZgBpAGMAIABTAHQAYQBuAGQAYQByAGQAIABUAGkAbQBlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAABAAIAAAAAAAAAAAAAAFAAYQBjAGkAZgBpAGMAIABEAGEAeQBsAGkAZwBoAHQAIABUAGkAbQBlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAACAAIAAAAAAAAAxP///w==');
$this->assertTrue(is_array($output));
$this->assertTrue(isset($output['America/Los_Angeles']));
$converter = timezone_converter_test::getInstance();
- $output = $converter->getListOfTimezones('Lv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAwADABcAOwA7AOcDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAgAEAAAAAAAAAAAAxP///w==');
+ $output = $converter->getListOfTimezones('Lv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==');
$this->assertTrue(is_array($output));
$this->assertTrue(isset($output['Asia/Tehran']));
}
- function test_get_timezone()
+ function data_get_timezone()
+ {
+ return [
+ ['UTC'],
+ ['Europe/Warsaw'],
+ ['Europe/Zurich'],
+ ['America/Los_Angeles'],
+ ['Asia/Tehran'],
+ ];
+ }
+
+ /**
+ * @dataProvider data_get_timezone
+ */
+ function test_get_timezone($tzName)
{
date_default_timezone_set('America/Los_Angeles');
$converter = timezone_converter_test::getInstance();
- $datetime = new DateTime('2017-01-01T12:00:00Z');
-
- $offsets = $converter->getOffsetsForTimezone('UTC', $datetime);
- $output = $converter->getTimezone($offsets, 'UTC');
-
- $this->assertSame('UTC', $output);
-
- $offsets = $converter->getOffsetsForTimezone('Europe/Warsaw', $datetime);
- $output = $converter->getTimezone($offsets, 'Europe/Warsaw');
-
- $this->assertSame('Europe/Warsaw', $output);
+ $datetime = '2017-01-01T12:00:00Z';
- $offsets = $converter->getOffsetsForTimezone('America/Los_Angeles', $datetime);
- $output = $converter->getTimezone($offsets, 'America/Los_Angeles');
-
- $this->assertSame('America/Los_Angeles', $output);
+ $offsets = $converter->getOffsetsForTimezone($tzName, $datetime);
+ $output = $converter->getTimezone($offsets, $tzName);
+ $this->assertSame($tzName, $output);
}
function test_get_offsets_for_timezone()
{
date_default_timezone_set('America/Los_Angeles');
$converter = timezone_converter_test::getInstance();
- $datetime = new DateTime('2017-01-01T12:00:00Z');
+ $datetime = '2017-01-01T12:00:00Z';
$output = $converter->getOffsetsForTimezone('UTC', $datetime);
$this->assertSame($output['bias'], 0);
$this->assertSame($output['standardBias'], 0);
$this->assertSame($output['daylightBias'], 0);
$this->assertSame($output['standardMonth'], 0);
$this->assertSame($output['daylightMonth'], 0);
$output = $converter->getOffsetsForTimezone('Europe/Warsaw', $datetime);
$this->assertSame($output['standardBias'], 0);
$this->assertSame($output['standardMonth'], 10);
$this->assertSame($output['standardWeek'], 5);
$this->assertSame($output['standardHour'], 3);
$this->assertSame($output['daylightBias'], -60);
$this->assertSame($output['daylightMonth'], 3);
$this->assertSame($output['daylightWeek'], 5);
$this->assertSame($output['daylightHour'], 2);
$output = $converter->getOffsetsForTimezone('America/Los_Angeles', $datetime);
$this->assertSame($output['bias'], 480);
$this->assertSame($output['standardBias'], 0);
$this->assertSame($output['standardMonth'], 11);
$this->assertSame($output['standardWeek'], 1);
$this->assertSame($output['standardHour'], 2);
$this->assertSame($output['daylightBias'], -60);
$this->assertSame($output['daylightMonth'], 3);
$this->assertSame($output['daylightWeek'], 2);
$this->assertSame($output['daylightHour'], 2);
$output = $converter->getOffsetsForTimezone('Atlantic/Azores', $datetime);
$this->assertSame($output['bias'], 60);
$this->assertSame($output['standardBias'], 0);
$this->assertSame($output['standardMonth'], 10);
$this->assertSame($output['standardWeek'], 5);
$this->assertSame($output['standardHour'], 1);
$this->assertSame($output['daylightBias'], -60);
$this->assertSame($output['daylightMonth'], 3);
$this->assertSame($output['daylightWeek'], 5);
$this->assertSame($output['daylightHour'], 0);
+ //Check before dst change
$output = $converter->getOffsetsForTimezone('Asia/Tehran', $datetime);
$this->assertSame($output['bias'], -210);
$this->assertSame($output['standardBias'], 0);
$this->assertSame($output['standardMonth'], 9);
$this->assertSame($output['standardWeek'], 3);
- $this->assertSame($output['standardDayOfWeek'], 3);
+ $this->assertSame($output['standardDayOfWeek'], 4);
$this->assertSame($output['standardHour'], 24);
$this->assertSame($output['daylightBias'], -60);
$this->assertSame($output['daylightMonth'], 3);
$this->assertSame($output['daylightWeek'], 4);
- $this->assertSame($output['daylightDayOfWeek'], 2);
+ $this->assertSame($output['daylightDayOfWeek'], 3);
+ $this->assertSame($output['daylightHour'], 0);
+
+ //Check after dst change
+ $output = $converter->getOffsetsForTimezone('Asia/Tehran', '2023-01-01T12:00:00Z');
+
+ $this->assertSame($output['bias'], -210);
+ $this->assertSame($output['standardBias'], 0);
+ $this->assertSame($output['standardMonth'], 0);
+ $this->assertSame($output['standardWeek'], 0);
+ $this->assertSame($output['standardDayOfWeek'], 0);
+ $this->assertSame($output['standardHour'], 0);
+ $this->assertSame($output['daylightBias'], 0);
+ $this->assertSame($output['daylightMonth'], 0);
+ $this->assertSame($output['daylightWeek'], 0);
+ $this->assertSame($output['daylightDayOfWeek'], 0);
$this->assertSame($output['daylightHour'], 0);
}
function data_timezone_conversion()
{
return array(
- array('Asia/Tehran', 'Lv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAwADABcAOwA7AOcDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAgAEAAAAAAAAAAAAxP///w=='),
- array('Pacific/Pago_Pago', 'lAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='),
- array('Europe/Warsaw', 'xP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAFAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAFAAIAAAAAAAAAxP///w=='),
+ //Pre dst change
+ array('Asia/Tehran', 'Lv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAgADABcAOwA7AOcDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAQAEAAAAAAAAAAAAxP///w==', '2021-07-01T12:00:00Z'),
+ //Post dst change
+ array('Asia/Tehran', 'Lv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==', '2023-04-01T12:00:00Z'),
+ array('Pacific/Pago_Pago', 'lAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==', '2021-07-01T12:00:00Z'),
+ array('Europe/Warsaw', 'xP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAFAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAFAAIAAAAAAAAAxP///w==', '2021-07-01T12:00:00Z'),
);
}
/**
* @dataProvider data_timezone_conversion
*/
- function test_timezone_conversion($tz, $expected)
+ function test_timezone_conversion($tz, $expected, $datetime)
{
- $datetime = new DateTime('2021-07-01T12:00:00Z');
$converter = timezone_converter_test::getInstance();
$output = $converter->encodeTimezone($tz, $datetime);
$this->assertSame($expected, $output);
$output = $converter->getListOfTimezones($output);
$this->assertTrue(is_array($output));
$this->assertTrue(isset($output[$tz]));
}
}
class timezone_converter_test extends kolab_sync_timezone_converter
{
// disable cache
function getCache()
{
return null;
}
}

File Metadata

Mime Type
text/x-diff
Expires
Sun, Feb 1, 1:56 AM (1 d, 19 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
426592
Default Alt Text
(10 KB)

Event Timeline