From 7e312eaf76f037ef0d9e38ec4852b83baf5372a4 Mon Sep 17 00:00:00 2001 From: rlanvin Date: Fri, 11 Mar 2016 11:02:40 +0200 Subject: [PATCH] Adding a dedicated test for timezone --- tests/RRuleTest.php | 40 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/tests/RRuleTest.php b/tests/RRuleTest.php index f074131..33b738e 100755 --- a/tests/RRuleTest.php +++ b/tests/RRuleTest.php @@ -1654,8 +1654,6 @@ class RRuleTest extends PHPUnit_Framework_TestCase $this->assertEquals($rule, new RRule($rule->rfcString())); } - - public function testIsLeapYear() { $this->assertFalse(\RRule\is_leap_year(1700)); @@ -1663,4 +1661,40 @@ class RRuleTest extends PHPUnit_Framework_TestCase $this->assertFalse(\RRule\is_leap_year(1900)); $this->assertTrue(\RRule\is_leap_year(2000)); } -} \ No newline at end of file + + public function testTimezoneIsKeptIdentical() + { + $rrule = new RRule(array( + 'freq' => 'yearly', + 'bymonthday' => '31,30', + 'count' => 3, + 'dtstart' => date_create('2015-07-01 09:00:00') + )); + + $this->assertEquals(date_create('2015-07-30 09:00:00'), $rrule[0]); + + $rrule = new RRule(array( + 'freq' => 'yearly', + 'bymonthday' => '31,30', + 'count' => 3, + 'dtstart' => date_create('2015-07-01 09:00:00', new DateTimeZone('Australia/Sydney')) + )); + + $this->assertEquals(date_create('2015-07-30 09:00:00', new DateTimeZone('Australia/Sydney')), $rrule[0]); + + $rrule = new RRule(array( + 'freq' => 'yearly', + 'bymonthday' => '31,30', + 'count' => 3, + 'dtstart' => date_create('2015-07-01 09:00:00', new DateTimeZone('Europe/Helsinki')) + )); + + $this->assertEquals(date_create('2015-07-30 09:00:00', new DateTimeZone('Europe/Helsinki')), $rrule[0]); + + // using a rfc string + $rrule = new RRule('DTSTART;TZID=America/New_York:19970901T090000 + RRULE:FREQ=DAILY;UNTIL=19971224T000000Z;WKST=SU;BYDAY=MO,WE,FR'); + + $this->assertEquals(date_create('1997-09-01 09:00:00', new DateTimeZone('America/New_York')), $rrule[0]); + } +}