#include #include #include #include #include int main(int argC, char* argV[]) { char funTime[2048]; icalcomponent * calendar = NULL; icalcomponent * event = NULL; struct icaltimetype dtstart; struct icaltimetype recurtime; funTime[0] = '\0'; strcat(funTime, "BEGIN:VCALENDAR\n"); strcat(funTime, "VERSION:2.0\n"); strcat(funTime, "BEGIN:VTIMEZONE\n"); strcat(funTime, "TZID:/mozilla.org/20071231_1/Europe/London\n"); strcat(funTime, "X-LIC-LOCATION:Europe/London\n"); strcat(funTime, "BEGIN:DAYLIGHT\n"); strcat(funTime, "TZOFFSETFROM:+0000\n"); strcat(funTime, "TZOFFSETTO:+0100\n"); strcat(funTime, "TZNAME:BST\n"); strcat(funTime, "DTSTART:19700328T230000\n"); strcat(funTime, "RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=3\n"); strcat(funTime, "END:DAYLIGHT\n"); strcat(funTime, "BEGIN:STANDARD\n"); strcat(funTime, "TZOFFSETFROM:+0100\n"); strcat(funTime, "TZOFFSETTO:+0000\n"); strcat(funTime, "TZNAME:GMT\n"); strcat(funTime, "DTSTART:19701025T000000\n"); strcat(funTime, "RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10\n"); strcat(funTime, "END:STANDARD\n"); strcat(funTime, "END:VTIMEZONE\n"); strcat(funTime, "BEGIN:VEVENT\n"); strcat(funTime, "DTSTAMP:20080805T174443Z\n"); strcat(funTime, "UID:5fb6ccb8-9646-45ab-8c95-8d15e9de1280\n"); strcat(funTime, "SUMMARY:Exclude test\n"); strcat(funTime, "EXDATE;TZID=/mozilla.org/20071231_1/Europe/London:20080818T190000\n"); strcat(funTime, "RRULE:FREQ=DAILY;COUNT=12;INTERVAL=1;BYDAY=MO,TU,WE,TH,FR\n"); strcat(funTime, "DTSTART;TZID=/mozilla.org/20071231_1/Europe/London:20080811T190000\n"); strcat(funTime, "DTEND;TZID=/mozilla.org/20071231_1/Europe/London:20080811T200000\n"); strcat(funTime, "END:VEVENT\n"); strcat(funTime, "END:VCALENDAR\n"); calendar = icalparser_parse_string(funTime); dtstart = icalcomponent_get_dtstart(calendar); event = icalcomponent_get_first_component(calendar, ICAL_VEVENT_COMPONENT); recurtime = icaltime_from_string("20080818T180000Z"); if (icalproperty_recurrence_is_excluded (event, &dtstart, &recurtime)) { printf("PASS 20080818T180000Z correctly excluded because it matches\n"); printf(" EXDATE;TZID=/mozilla.org/20071231_1/Europe/London:20080818T190000\n"); } else { printf("FAIL!!! 20080818T180000Z NOT excluded even though it matches\n"); printf(" EXDATE;TZID=/mozilla.org/20071231_1/Europe/London:20080818T190000\n"); } exit(0); }