Skip to content

Commit a36887b

Browse files
committed
tests: cases for RRULEs without BYSETPOS
References: GXH-149
1 parent 66356f8 commit a36887b

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

tests/vcard.cpp

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,52 @@ static int t_ical_dt()
267267
return EXIT_SUCCESS;
268268
}
269269

270+
static int t_rrule()
271+
{
272+
std::string head =
273+
"BEGIN:VCALENDAR\n"
274+
"VERSION:2.0\n"
275+
"BEGIN:VEVENT\n"
276+
"CREATED:20170427T181700Z\n"
277+
"LAST-MODIFIED:20250609T051307Z\n"
278+
"DTSTAMP:20250609T051307Z\n"
279+
"UID:74d6b21d-d73c-4cac-af61-6925d1882b30\n"
280+
"SUMMARY:x\n";
281+
static constexpr char foot[] =
282+
"DTSTART;TZID=Europe/Berlin:20150830T110000\n"
283+
"DTEND;TZID=Europe/Berlin:20150830T180000\n"
284+
"CLASS:PUBLIC\n"
285+
"TRANSP:OPAQUE\n"
286+
"X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY\n"
287+
"LOCATION:Irgendwo\n"
288+
"SEQUENCE:0\n"
289+
"X-MICROSOFT-CDO-OWNER-CRITICAL-CHANGE:20160104T085628Z\n"
290+
"X-MICROSOFT-CDO-ATTENDEE-CRITICAL-CHANGE:20160104T085628Z\n"
291+
"X-MICROSOFT-CDO-APPT-SEQUENCE:0\n"
292+
"X-MICROSOFT-CDO-OWNERAPPTID:-1\n"
293+
"X-MICROSOFT-CDO-ALLDAYEVENT:FALSE\n"
294+
"END:VEVENT\n"
295+
"END:VCALENDAR\n";
296+
297+
ical icalin;
298+
auto input = head + "RRULE:FREQ=MONTHLY;BYDAY=2MO\n" + foot;
299+
bool succ = icalin.load_from_str_move(input.data());
300+
if (!succ)
301+
return EXIT_FAILURE;
302+
auto msg = oxcical_import_single("UTC", icalin, zalloc, ee_get_propids,
303+
oxcmail_username_to_entryid);
304+
assert(msg != nullptr);
305+
306+
input = head + "RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=8\n" + foot;
307+
succ = icalin.load_from_str_move(input.data());
308+
if (!succ)
309+
return EXIT_FAILURE;
310+
msg = oxcical_import_single("UTC", icalin, zalloc, ee_get_propids,
311+
oxcmail_username_to_entryid);
312+
assert(msg != nullptr);
313+
return EXIT_SUCCESS;
314+
}
315+
270316
int main()
271317
{
272318
auto ret = t_ical_api();
@@ -277,6 +323,9 @@ int main()
277323
t_card();
278324
t_ical();
279325
ret = t_ical_dt();
326+
if (ret != EXIT_SUCCESS)
327+
return ret;
328+
ret = t_rrule();
280329
if (ret != EXIT_SUCCESS)
281330
return ret;
282331
return EXIT_SUCCESS;

0 commit comments

Comments
 (0)