diff options
-rw-r--r-- | tests/Makefile.am | 8 | ||||
-rw-r--r-- | tests/test11.c | 16 | ||||
-rw-r--r-- | tests/test14.c | 177 |
3 files changed, 197 insertions, 4 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am index 4f8214829b..8ce3cffb3d 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -34,6 +34,13 @@ LDADD = \ # $(GNOME_LIBDIR) \ # $(GNOMEUI_LIBS) $(INTLLIBS) $(EXTRA_GNOME_LIBS) +test14_LDADD = \ + $(top_builddir)/camel/providers/vee/libcamelvee.la \ + $(top_builddir)/camel/libcamel.la \ + $(top_builddir)/libibex/libibex.la \ + $(GNOME_LIBDIR) \ + $(GNOMEUI_LIBS) $(INTLLIBS) $(EXTRA_GNOME_LIBS) + #test12_LDADD = \ # $(top_builddir)/camel/libcamel.la \ # $(top_builddir)/camel/providers/nntp/libcamelnntp.la \ @@ -61,6 +68,7 @@ noinst_PROGRAMS = \ test10 \ test11 \ test13 \ + test14 \ test-movemail \ test-url \ $(THREAD_RELATED_TESTS) diff --git a/tests/test11.c b/tests/test11.c index 25f7d88928..1323a5f90b 100644 --- a/tests/test11.c +++ b/tests/test11.c @@ -44,7 +44,7 @@ main (int argc, char**argv) camel_provider_load (session, "../camel/providers/mbox/.libs/libcamelmbox.so.0", ex); if (camel_exception_get_id (ex)) { - printf ("Exceptions suck\n"); + printf ("Exceptions suck: %s\n", camel_exception_get_description (ex)); return 1; } @@ -94,13 +94,15 @@ main (int argc, char**argv) CamelMimeMessage *m; printf("uid: %s\n", (char *) n->data); -#if 0 m = camel_folder_get_message_by_uid(folder, n->data, ex); if (camel_exception_get_id (ex)) { printf ("Cannot get message\n" "Full description : %s\n", camel_exception_get_description (ex)); + camel_exception_init(ex); } else { + +#if 1 camel_folder_append_message(outbox, m, ex); @@ -112,14 +114,20 @@ main (int argc, char**argv) printf("Removing matching message from source folder?\n"); camel_mime_message_set_flags(m, CAMEL_MESSAGE_DELETED, CAMEL_MESSAGE_DELETED); /* camel_mime_message_set_flags(m, CAMEL_MESSAGE_ANSWERED, CAMEL_MESSAGE_ANSWERED);*/ - } - camel_mime_message_unref(m); #endif + + } + if (m) + gtk_object_unref(m); n = g_list_next(n); } + camel_folder_close (outbox, TRUE, ex); camel_folder_close (folder, TRUE, ex); + gtk_object_unref((GtkObject *)outbox); + gtk_object_unref((GtkObject *)folder); + return 0; } diff --git a/tests/test14.c b/tests/test14.c new file mode 100644 index 0000000000..80963415db --- /dev/null +++ b/tests/test14.c @@ -0,0 +1,177 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ + +/* + Test vfolder. + */ + + +#include <camel/camel.h> +#include <camel/camel-exception.h> +#include <camel/camel-folder.h> +#include <camel/providers/vee/camel-vee-folder.h> +#include <camel/md5-utils.h> +#include <sys/types.h> +#include <unistd.h> +#include <errno.h> +#include <string.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <glib.h> + +static void +dump_message_content(CamelDataWrapper *object) +{ + CamelDataWrapper *containee; + CamelStream *stream; + int parts, i; + int len; + int left; + char buffer[128]; + + printf("Dumping message ..."); + + containee = camel_medium_get_content_object(CAMEL_MEDIUM(object)); + + if (containee) { + char *type = gmime_content_field_get_mime_type(containee->mime_type); + + printf("type = %s\n", type); + + if (CAMEL_IS_MULTIPART(containee)) { + parts = camel_multipart_get_number (CAMEL_MULTIPART(containee)); + printf("multipart message, scanning contents %d parts ...\n", parts); + for (i=0;i<parts;i++) { + dump_message_content(CAMEL_DATA_WRAPPER (camel_multipart_get_part(CAMEL_MULTIPART(containee), i))); + } + } else if (CAMEL_IS_MIME_MESSAGE(containee)) { + dump_message_content((CamelDataWrapper *)containee); + } else { + stream = camel_data_wrapper_get_output_stream(containee); + left = 0; + + if (stream) { + while ( (len = camel_stream_read(stream, buffer+left, sizeof(buffer)-left, NULL)) > 0) { + fwrite(buffer, len, 1, stdout); + } + printf("\n"); + } else { + g_warning("cannot get stream for message?"); + } + } + + g_free(type); + } else { + printf("no containee?\n"); + } +} + + +static char * +auth_callback(char *prompt, gboolean secret, + CamelService *service, char *item, + CamelException *ex) +{ + printf ("auth_callback called: %s\n", prompt); + return NULL; +} + +int +main (int argc, char**argv) +{ + CamelSession *session; + CamelException *ex; + CamelStore *store; + gchar *store_url = "vfolder:"; + CamelFolder *folder; + GList *n, *matches; + + gtk_init (&argc, &argv); + camel_init (); + ex = camel_exception_new (); + + session = camel_session_new (auth_callback); + + camel_provider_load (session, "../camel/providers/vee/.libs/libcamelvee.so.0", ex); + if (camel_exception_get_id (ex)) { + printf ("Exceptions suck: %s\n", camel_exception_get_description (ex)); + return 1; + } + + store = camel_session_get_store (session, store_url, ex); + if (camel_exception_get_id (ex)) { + printf ("Exception caught in camel_session_get_store\n" + "Full description : %s\n", camel_exception_get_description (ex)); + return -1; + } + + printf("get folder\n"); + + folder = camel_store_get_folder (store, "gnome_email?(match-all (header-contains \"subject\" \"gnome\"))", ex); + if (camel_exception_get_id (ex)) { + printf ("Exception caught in camel_store_get_folder\n" + "Full description : %s\n", camel_exception_get_description (ex)); + return -1; + } + + /* setup searched folders */ + { + CamelFolder *subfolder; + CamelStore *substore; + + substore = camel_session_get_store (session, "mbox:///home/notzed/evolution/local/Inbox", ex); + subfolder = camel_store_get_folder(substore, "mbox", ex); + camel_folder_open (subfolder, FOLDER_OPEN_READ, ex); + camel_vee_folder_add_folder(folder, subfolder); + + if (camel_exception_get_id (ex)) { + printf ("Exception caught in camel_store_get_folder\n" + "Full description : %s\n", camel_exception_get_description (ex)); + return -1; + } + + substore = camel_session_get_store (session, "mbox:///home/notzed/evolution/local/Outbox", ex); + subfolder = camel_store_get_folder(substore, "mbox", ex); + camel_folder_open (subfolder, FOLDER_OPEN_READ, ex); + camel_vee_folder_add_folder(folder, subfolder); + + if (camel_exception_get_id (ex)) { + printf ("Exception caught in camel_store_get_folder\n" + "Full description : %s\n", camel_exception_get_description (ex)); + return -1; + } + } + + printf("open folder\n"); + + camel_folder_open (folder, FOLDER_OPEN_READ, ex); + if (camel_exception_get_id (ex)) { + printf ("Exception caught when trying to open the folder\n" + "Full description : %s\n", camel_exception_get_description (ex)); + return -1; + } + + printf("vfolder's uid's:\n"); + n = camel_folder_get_uid_list(folder, ex); + while (n) { + CamelMimeMessage *m; + + printf("uid: %s\n", (char *) n->data); + + m = camel_folder_get_message_by_uid(folder, n->data, ex); + if (m) { + dump_message_content(m); + gtk_object_unref(m); + } + n = g_list_next(n); + } + + camel_folder_close (folder, TRUE, ex); + + gtk_object_unref((GtkObject *)folder); + + return 0; +} + + + + |