Changeset 1325

Show
Ignore:
Timestamp:
12/17/06 15:39:36
Author:
oysteigi
Message:

Add tests for add_msg, get_msg, and get_msg_async

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/libtinymail-test/tny-folder-test.c

    r1324 r1325  
    3838static TnyIterator *aiter; 
    3939static gchar *str; 
    40 static gboolean callback_completed = FALSE; 
     40static gboolean callback_completed; 
     41static GError *err; 
    4142 
    4243typedef void (*performer) (TnyFolder *folder); 
     
    4546do_test_folder (TnyFolder *folder) 
    4647{ 
    47     iface = folder; 
     48       iface = folder; 
    4849} 
    4950 
     
    5152second_folder (TnyFolder *folder) 
    5253{ 
    53     folder2 = folder; 
     54       folder2 = folder; 
    5455} 
    5556 
     
    7778        } 
    7879 
    79         g_object_unref (G_OBJECT (iter)); 
    80         g_object_unref (G_OBJECT (folders)); 
     80        g_object_unref (G_OBJECT (iter)); 
     81        g_object_unref (G_OBJECT (folders)); 
    8182} 
    8283 
     
    8788        account_store = tny_test_account_store_new (TRUE, NULL); 
    8889        tny_account_store_get_accounts (account_store, accounts,  
    89                         TNY_ACCOUNT_STORE_STORE_ACCOUNTS); 
     90                                       TNY_ACCOUNT_STORE_STORE_ACCOUNTS); 
    9091        aiter = tny_list_create_iterator (accounts); 
    9192        tny_iterator_first (aiter); 
     
    113114} 
    114115 
    115         /* TODO:  
    116         test signal folder inserted and folders_reloaded (hard to test) 
    117         test methods add_msg, get_msg, get_msg_async, 
    118         test transfer_msgs, transfer_msgs_async, copy 
    119         */ 
    120  
     116/* TODO:  
     117   test signal folder inserted and folders_reloaded (hard to test) 
     118   test transfer_msgs, transfer_msgs_async, copy 
     119   test msg_remove_strategy 
     120*/ 
     121 
     122 
     123static gboolean 
     124timeout (gpointer data) 
     125
     126        g_print ("Async callback timed out\n"); 
     127        gtk_main_quit (); 
     128        return FALSE; 
     129
    121130 
    122131START_TEST (tny_folder_test_get_headers_sync) 
     
    147156 
    148157 
    149 START_TEST (tny_folder_test_remove_message) 
     158static void 
     159message_received (TnyFolder *folder, TnyMsg *msg, GError **err, gpointer user_data) 
     160
     161        fail_unless (*err == NULL, "Error receiving message async"); 
     162 
     163        callback_completed = TRUE; 
     164        gtk_main_quit (); 
     165
     166 
     167START_TEST (tny_folder_test_msg) 
    150168{ 
    151169        TnyList *headers; 
     
    153171        TnyIterator *iter; 
    154172        TnyHeader *header; 
     173        TnyMsg *msg; 
     174        TnyHeaderFlags hflags; 
    155175         
    156176        if (iface == NULL) 
     
    174194        tny_iterator_first (iter); 
    175195        header = (TnyHeader*)tny_iterator_get_current (iter); 
    176          
     196 
     197        /* Test get_msg */ 
     198        err = NULL; 
     199        msg = tny_folder_get_msg (iface, header, &err); 
     200        fail_unless (err == NULL, "Error fetching message"); 
     201 
     202        /* Test get_msg_async */ 
     203        callback_completed = FALSE; 
     204        err = NULL; 
     205        tny_folder_get_msg_async (iface, header, message_received, NULL); 
     206        g_timeout_add (1000*6, timeout, NULL); 
     207        gtk_main (); 
     208        fail_unless (callback_completed, "Message was never received"); 
     209 
    177210        /* Flag as removed */ 
    178211        tny_folder_remove_msg (iface, header, NULL); 
     
    211244         
    212245        str = g_strdup_printf ("After removal, the header count is %d, whereas it should be %d\n", headers_len, orig_length-1); 
    213         fail_unless (new_len == orig_length-1, str); 
    214         g_free (str); 
    215          
     246        fail_unless (headers_len == orig_length-1, str); 
     247        g_free (str); 
     248 
     249        /* Test add_msg */ 
     250        err = NULL; 
     251        tny_folder_add_msg (iface, msg, &err); 
     252        fail_unless (err == NULL, "Error adding message to folder"); 
     253        tny_folder_refresh (iface, NULL); 
     254        new_len = tny_folder_get_all_count (iface); 
     255        fail_unless (new_len == orig_length, "After readd of removed message, message count should be the original"); 
     256 
     257        g_object_unref (G_OBJECT (msg)); 
    216258} 
    217259END_TEST 
     
    219261START_TEST (tny_folder_test_properties) 
    220262{ 
    221      GError *err; 
    222      gint count; 
    223  
    224      if (iface == NULL) 
    225      { 
    226           g_warning ("Test cannot continue (are you online?)"); 
    227           return; 
    228      } 
    229  
    230      fail_unless (strcmp (tny_folder_get_id (iface), "INBOX/tny-folder-iface-test") == 0, "Folder had wrong ID property"); 
    231      err = NULL; 
    232      tny_folder_refresh (iface, &err);  
    233      fail_unless (err == NULL, "Error refreshing folder"); 
    234      fail_unless (tny_folder_get_all_count (iface) > 0, "Message count too small"); 
    235      fail_unless (tny_folder_get_unread_count (iface) == 2, "Unread count is wrong"); 
    236      fail_unless (tny_folder_get_account (iface) == TNY_ACCOUNT (account), "Property account has wrong value"); 
    237      fail_unless (tny_folder_get_folder_type (iface) == TNY_FOLDER_TYPE_NORMAL, "Folder type should be NORMAL"); 
    238      recurse_folders (TNY_FOLDER_STORE (account), NULL, "INBOX", second_folder); 
    239      g_object_ref (G_OBJECT (folder2)); 
    240      fail_unless (tny_folder_get_folder_type (folder2) == TNY_FOLDER_TYPE_INBOX, "Folder type should be INBOX"); 
    241      g_object_unref (G_OBJECT (folder2)); 
     263        gint count; 
     264 
     265        if (iface == NULL) 
     266        { 
     267                g_warning ("Test cannot continue (are you online?)"); 
     268                return; 
     269        } 
     270 
     271        fail_unless (strcmp (tny_folder_get_id (iface), "INBOX/tny-folder-iface-test") == 0, "Folder had wrong ID property"); 
     272        err = NULL; 
     273        tny_folder_refresh (iface, &err);  
     274        fail_unless (err == NULL, "Error refreshing folder"); 
     275        fail_unless (tny_folder_get_all_count (iface) > 0, "Message count too small"); 
     276        fail_unless (tny_folder_get_unread_count (iface) == 2, "Unread count is wrong"); 
     277        fail_unless (tny_folder_get_account (iface) == TNY_ACCOUNT (account), "Property account has wrong value"); 
     278        fail_unless (tny_folder_get_folder_type (iface) == TNY_FOLDER_TYPE_NORMAL, "Folder type should be NORMAL"); 
     279        recurse_folders (TNY_FOLDER_STORE (account), NULL, "INBOX", second_folder); 
     280        g_object_ref (G_OBJECT (folder2)); 
     281        fail_unless (tny_folder_get_folder_type (folder2) == TNY_FOLDER_TYPE_INBOX, "Folder type should be INBOX"); 
     282        g_object_unref (G_OBJECT (folder2)); 
    242283} 
    243284END_TEST 
     
    245286START_TEST (tny_folder_test_name) 
    246287{ 
    247      const gchar *name = "tny-folder-iface-test"; 
    248      const gchar *temp_name = "tny-folder-iface-test_temp"; 
    249      GError *err; 
    250  
    251      if (iface == NULL) 
    252      { 
    253           g_warning ("Test cannot continue (are you online?)"); 
    254           return; 
    255      } 
    256  
    257      fail_unless (strcmp (tny_folder_get_name (iface), name) == 0, "Folder had wrong name property"); 
    258      err = NULL; 
    259      tny_folder_set_name (iface, temp_name, &err); 
    260      fail_unless (err == NULL, "An error occured while renaming folder"); 
    261      fail_unless (strcmp (tny_folder_get_name (iface), temp_name) == 0, "Folder had wrong name property"); 
    262      err = NULL; 
    263      tny_folder_set_name (iface, name, &err); 
    264      fail_unless (err == NULL, "An error occured while renaming folder"); 
    265      fail_unless (strcmp (tny_folder_get_name (iface), name) == 0, "Folder had wrong name property"); 
     288        const gchar *name = "tny-folder-iface-test"; 
     289        const gchar *temp_name = "tny-folder-iface-test_temp"; 
     290 
     291        if (iface == NULL) 
     292        { 
     293                g_warning ("Test cannot continue (are you online?)"); 
     294                return; 
     295        } 
     296 
     297        fail_unless (strcmp (tny_folder_get_name (iface), name) == 0, "Folder had wrong name property"); 
     298        err = NULL; 
     299        tny_folder_set_name (iface, temp_name, &err); 
     300        fail_unless (err == NULL, "An error occured while renaming folder"); 
     301        fail_unless (strcmp (tny_folder_get_name (iface), temp_name) == 0, "Folder had wrong name property"); 
     302        err = NULL; 
     303        tny_folder_set_name (iface, name, &err); 
     304        fail_unless (err == NULL, "An error occured while renaming folder"); 
     305        fail_unless (strcmp (tny_folder_get_name (iface), name) == 0, "Folder had wrong name property"); 
    266306} 
    267307END_TEST 
     
    269309START_TEST (tny_folder_test_subscribed) 
    270310{ 
    271      TnyFolder *folder; 
    272  
    273      fail_unless (tny_folder_is_subscribed (iface), "Subscription property should be set"); 
    274      recurse_folders (TNY_FOLDER_STORE (account), NULL, "INBOX/unsubscribed_folder", second_folder); 
    275      g_object_ref (G_OBJECT (folder2)); 
    276      fail_unless (!tny_folder_is_subscribed (folder2), "Subscription property should be unset"); 
    277      g_object_unref (G_OBJECT (folder2)); 
    278 
    279 END_TEST 
    280  
    281 static void 
    282 refresh_progress (TnyFolder *folder, const gchar *what, gint status, gpointer user_data) 
    283 
    284      g_print ("."); 
     311        TnyFolder *folder; 
     312 
     313        fail_unless (tny_folder_is_subscribed (iface), "Subscription property should be set"); 
     314        recurse_folders (TNY_FOLDER_STORE (account), NULL, "INBOX/unsubscribed_folder", second_folder); 
     315        g_object_ref (G_OBJECT (folder2)); 
     316        fail_unless (!tny_folder_is_subscribed (folder2), "Subscription property should be unset"); 
     317        g_object_unref (G_OBJECT (folder2)); 
     318
     319END_TEST 
     320 
     321START_TEST (tny_folder_test_refresh) 
     322
     323        if (iface == NULL) 
     324        { 
     325                g_warning ("Test cannot continue (are you online?)"); 
     326                return; 
     327        } 
     328 
     329        err = NULL; 
     330        tny_folder_refresh (iface, &err); 
     331        fail_unless (tny_folder_get_unread_count (iface) == 2, "Message count not updated"); 
     332
     333END_TEST 
     334 
     335static void 
     336refresh_progress (TnyFolder *folder, const gchar *what, gint status, gint oftotal, gpointer user_data) 
     337
     338        g_print ("."); 
    285339} 
    286340 
     
    288342folder_refreshed (TnyFolder *folder, gboolean cancelled, GError **err, gpointer user_data) 
    289343{ 
    290      g_print ("done\n"); 
    291      fail_unless (!cancelled, "Async refresh cancelled"); 
    292      callback_completed = TRUE; 
    293      gtk_main_quit (); 
    294 
    295  
    296 static gboolean 
    297 timeout (gpointer data) 
    298 
    299      g_print ("timeout\n"); 
    300      gtk_main_quit (); 
    301      return FALSE; 
    302 
    303  
    304 START_TEST (tny_folder_test_refresh) 
    305 
    306      GError *err; 
    307  
    308      if (iface == NULL) 
    309      { 
    310           g_warning ("Test cannot continue (are you online?)"); 
    311           return; 
    312      } 
    313  
    314      err = NULL; 
    315      tny_folder_refresh (iface, &err); 
    316      fail_unless (tny_folder_get_unread_count (iface) == 2, "Message count not updated"); 
    317 
    318 END_TEST 
     344        g_print ("done\n"); 
     345        fail_unless (!cancelled, "Async refresh cancelled"); 
     346        callback_completed = TRUE; 
     347        gtk_main_quit (); 
     348
    319349 
    320350START_TEST (tny_folder_test_refresh_async) 
    321351{ 
    322      GError *err; 
    323  
    324      if (iface == NULL) 
    325      { 
    326           g_warning ("Test cannot continue (are you online?)"); 
    327           return; 
    328      } 
    329  
    330      err = NULL; 
    331      g_print ("Refreshing folder.."); 
    332      tny_folder_refresh_async (iface, folder_refreshed, refresh_progress, &err); 
    333      g_timeout_add (1000*6, timeout, NULL); 
    334      gtk_main (); 
    335      fail_unless (callback_completed, "Refresh callback was never called"); 
    336      fail_unless (tny_folder_get_unread_count (iface) == 2, "Message count not updated"); 
     352        if (iface == NULL) 
     353        { 
     354                g_warning ("Test cannot continue (are you online?)"); 
     355                return; 
     356        } 
     357 
     358        err = NULL; 
     359        g_print ("Refreshing folder.."); 
     360        callback_completed = FALSE; 
     361        tny_folder_refresh_async (iface, folder_refreshed, refresh_progress, &err); 
     362        g_timeout_add (1000*6, timeout, NULL); 
     363        gtk_main (); 
     364        fail_unless (callback_completed, "Refresh callback was never called"); 
     365        fail_unless (tny_folder_get_unread_count (iface) == 2, "Message count not updated"); 
    337366} 
    338367END_TEST 
     
    341370create_tny_folder_suite (void) 
    342371{ 
    343      TCase *tc = NULL; 
    344      Suite *s = suite_create ("Folder"); 
    345  
    346      tc = tcase_create ("Get Headers Sync"); 
    347      tcase_set_timeout (tc, 5); 
    348      tcase_add_checked_fixture (tc, tny_folder_test_setup, tny_folder_test_teardown); 
    349      tcase_add_test (tc, tny_folder_test_get_headers_sync); 
    350      suite_add_tcase (s, tc); 
    351  
    352      tc = tcase_create ("Remove Message"); 
    353      tcase_set_timeout (tc, 5); 
    354      tcase_add_checked_fixture (tc, tny_folder_test_setup, tny_folder_test_teardown); 
    355      tcase_add_test (tc, tny_folder_test_remove_message); 
    356      suite_add_tcase (s, tc); 
    357  
    358      tc = tcase_create ("Properties"); 
    359      tcase_add_checked_fixture (tc, tny_folder_test_setup, tny_folder_test_teardown); 
    360      tcase_add_test (tc, tny_folder_test_properties); 
    361      suite_add_tcase (s, tc); 
    362  
    363      tc = tcase_create ("Name"); 
    364      tcase_set_timeout (tc, 15); 
    365      tcase_add_checked_fixture (tc, tny_folder_test_setup, tny_folder_test_teardown); 
    366      tcase_add_test (tc, tny_folder_test_name); 
    367      suite_add_tcase (s, tc); 
    368  
    369      tc = tcase_create ("Subscribed"); 
    370      tcase_add_checked_fixture (tc, tny_folder_test_setup, tny_folder_test_teardown); 
    371      tcase_add_test (tc, tny_folder_test_subscribed); 
    372      suite_add_tcase (s, tc); 
    373  
    374      tc = tcase_create ("Refresh"); 
    375      tcase_set_timeout (tc, 10); 
    376      tcase_add_checked_fixture (tc, tny_folder_test_setup, tny_folder_test_teardown); 
    377      tcase_add_test (tc, tny_folder_test_refresh); 
    378      tcase_add_test (tc, tny_folder_test_refresh_async); 
    379      suite_add_tcase (s, tc); 
    380  
    381      return s; 
    382 } 
     372       TCase *tc = NULL; 
     373       Suite *s = suite_create ("Folder"); 
     374 
     375       tc = tcase_create ("Get Headers Sync"); 
     376       tcase_set_timeout (tc, 5); 
     377       tcase_add_checked_fixture (tc, tny_folder_test_setup, tny_folder_test_teardown); 
     378       tcase_add_test (tc, tny_folder_test_get_headers_sync); 
     379       suite_add_tcase (s, tc); 
     380 
     381       tc = tcase_create ("Get/Get Async/Remove/Add Message"); 
     382       tcase_set_timeout (tc, 5); 
     383       tcase_add_checked_fixture (tc, tny_folder_test_setup, tny_folder_test_teardown); 
     384       tcase_add_test (tc, tny_folder_test_msg); 
     385       suite_add_tcase (s, tc); 
     386 
     387       tc = tcase_create ("Properties"); 
     388       tcase_add_checked_fixture (tc, tny_folder_test_setup, tny_folder_test_teardown); 
     389       tcase_add_test (tc, tny_folder_test_properties); 
     390       suite_add_tcase (s, tc); 
     391 
     392       tc = tcase_create ("Name"); 
     393       tcase_set_timeout (tc, 15); 
     394       tcase_add_checked_fixture (tc, tny_folder_test_setup, tny_folder_test_teardown); 
     395       tcase_add_test (tc, tny_folder_test_name); 
     396       suite_add_tcase (s, tc); 
     397 
     398       tc = tcase_create ("Subscribed"); 
     399       tcase_add_checked_fixture (tc, tny_folder_test_setup, tny_folder_test_teardown); 
     400       tcase_add_test (tc, tny_folder_test_subscribed); 
     401       suite_add_tcase (s, tc); 
     402 
     403       tc = tcase_create ("Refresh"); 
     404       tcase_set_timeout (tc, 10); 
     405       tcase_add_checked_fixture (tc, tny_folder_test_setup, tny_folder_test_teardown); 
     406       tcase_add_test (tc, tny_folder_test_refresh); 
     407       tcase_add_test (tc, tny_folder_test_refresh_async); 
     408       suite_add_tcase (s, tc); 
     409 
     410       return s; 
     411}