diff options
author | Not Zed <NotZed@HelixCode.com> | 2000-11-29 18:49:05 +0800 |
---|---|---|
committer | Michael Zucci <zucchi@src.gnome.org> | 2000-11-29 18:49:05 +0800 |
commit | d38a417de3a1872b7776f12eeaf7e0bdbab880cc (patch) | |
tree | ab668964af7e0d9bedd12aac4fea83013123afc7 /camel/tests/folder/test3.c | |
parent | fe151f15997c2130bf5f71c752a960de05a1bf6b (diff) | |
download | gsoc2013-evolution-d38a417de3a1872b7776f12eeaf7e0bdbab880cc.tar gsoc2013-evolution-d38a417de3a1872b7776f12eeaf7e0bdbab880cc.tar.gz gsoc2013-evolution-d38a417de3a1872b7776f12eeaf7e0bdbab880cc.tar.bz2 gsoc2013-evolution-d38a417de3a1872b7776f12eeaf7e0bdbab880cc.tar.lz gsoc2013-evolution-d38a417de3a1872b7776f12eeaf7e0bdbab880cc.tar.xz 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/test3.c')
-rw-r--r-- | camel/tests/folder/test3.c | 208 |
1 files changed, 130 insertions, 78 deletions
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; |