Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F7057927
timezone_converter.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
8 KB
Referenced Files
None
Subscribers
None
timezone_converter.php
View Options
<?php
class
timezone_converter
extends
PHPUnit\Framework\TestCase
{
function
test_list_timezones
()
{
// date_default_timezone_set('America/Los_Angeles');
$converter
=
kolab_sync_timezone_converter
::
getInstance
();
$output
=
$converter
->
getListOfTimezones
(
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAEAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAFAAEAAAAAAAAAxP///w=='
);
$this
->
assertTrue
(
is_array
(
$output
));
$this
->
assertSame
(
array
(),
$output
);
$converter
=
kolab_sync_timezone_converter
::
getInstance
();
$output
=
$converter
->
getListOfTimezones
(
'xP///0MAZQBuAHQAcgBhAGwAIABFAHUAcgBvAHAAZQAgAFMAdABhAG4AZABhAHIAZAAgAFQAaQBtAGUAAAAAAAAAAAAAAAoAAAAFAAMAAAAAAAAAAAAAAEMAZQBuAHQAcgBhAGwAIABFAHUAcgBvAHAAZQAgAEQAYQB5AGwAaQBnAGgAdAAgAFQAaQBtAGUAAAAAAAAAAAAAAAMAAAAFAAIAAAAAAAAAxP///w=='
);
$this
->
assertTrue
(
is_array
(
$output
));
$this
->
assertTrue
(
isset
(
$output
[
'Europe/Warsaw'
]));
$converter
=
kolab_sync_timezone_converter
::
getInstance
();
$output
=
$converter
->
getListOfTimezones
(
'4AEAAFAAYQBjAGkAZgBpAGMAIABTAHQAYQBuAGQAYQByAGQAIABUAGkAbQBlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAABAAIAAAAAAAAAAAAAAFAAYQBjAGkAZgBpAGMAIABEAGEAeQBsAGkAZwBoAHQAIABUAGkAbQBlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAACAAIAAAAAAAAAxP///w=='
);
$this
->
assertTrue
(
is_array
(
$output
));
$this
->
assertTrue
(
isset
(
$output
[
'America/Los_Angeles'
]));
$converter
=
kolab_sync_timezone_converter
::
getInstance
();
$output
=
$converter
->
getListOfTimezones
(
'Lv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
);
$this
->
assertTrue
(
is_array
(
$output
));
$this
->
assertTrue
(
isset
(
$output
[
'Asia/Tehran'
]));
// As seen in outlook
$converter
=
kolab_sync_timezone_converter
::
getInstance
();
$output
=
$converter
->
getListOfTimezones
(
'Lv///0kAcgBhAG4AIABTAHQAYQBuAGQAYQByAGQAIABUAGkAbQBlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkABAADABcAOwA7AOcDAAAAAEkAcgBhAG4AIABEAGEAeQBsAGkAZwBoAHQAIABUAGkAbQBlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAwAEAAAAAAAAAAAAxP///w=='
);
$this
->
assertTrue
(
is_array
(
$output
));
$this
->
assertTrue
(
isset
(
$output
[
'Asia/Tehran'
]));
}
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
=
kolab_sync_timezone_converter
::
getInstance
();
$datetime
=
'2017-01-01T12:00:00Z'
;
$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
=
kolab_sync_timezone_converter
::
getInstance
();
$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'
],
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'
],
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
(
//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
,
$datetime
)
{
$converter
=
kolab_sync_timezone_converter
::
getInstance
();
$output
=
$converter
->
encodeTimezone
(
$tz
,
$datetime
);
$this
->
assertSame
(
$expected
,
$output
);
$output
=
$converter
->
getListOfTimezones
(
$output
);
$this
->
assertTrue
(
is_array
(
$output
));
$this
->
assertTrue
(
isset
(
$output
[
$tz
]));
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Fri, Jun 12, 4:13 AM (10 h, 38 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
904999
Default Alt Text
timezone_converter.php (8 KB)
Attached To
Mode
R4 syncroton
Attached
Detach File
Event Timeline
Log In to Comment