#include #include #include #include "icalparameter_cxx.h" #include "icalproperty_cxx.h" #include "vcomponent.h" #include "regression.h" char content[] = "BEGIN:VCALENDAR\n\ VERSION:2.1\n\ BEGIN:VEVENT\n\ UID:abcd12345\n\ DTSTART:20020307T180000Z\n\ DTEND:20020307T190000Z\n\ SUMMARY:Important Meeting\n\ END:VEVENT\n\ END:VCALENDAR"; void test_cxx(void) { ICalProperty *summProp = new ICalProperty(ICAL_SUMMARY_PROPERTY); ICalProperty *startProp = new ICalProperty(ICAL_DTSTART_PROPERTY); ICalProperty *endProp = new ICalProperty(ICAL_DTEND_PROPERTY); ICalProperty *locationProp = new ICalProperty(ICAL_LOCATION_PROPERTY); ICalProperty *descProp = new ICalProperty(ICAL_DESCRIPTION_PROPERTY); ok("Valid SUMMARY Property", (summProp != 0)); ok("Valid DTSTART Property", (startProp != 0)); ok("Valid DTEND Property", (endProp != 0)); ok("Valid LOCATION Property", (locationProp != 0)); ok("Valid DESCRIPTION Property", (descProp != 0)); struct icaltimetype starttime = icaltime_from_string("20011221T180000Z"); // UTC time ends in Z struct icaltimetype endtime = icaltime_from_string("20020101T080000Z"); // UTC time ends in Z summProp->set_summary("jon said: change dir to c:\\rest\\test\\nest to get the file called \nthis should be in the next line."); startProp->set_dtstart(starttime); endProp->set_dtend(endtime); locationProp->set_location("SF, California; Seattle, Washington"); descProp->set_description("The best cities on the west coast, hit 'NO' if you don't agree!\n"); VEvent *vEvent = new VEvent(); ok("Create a new VEvent", (vEvent!=0)); vEvent->add_property(summProp); vEvent->add_property(startProp); vEvent->add_property(endProp); vEvent->add_property(locationProp); vEvent->add_property(descProp); // is ("vEvent->get_summary()", vEvent->get_summary(), "jon said: change dir to c:\\rest\\test\\nest to get the file called \nthis should be in the next line."); is ("vEvent->get_dtstart()", icaltime_as_ical_string(vEvent->get_dtstart()), "20011221T180000Z"); is ("vEvent->get_dtend()", icaltime_as_ical_string(vEvent->get_dtend()), "20020101T080000Z"); ok ("vEvent->as_ical_string()", (vEvent->as_ical_string() != 0)); if (VERBOSE) { printf("Summary: %s\n", vEvent->get_summary()); printf("DTSTART: %s\n", icaltime_as_ical_string(vEvent->get_dtstart())); printf("DTEND: %s\n", icaltime_as_ical_string(vEvent->get_dtend())); printf("LOCATION: %s\n", vEvent->get_location()); printf("DESCRIPTION: %s\n", vEvent->get_description()); printf("vcomponent: %s", vEvent->as_ical_string()); } VComponent ic(icalparser_parse_string((const char*)content)); ok("Parsing component", (ic.is_valid())); if (VERBOSE) printf("%s\n", ic.as_ical_string()); // component is wrapped within BEGIN:VCALENDAR END:VCALENDAR // we need to unwrap it. VEvent* sub_ic = dynamic_cast(ic.get_first_component(ICAL_VEVENT_COMPONENT)); int_is("Getting VEvent subcomponent", sub_ic->isa(), ICAL_VEVENT_COMPONENT); while (sub_ic != NULL) { if (VERBOSE) printf("subcomponent: %s\n", sub_ic->as_ical_string()); sub_ic = dynamic_cast(ic.get_next_component(ICAL_VEVENT_COMPONENT)); } VCalendar* cal = new VCalendar(); VAgenda* vAgenda = new VAgenda(); ok("Create a new VCalendar object", (cal != 0)); ok("Create a new VAgenda object", (vAgenda != 0)); ICalProperty* prop = new ICalProperty(ICAL_OWNER_PROPERTY); prop->set_owner("fred@flintstone.net"); vAgenda->add_property(prop); prop = new ICalProperty(ICAL_SUMMARY_PROPERTY); prop->set_summary("CPMain"); vAgenda->add_property(prop); prop = new ICalProperty(ICAL_TZID_PROPERTY); prop->set_tzid("America/Los_Angeles"); vAgenda->add_property(prop); cal->add_component(vAgenda); ok("Complex VCALENDAR/VAGENDA", (cal->as_ical_string() != 0)); if (VERBOSE) printf("vAgenda: %s\n", cal->as_ical_string()); int caughtException = 0; try { string foo = "HFHFHFHF"; VComponent v = VComponent(foo); } catch (icalerrorenum err) { if (err == ICAL_BADARG_ERROR) { caughtException = 1; } } int_is("Testing exception handling", caughtException, 1); }