Page MenuHomePhabricator

D16631.id40038.diff
No OneTemporary

D16631.id40038.diff

diff --git a/src/parser/calendar/data/PhutilCalendarRecurrenceRule.php b/src/parser/calendar/data/PhutilCalendarRecurrenceRule.php
--- a/src/parser/calendar/data/PhutilCalendarRecurrenceRule.php
+++ b/src/parser/calendar/data/PhutilCalendarRecurrenceRule.php
@@ -366,10 +366,11 @@
$this->cursorMinute -= $interval;
$this->rewindMinute();
break;
+ case self::FREQUENCY_SECONDLY:
default:
throw new Exception(
pht(
- 'BYSETPOS not yet supported for FREQ "%s".',
+ 'RRULE specifies BYSETPOS with FREQ "%s", but this is invalid.',
$frequency));
}
diff --git a/src/parser/calendar/data/__tests__/PhutilCalendarRecurrenceRuleTestCase.php b/src/parser/calendar/data/__tests__/PhutilCalendarRecurrenceRuleTestCase.php
--- a/src/parser/calendar/data/__tests__/PhutilCalendarRecurrenceRuleTestCase.php
+++ b/src/parser/calendar/data/__tests__/PhutilCalendarRecurrenceRuleTestCase.php
@@ -1040,6 +1040,55 @@
$expect);
}
+ public function testSecondlyRecurrenceRules() {
+ $tests = array();
+ $expect = array();
+
+ $tests[] = array();
+ $expect[] = array(
+ '19970902T090000Z',
+ '19970902T090001Z',
+ '19970902T090002Z',
+ );
+
+ $tests[] = array(
+ 'INTERVAL' => 2,
+ );
+ $expect[] = array(
+ '19970902T090000Z',
+ '19970902T090002Z',
+ '19970902T090004Z',
+ );
+
+ $tests[] = array(
+ 'INTERVAL' => 90061,
+ );
+ $expect[] = array(
+ '19970902T090000Z',
+ '19970903T100101Z',
+ '19970904T110202Z',
+ );
+
+ $tests[] = array(
+ 'BYSECOND' => array(0),
+ 'BYMINUTE' => array(1),
+ 'DTSTART' => '20100322T120100Z',
+ );
+ $expect[] = array(
+ '20100322T120100Z',
+ '20100322T130100Z',
+ '20100322T140100Z',
+ );
+
+ $this->assertRules(
+ array(
+ 'FREQ' => 'SECONDLY',
+ 'COUNT' => 3,
+ 'DTSTART' => '19970902T090000Z',
+ ),
+ $tests,
+ $expect);
+ }
private function assertRules(array $defaults, array $tests, array $expect) {
foreach ($tests as $key => $test) {

File Metadata

Mime Type
text/plain
Expires
Sat, Oct 19, 9:38 AM (2 w, 6 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6717891
Default Alt Text
D16631.id40038.diff (2 KB)

Event Timeline