summaryrefslogtreecommitdiff
path: root/src/test/testclassify.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/testclassify.c')
-rw-r--r--src/test/testclassify.c129
1 files changed, 129 insertions, 0 deletions
diff --git a/src/test/testclassify.c b/src/test/testclassify.c
new file mode 100644
index 00000000..946f29ca
--- /dev/null
+++ b/src/test/testclassify.c
@@ -0,0 +1,129 @@
+/* -*- Mode: C -*-
+ ======================================================================
+ FILE: testclassify.c
+ CREATOR: eric 11 February 2000
+
+ $Id: testclassify.c,v 1.6 2008-01-02 20:07:46 dothebart Exp $
+ $Locker: $
+
+ (C) COPYRIGHT 2000 Eric Busboom
+ http://www.softwarestudio.org
+
+ The contents of this file are subject to the Mozilla Public License
+ Version 1.0 (the "License"); you may not use this file except in
+ compliance with the License. You may obtain a copy of the License at
+ http://www.mozilla.org/MPL/
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and
+ limitations under the License.
+
+ The Original Code is eric. The Initial Developer of the Original
+ Code is Eric Busboom
+
+
+ ======================================================================*/
+
+#include <stdio.h> /* for printf */
+#include <libical/ical.h>
+#include <errno.h>
+#include <string.h> /* For strerror */
+#include <libicalss/icalss.h>
+
+/* Get a note about the purpose of the property*/
+const char* get_note(icalcomponent *c)
+{
+ icalproperty *p;
+ const char* note = 0;
+
+ if(c != 0){
+ for(p = icalcomponent_get_first_property(c,ICAL_X_PROPERTY);
+ p!= 0;
+ p = icalcomponent_get_next_property(c,ICAL_X_PROPERTY)){
+ if(strcmp(icalproperty_get_x_name(p),"X-LIC-NOTE")==0){
+ note = icalproperty_get_x(p);
+ }
+ }
+ }
+
+ if(note == 0){
+ note = "None";
+ }
+
+ return note;
+}
+
+
+int main(int argc, char* argv[])
+{
+ icalcomponent *c;
+ int i=0;
+
+ /* Open up the two storage files, one for the incomming components,
+ one for the calendar */
+ icalfileset_options options = {O_RDONLY, 0644, 0};
+ icalset* incoming = icalset_new(ICAL_FILE_SET, TEST_DATADIR "/incoming.ics", &options);
+ icalset* cal = icalset_new(ICAL_FILE_SET, TEST_DATADIR "/calendar.ics", &options);
+
+ assert(incoming!= 0);
+ assert(cal!=0);
+
+ /* Iterate through all of the incoming components */
+ for(c=icalset_get_first_component(incoming);c!=0;
+ c=icalset_get_next_component(incoming)){
+
+ icalproperty_xlicclass class;
+ icalcomponent *match = 0;
+ const char* this_uid;
+
+ i++;
+
+ /* Check this component against the restrictions imposed by
+ iTIP. An errors will be inserted as X-LIC-ERROR properties
+ in the component. The Parser will also insert errors if it
+ cannot parse the component */
+ icalcomponent_check_restrictions(c);
+
+ /* If there are any errors, print out the component */
+ if(icalcomponent_count_errors(c) != 0){
+ printf("----- Component has errors ------- \n%s-----------------\n",
+ icalcomponent_as_ical_string(c));
+ }
+
+ /* Use one of the icalcomponent convenience routines to get
+ the UID. This routine will save you from having to use
+ icalcomponent_get_inner(),
+ icalcomponent_get_first_property(), checking the return
+ value, and then calling icalproperty_get_uid. There are
+ several other convenience routines for DTSTART, DTEND,
+ DURATION, SUMMARY, METHOD, and COMMENT */
+ this_uid = icalcomponent_get_uid(c);
+
+ if(this_uid != 0){
+ /* Look in the calendar for a component with the same UID
+ as the incomming component. We should reall also be
+ checking the RECURRENCE-ID. Another way to do this
+ operation is to us icalset_find_match(), which does use
+ the RECURRENCE-ID. */
+ match = icalset_fetch(cal,this_uid);
+ }
+
+
+ /* Classify the incoming component. The third argument is the
+ calid of the user who owns the calendar. In a real program,
+ you would probably switch() on the class.*/
+ class = icalclassify(c,match,"A@example.com");
+
+ printf("Test %d\n\
+Incoming: %s\n\
+Matched: %s\n\
+Classification: %s\n\n",
+ i,get_note(c),get_note(match),
+ icalproperty_enum_to_string(class));
+ }
+
+ return 0;
+}
+
+