aboutsummaryrefslogtreecommitdiffstats
path: root/camel/tests/folder
diff options
context:
space:
mode:
authorNot Zed <NotZed@HelixCode.com>2000-11-29 18:49:05 +0800
committerMichael Zucci <zucchi@src.gnome.org>2000-11-29 18:49:05 +0800
commitd38a417de3a1872b7776f12eeaf7e0bdbab880cc (patch)
treeab668964af7e0d9bedd12aac4fea83013123afc7 /camel/tests/folder
parentfe151f15997c2130bf5f71c752a960de05a1bf6b (diff)
downloadgsoc2013-evolution-d38a417de3a1872b7776f12eeaf7e0bdbab880cc.tar.gz
gsoc2013-evolution-d38a417de3a1872b7776f12eeaf7e0bdbab880cc.tar.zst
gsoc2013-evolution-d38a417de3a1872b7776f12eeaf7e0bdbab880cc.zip
Add a missed unref.
2000-11-29 Not Zed <NotZed@HelixCode.com> * tests/message/test2.c (main): Add a missed unref. * camel-stream-mem.c (camel_stream_mem_set_buffer): We must set ourselves as the owner of the byte-array. Weird, someone has modified this file (its been reindented), but i can't see any changelogs ... * tests/lib/messages.c (content_finalise): Fix memleak in tester, free byte array when our content object is deleted. * camel-folder-search.c (camel_folder_search_finalize): Yeah great, so the sexp is a gtk object, not a camel object. Isn't that going to be fun to fix? * camel-session.c (camel_session_finalise): Free the storage path. * providers/local/camel-local-store.c (camel_local_store_init): If store->folders is setup, free it first, then overwrite. Hmm, this seems a bit crappy to me. * camel-store.c (camel_store_init): Dont setup store->folders if its already setup. * camel-exception.c (camel_exception_setv): Removed a memleak. no need to strdup after a strdup_printf!!! * camel-address.c (camel_address_finalize): Free the address ptrarray, once finished. * providers/local/camel-local-folder.c (local_finalize): Make sure we dont leave the folder locked on close. (local_finalize): Free summary/search. * providers/local/camel-mh-summary.c (mh_summary_next_uid_string): Small memleak, always free name after using it. * camel-mime-part.c (set_content_object): Free txt after setting the header. * providers/local/camel-maildir-summary.c (maildir_summary_check): Fix a memleak, close the dir after scanning new. (message_info_free): Added so we can free the filename cached in the messageinfo. (camel_maildir_summary_finalise): Free the hostname. * tests/folder/test[12].c (main): Clear out camel-test before starting. * providers/local/camel-mbox-summary.c (mbox_summary_sync_quick): Because encode_x_evolution folds the line (sigh, because encode_param does, unlike every other function in camel-mime-utils), unfold the encoded result before comparing. (mbox_summary_sync_quick): Another small memleak, free xevnew once finished with it. * camel-mime-utils.c (header_decode_quoted_string): Removed a redundant check for c=0. (header_unfold): New function to un-fold headers. * providers/local/camel-local-summary.c (local_summary_encode_x_evolution): some problems with encoding tags, using the wrong output strings. (local_summary_encode_x_evolution): We dont need to append a ; either, param_list_format_append() will do it for us. ` svn path=/trunk/; revision=6711
Diffstat (limited to 'camel/tests/folder')
-rw-r--r--camel/tests/folder/Makefile.am6
-rw-r--r--camel/tests/folder/test1.c5
-rw-r--r--camel/tests/folder/test2.c13
-rw-r--r--camel/tests/folder/test3.c208
4 files changed, 145 insertions, 87 deletions
diff --git a/camel/tests/folder/Makefile.am b/camel/tests/folder/Makefile.am
index a036db99e5..aa430fa409 100644
--- a/camel/tests/folder/Makefile.am
+++ b/camel/tests/folder/Makefile.am
@@ -14,10 +14,10 @@ LDADD = \
check_PROGRAMS = \
test1 \
- test2
-# test3
+ test2 \
+ test3
-#TESTS = test1
+TESTS = test1 test2 test3
diff --git a/camel/tests/folder/test1.c b/camel/tests/folder/test1.c
index 020c511a82..9ead130dfd 100644
--- a/camel/tests/folder/test1.c
+++ b/camel/tests/folder/test1.c
@@ -33,9 +33,12 @@ int main(int argc, char **argv)
int i;
char *path;
+ camel_test_init(argc, argv);
+
ex = camel_exception_new();
- camel_test_init(argc, argv);
+ /* clear out any camel-test data */
+ system("/bin/rm -rf /tmp/camel-test");
session = camel_session_new("/tmp/camel-test", auth_callback, NULL, NULL);
diff --git a/camel/tests/folder/test2.c b/camel/tests/folder/test2.c
index c7a1af2c33..06053f76c0 100644
--- a/camel/tests/folder/test2.c
+++ b/camel/tests/folder/test2.c
@@ -43,10 +43,13 @@ int main(int argc, char **argv)
GPtrArray *uids;
const CamelMessageInfo *info;
- ex = camel_exception_new();
-
camel_test_init(argc, argv);
+ /* clear out any camel-test data */
+ system("/bin/rm -rf /tmp/camel-test");
+
+ ex = camel_exception_new();
+
session = camel_session_new("/tmp/camel-test", auth_callback, NULL, NULL);
/* todo: cross-check everything with folder_info checks as well */
@@ -221,7 +224,7 @@ int main(int argc, char **argv)
camel_folder_free_uids(folder, uids);
pull();
- camel_object_unref((CamelObject *)folder);
+ check_unref(folder, 1);
pull(); /* re-opening folder */
push("deleting test folder, with no messages in it");
@@ -229,12 +232,12 @@ int main(int argc, char **argv)
check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
pull();
- camel_object_unref((CamelObject *)store);
+ check_unref(store, 1);
camel_test_end();
}
}
- camel_object_unref((CamelObject *)session);
+ check_unref(session, 1);
camel_exception_free(ex);
return 0;
diff --git a/camel/tests/folder/test3.c b/camel/tests/folder/test3.c
index ecd0a46fe7..e231c4911a 100644
--- a/camel/tests/folder/test3.c
+++ b/camel/tests/folder/test3.c
@@ -13,6 +13,9 @@
#include <camel/camel-folder-summary.h>
#include <camel/camel-mime-message.h>
+#define ARRAY_LEN(x) (sizeof(x)/sizeof(x[0]))
+
+
/* god, who designed this horrid interface */
static char *auth_callback(CamelAuthCallbackMode mode,
char *data, gboolean secret,
@@ -33,12 +36,12 @@ test_folder_search_sub(CamelFolder *folder, const char *expr, int expected)
uids = camel_folder_search_by_expression(folder, expr, ex);
check(uids != NULL);
- check(uids->len == expected);
+ check_msg(uids->len == expected, "search %s expected %d got %d", expr, expected, uids->len);
check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
/* check the uid's are actually unique, too */
hash = g_hash_table_new(g_str_hash, g_str_equal);
- for (i=0;uids->len;i++) {
+ for (i=0;i<uids->len;i++) {
check(g_hash_table_lookup(hash, uids->pdata[i]) == NULL);
g_hash_table_insert(hash, uids->pdata[i], uids->pdata[i]);
}
@@ -54,9 +57,14 @@ test_folder_search(CamelFolder *folder, const char *expr, int expected)
{
char *matchall;
+#if 0
+ /* FIXME: ??? */
+ camel_test_nonfatal("most searches require match-all construct");
push("Testing search: %s", expr);
test_folder_search_sub(folder, expr, expected);
pull();
+ camel_test_fatal();
+#endif
matchall = g_strdup_printf("(match-all %s)", expr);
push("Testing search: %s", matchall);
@@ -65,7 +73,77 @@ test_folder_search(CamelFolder *folder, const char *expr, int expected)
pull();
}
-#define ARRAY_LEN(x) (sizeof(x)/sizeof(x[0]))
+static struct {
+ int counts[3];
+ char *expr;
+} searches[] = {
+ { { 100, 50, 0 }, "(header-contains \"subject\" \"subject\")" },
+ { { 100, 50, 0 }, "(header-contains \"subject\" \"Subject\")" },
+
+ { { 100, 50, 0 }, "(body-contains \"content\")" },
+ { { 100, 50, 0 }, "(body-contains \"Content\")" },
+
+ { { 0, 0, 0 }, "(user-flag \"every7\")" },
+ { { 100/13+1, 50/13+1, 0 }, "(user-flag \"every13\")" },
+ { { 1, 1, 0 }, "(= \"7tag1\" (user-tag \"every7\"))" },
+ { { 100/11+1, 50/11+1, 0 }, "(= \"11tag\" (user-tag \"every11\"))" },
+
+ { { 100/13 + 100/17 + 1, 50/13 + 50/17 + 2, 0 }, "(user-flag \"every13\" \"every17\")" },
+ { { 100/13 + 100/17 + 1, 50/13 + 50/17 + 2, 0 }, "(or (user-flag \"every13\") (user-flag \"every17\"))" },
+ { { 1, 0, 0 }, "(and (user-flag \"every13\") (user-flag \"every17\"))" },
+
+ { { 0, 0, 0 }, "(and (header-contains \"subject\" \"Test1\") (header-contains \"subject\" \"Test2\"))" },
+ /* we get 11 here as the header-contains is a substring match */
+ { { 11, 6, 0 }, "(and (header-contains \"subject\" \"Test1\") (header-contains \"subject\" \"subject\"))" },
+ { { 1, 1, 0 }, "(and (header-contains \"subject\" \"Test19\") (header-contains \"subject\" \"subject\"))" },
+ { { 0, 0, 0 }, "(and (header-contains \"subject\" \"Test191\") (header-contains \"subject\" \"subject\"))" },
+ { { 1, 1, 0 }, "(and (header-contains \"subject\" \"Test1\") (header-contains \"subject\" \"message99\"))" },
+
+ { { 22, 11, 0 }, "(or (header-contains \"subject\" \"Test1\") (header-contains \"subject\" \"Test2\"))" },
+ { { 2, 1, 0 }, "(or (header-contains \"subject\" \"Test16\") (header-contains \"subject\" \"Test99\"))" },
+ { { 1, 1, 0 }, "(or (header-contains \"subject\" \"Test123\") (header-contains \"subject\" \"Test99\"))" },
+ { { 100, 50, 0 }, "(or (header-contains \"subject\" \"Test1\") (header-contains \"subject\" \"subject\"))" },
+ { { 11, 6, 0 }, "(or (header-contains \"subject\" \"Test1\") (header-contains \"subject\" \"message99\"))" },
+
+ /* 72000 is 24*60*100 == half the 'sent date' of the messages */
+ { { 100/2, 50/2, 0 }, "(> 72000 (get-sent-date))" },
+ { { 100/2-1, 50/2, 0 }, "(< 72000 (get-sent-date))" },
+ { { 1, 0, 0 }, "(= 72000 (get-sent-date))" },
+ { { 0, 0, 0 }, "(= 72001 (get-sent-date))" },
+
+ { { (100/2-1)/17+1, (50/2-1)/17+1, 0 }, "(and (user-flag \"every17\") (< 72000 (get-sent-date)))" },
+ { { (100/2-1)/17+1, (50/2-1)/17, 0 }, "(and (user-flag \"every17\") (> 72000 (get-sent-date)))" },
+ { { (100/2-1)/13+1, (50/2-1)/13+1, 0 }, "(and (user-flag \"every13\") (< 72000 (get-sent-date)))" },
+ { { (100/2-1)/13+1, (50/2-1)/13+1, 0 }, "(and (user-flag \"every13\") (> 72000 (get-sent-date)))" },
+
+ { { 100/2+100/2/17, 50/2+50/2/17, 0 }, "(or (user-flag \"every17\") (< 72000 (get-sent-date)))" },
+ { { 100/2+100/2/17+1, 50/2+50/2/17+1, 0 }, "(or (user-flag \"every17\") (> 72000 (get-sent-date)))" },
+ { { 100/2+100/2/13, 50/2+50/2/13+1, 0 }, "(or (user-flag \"every13\") (< 72000 (get-sent-date)))" },
+ { { 100/2+100/2/13+1, 50/2+50/2/13+1, 0 }, "(or (user-flag \"every13\") (> 72000 (get-sent-date)))" },
+};
+
+static void
+run_search(CamelFolder *folder, int m)
+{
+ int i, j = 0;
+
+ check(m == 50 || m == 100 || m == 0);
+
+ /* *shrug* messy, but it'll do */
+ if (m==50)
+ j = 1;
+ else if (m==0)
+ j = 2;
+
+ push("performing searches, expected %d", m);
+ for (i=0;i<ARRAY_LEN(searches);i++) {
+ push("running search %d: %s", i, searches[i].expr);
+ test_folder_search(folder, searches[i].expr, searches[i].counts[j]);
+ pull();
+ }
+ pull();
+}
+
static char *stores[] = {
"mbox:///tmp/camel-test/mbox",
@@ -84,9 +162,13 @@ int main(int argc, char **argv)
int indexed;
GPtrArray *uids;
+ gtk_init(&argc, &argv);
+ camel_test_init(argc, argv);
+
ex = camel_exception_new();
- camel_test_init(argc, argv);
+ /* clear out any camel-test data */
+ system("/bin/rm -rf /tmp/camel-test");
session = camel_session_new("/tmp/camel-test", auth_callback, NULL, NULL);
@@ -137,7 +219,6 @@ int main(int argc, char **argv)
camel_mime_message_set_subject(msg, subject);
camel_mime_message_set_date(msg, j*60*24, 0);
-
pull();
push("appending simple message %d", j);
@@ -175,99 +256,70 @@ int main(int argc, char **argv)
camel_folder_free_uids(folder, uids);
pull();
- /* should try invalid search strings too */
-
- /* try some searches */
- push("performing searches");
- test_folder_search(folder, "(header-contains \"subject\" \"subject\")", 100);
- test_folder_search(folder, "(header-contains \"subject\" \"Subject\")", 100);
-
- test_folder_search(folder, "(body-contains \"content\")", 100);
- test_folder_search(folder, "(body-contains \"Content\")", 100);
-
- test_folder_search(folder, "(user-flag \"every7\")", 0);
- test_folder_search(folder, "(user-flag \"every13\")", 100/13);
- test_folder_search(folder, "(= \"7tag1\" (user-tag \"every7\"))", 1);
- test_folder_search(folder, "(= \"11tag\" (user-tag \"every11\"))", 100/11);
-
- test_folder_search(folder, "(user-flag \"every13\" \"every17\")", 100/13 + 100/17);
- test_folder_search(folder, "(or (user-flag \"every13\") (user-flag \"every17\"))", 100/13 + 100/17);
- test_folder_search(folder, "(and (user-flag \"every13\") (user-flag \"every17\"))", 0);
-
- test_folder_search(folder, "(and (header-contains \"subject\" \"Test1\")"
- "(header-contains \"subject\" \"Test2\"))", 0);
- test_folder_search(folder, "(and (header-contains \"subject\" \"Test1\")"
- "(header-contains \"subject\" \"subject\"))", 1);
- test_folder_search(folder, "(and (header-contains \"subject\" \"Test1\")"
- "(header-contains \"subject\" \"message99\"))", 1);
-
- test_folder_search(folder, "(or (header-contains \"subject\" \"Test1\")"
- "(header-contains \"subject\" \"Test2\"))", 2);
- test_folder_search(folder, "(or (header-contains \"subject\" \"Test1\")"
- "(header-contains \"subject\" \"subject\"))", 100);
- test_folder_search(folder, "(or (header-contains \"subject\" \"Test1\")"
- "(header-contains \"subject\" \"message99\"))", 1);
-
- /* 7200 is 24*60*50 == half the 'sent date' of the messages */
- test_folder_search(folder, "(> 7200 (get-sent-date))", 49);
- test_folder_search(folder, "(< 7200 (get-sent-date))", 49);
- test_folder_search(folder, "(= 7200 (get-sent-date))", 1);
- test_folder_search(folder, "(= 7201 (get-sent-date))", 0);
-
- test_folder_search(folder, "(and (user-flag \"every17\") (< 7200 (get-sent-date)))", 49/17);
- test_folder_search(folder, "(and (user-flag \"every17\") (> 7200 (get-sent-date)))", 49/17-1);
- test_folder_search(folder, "(and (user-flag \"every13\") (< 7200 (get-sent-date)))", 49/13);
- test_folder_search(folder, "(and (user-flag \"every13\") (> 7200 (get-sent-date)))", 49/13-1);
-
- test_folder_search(folder, "(or (user-flag \"every17\") (< 7200 (get-sent-date)))", 49);
- test_folder_search(folder, "(or (user-flag \"every17\") (> 7200 (get-sent-date)))", 49);
- test_folder_search(folder, "(or (user-flag \"every13\") (< 7200 (get-sent-date)))", 49);
- test_folder_search(folder, "(or (user-flag \"every13\") (> 7200 (get-sent-date)))", 49);
-
- push("deleting every 2nd message & expunging");
+ push("Search before sync");
+ run_search(folder, 100);
+ pull();
+
+ push("syncing folder, searching");
+ camel_folder_sync(folder, FALSE, ex);
+ run_search(folder, 100);
+ pull();
+
+ push("syncing wiht expunge, search");
+ camel_folder_sync(folder, TRUE, ex);
+ run_search(folder, 100);
+ pull();
+
+ push("deleting every 2nd message");
uids = camel_folder_get_uids(folder);
check(uids->len == 100);
- for (j=0;j<uids->len;j++) {
+ for (j=0;j<uids->len;j+=2) {
camel_folder_delete_message(folder, uids->pdata[j]);
}
+ camel_folder_free_uids(folder, uids);
+ run_search(folder, 100);
- push("searches after deletions, before sync");
- test_folder_search(folder, "(header-contains \"subject\" \"subject\")", 100);
- test_folder_search(folder, "(body-contains \"content\")", 100);
- pull();
-
+ push("syncing");
camel_folder_sync(folder, FALSE, ex);
-
- push("searches after sync, before expunge");
- test_folder_search(folder, "(header-contains \"subject\" \"subject\")", 100);
- test_folder_search(folder, "(body-contains \"content\")", 100);
+ check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
+ run_search(folder, 100);
pull();
+ push("expunging");
camel_folder_expunge(folder, ex);
check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- camel_folder_free_uids(folder, uids);
+ run_search(folder, 50);
pull();
- /* more searches */
- push("searches after deletions");
- test_folder_search(folder, "(header-contains \"subject\" \"subject\")", 50);
- test_folder_search(folder, "(body-contains \"content\")", 50);
pull();
- push("deleting remaining messages & expunging");
+ push("closing and re-opening folder");
+ check_unref(folder, 1);
+ folder = camel_store_get_folder(store, "testbox", flags&~(CAMEL_STORE_FOLDER_CREATE), ex);
+ check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
+ check(folder != NULL);
+
+ push("deleting remaining messages");
uids = camel_folder_get_uids(folder);
- check(uids->len == 100);
+ check(uids->len == 50);
for (j=0;j<uids->len;j++) {
camel_folder_delete_message(folder, uids->pdata[j]);
}
+ camel_folder_free_uids(folder, uids);
+ run_search(folder, 50);
+
+ push("syncing");
+ camel_folder_sync(folder, FALSE, ex);
+ check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
+ run_search(folder, 50);
+ pull();
+
+ push("expunging");
camel_folder_expunge(folder, ex);
check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
- camel_folder_free_uids(folder, uids);
+ run_search(folder, 0);
pull();
- push("searches wtih no messages");
- test_folder_search(folder, "(header-contains \"subject\" \"subject\")", 0);
- test_folder_search(folder, "(body-contains \"content\")", 0);
pull();
check_unref(folder, 1);
@@ -278,12 +330,12 @@ int main(int argc, char **argv)
check_msg(!camel_exception_is_set(ex), "%s", camel_exception_get_description(ex));
pull();
- camel_object_unref((CamelObject *)store);
+ check_unref(store, 1);
camel_test_end();
}
}
- camel_object_unref((CamelObject *)session);
+ check_unref(session, 1);
camel_exception_free(ex);
return 0;