From d106d333b659efb4840ec27eb8b5c87703da5f13 Mon Sep 17 00:00:00 2001 From: Michael J Rubinsky Date: Fri, 6 Dec 2013 13:58:07 -0500 Subject: [PATCH] Add new test for Bug: 12869 --- .../Date/test/Horde/Date/RecurrenceTest.php | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/framework/Date/test/Horde/Date/RecurrenceTest.php b/framework/Date/test/Horde/Date/RecurrenceTest.php index 9bc51af7f5a..ab2d61dd028 100644 --- a/framework/Date/test/Horde/Date/RecurrenceTest.php +++ b/framework/Date/test/Horde/Date/RecurrenceTest.php @@ -1045,4 +1045,34 @@ public function testRecurrenceObjectWithNonDefaultTimezones() $this->assertEquals('America/New_York', $next->timezone); } + public function testBug12869RecurrenceEndFromIcalendar() + { + date_default_timezone_set('Europe/Amsterdam'); + $iCal = new Horde_Icalendar(); + $iCal->parsevCalendar(file_get_contents(__DIR__ . '/fixtures/bug12869.ics')); + $components = $iCal->getComponents(); + foreach ($components as $content) { + if ($content instanceof Horde_Icalendar_Vevent) { + $start = new Horde_Date($content->getAttribute('DTSTART')); + $end = new Horde_Date($content->getAttribute('DTEND')); + $rrule = $content->getAttribute('RRULE'); + $recurrence = new Horde_Date_Recurrence($start, $end); + $recurrence->fromRRule20($rrule); + break; + } + } + + $after = array('year' => 2013, 'month' => 12); + + $after['mday'] = 11; + $this->assertEquals('2013-12-12 13:45:00', (string)$recurrence->nextRecurrence($after)); + + $after['mday'] = 18; + $this->assertEquals('2013-12-19 13:45:00', (string)$recurrence->nextRecurrence($after)); + + $after['mday'] = 20; + $this->assertEquals('', (string)$recurrence->nextRecurrence($after)); + date_default_timezone_set('Europe/Berlin'); + } + }