Revision control

Copy as Markdown

Other Tools

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
function run_test() {
do_calendar_startup(really_run_test);
}
function really_run_test() {
// Check that Bug 356207 doesn't regress:
// Freeze (hang) on RRULE which has BYMONTHDAY and BYDAY
const icalString =
"BEGIN:VCALENDAR\n" +
"PRODID:-//Randy L Pearson//NONSGML Outlook2vCal V1.1//EN\n" +
"VERSION:2.0\n" +
"BEGIN:VEVENT\n" +
"CREATED:20040829T163323\n" +
"UID:00000000EBFAC68C9B92BF119D643623FBD17E1424312000\n" +
"SEQUENCE:1\n" +
"LAST-MODIFIED:20060615T231158\n" +
"DTSTAMP:20040829T163323\n" +
"ORGANIZER:Unknown\n" +
"DTSTART:20040901T141500\n" +
"DESCRIPTION:Contact Mary Tindall for more details.\n" +
"CLASS:PUBLIC\n" +
"LOCATION:Church\n" +
"CATEGORIES:Church Events\n" +
"SUMMARY:Friendship Circle\n" +
"PRIORITY:1\n" +
"DTEND:20040901T141500\n" +
"RRULE:FREQ=MONTHLY;INTERVAL=1;BYMONTHDAY=1;BYDAY=WE\n" +
"END:VEVENT\n" +
"END:VCALENDAR";
const event = createEventFromIcalString(icalString);
const start = createDate(2009, 0, 1);
const end = createDate(2009, 11, 31);
// the following call caused a never ending loop:
const occurrenceDates = event.recurrenceInfo.getOccurrenceDates(start, end, 0);
equal(occurrenceDates.length, 2);
// the following call caused a never ending loop:
const occurrences = event.recurrenceInfo.getOccurrences(start, end, 0);
equal(occurrences.length, 2);
}