Fixes a crash when saving attachments fails
[modest] / tests / check_modest-conf.c
index 687405e..668a146 100644 (file)
  */
 
 #include <check.h>
+#include <modest-defs.h>
 #include <modest-conf.h>
+#include <gtk/gtk.h>
+#include <string.h>
+#include <modest-init.h>
 
+static void
+fx_setup_modest_conf ()
+{
+       fail_unless (gtk_init_check (NULL, NULL));
+
+       fail_unless (g_setenv (MODEST_DIR_ENV, ".modesttest", TRUE));
+       fail_unless (g_setenv (MODEST_NAMESPACE_ENV, "/apps/modesttest", TRUE));
 
+       fail_unless (modest_init (0, NULL), "Failed running modest_init");
+
+}
 
 START_TEST (test_modest_conf_new)
 {
@@ -43,6 +57,116 @@ START_TEST (test_modest_conf_new)
 END_TEST
 
 
+START_TEST (test_modest_conf_store_retrieve_string)
+{
+       ModestConf *conf  = modest_conf_new ();
+       const gchar *key  =  modest_defs_namespace ("/teststring");
+       const gchar *key2 =  modest_defs_namespace ("/teststring2");
+
+       const gchar *data = "hello in Korean:  안녕하세요";
+       gchar *data2;
+       
+       fail_unless (MODEST_IS_CONF(conf),
+                    "modest_conf_new should return a valid"
+                    " ModestConf instance");
+
+       fail_unless (modest_conf_set_string (
+                            conf, key, data, NULL),
+                    "modest_conf_set_string should return TRUE");
+
+       fail_unless (modest_conf_key_exists(conf, key, NULL),
+                    "modest_conf_key_exists should return TRUE for <key>");
+       fail_unless (!modest_conf_key_exists(conf, key2, NULL),
+                    "modest_conf_key_exists should return FALSE for <key2>");
+       
+       data2 = modest_conf_get_string (conf, key, NULL);
+       fail_unless (data2 && strcmp (data2, data) == 0,
+                    "modest_conf_get_string should return what we put there");                                 
+       g_free (data2);
+       
+       fail_unless (modest_conf_remove_key (conf, key, NULL),
+                    "modest_conf_remove_key should return TRUE");
+       
+       fail_unless (!modest_conf_key_exists(conf, key, NULL),
+                    "modest_conf_key should return FALSE after we"
+                    "removed the key");
+       
+       g_object_unref (conf);
+}
+END_TEST
+
+
+
+START_TEST (test_modest_conf_store_retrieve_bool)
+{
+       ModestConf *conf  = modest_conf_new ();
+       const gchar *key  =  modest_defs_namespace ("/teststring");
+       const gchar *key2 =  modest_defs_namespace ("/teststring2");
+
+       gboolean data = TRUE, data2;
+       
+       fail_unless (MODEST_IS_CONF(conf),
+                    "modest_conf_new should return a valid"
+                    " ModestConf instance");
+
+       fail_unless (modest_conf_set_bool (conf, key, data, NULL),
+                    "modest_conf_set_bool should return TRUE");
+       
+       fail_unless (modest_conf_key_exists(conf, key, NULL),
+                    "modest_conf_key_exists should return TRUE for <key>");
+       fail_unless (!modest_conf_key_exists(conf, key2, NULL),
+                    "modest_conf_key_exists should return FALSE for <key2>");
+       
+       data2 = modest_conf_get_bool (conf, key, NULL);
+       fail_unless (data2 == data,
+                    "modest_conf_get_bool should return what we put there");                                   
+       fail_unless (modest_conf_remove_key (conf, key, NULL),
+                    "modest_conf_remove_key should return TRUE");
+       
+       fail_unless (!modest_conf_key_exists(conf, key, NULL),
+                    "modest_conf_key should return FALSE after we"
+                    "removed the key");
+
+       g_object_unref (conf);
+}
+END_TEST
+
+
+START_TEST (test_modest_conf_store_retrieve_int)
+{
+       ModestConf *conf  = modest_conf_new ();
+       const gchar *key  =  modest_defs_namespace ("/teststring");
+       const gchar *key2 =  modest_defs_namespace ("/teststring2");
+
+       gint data = 99, data2;
+       
+       fail_unless (MODEST_IS_CONF(conf),
+                    "modest_conf_new should return a valid"
+                    " ModestConf instance");
+
+       fail_unless (modest_conf_set_int (conf, key, data, NULL),
+                    "modest_conf_set_int should return TRUE");
+       
+       fail_unless (modest_conf_key_exists(conf, key, NULL),
+                    "modest_conf_key_exists should return TRUE for <key>");
+       fail_unless (!modest_conf_key_exists(conf, key2, NULL),
+                    "modest_conf_key_exists should return FALSE for <key2>");
+       
+       data2 = modest_conf_get_int (conf, key, NULL);
+       fail_unless (data2 == data,
+                    "modest_conf_get_int should return what we put there");                                    
+       fail_unless (modest_conf_remove_key (conf, key, NULL),
+                    "modest_conf_remove_key should return TRUE");
+       
+       fail_unless (!modest_conf_key_exists(conf, key, NULL),
+                    "modest_conf_key should return FALSE after we"
+                    "removed the key");
+
+       g_object_unref (conf);
+}
+END_TEST
+
+
 
 static Suite*
 modest_conf_suite (void)
@@ -50,13 +174,20 @@ modest_conf_suite (void)
        Suite *suite = suite_create ("ModestConf");
 
        TCase *tc_core = tcase_create ("core");
+       tcase_add_checked_fixture (tc_core,
+                                  fx_setup_modest_conf,
+                                  NULL);
        tcase_add_test (tc_core, test_modest_conf_new);
+       tcase_add_test (tc_core, test_modest_conf_store_retrieve_string);
+       tcase_add_test (tc_core, test_modest_conf_store_retrieve_bool);
+       tcase_add_test (tc_core, test_modest_conf_store_retrieve_int);
 
        suite_add_tcase (suite, tc_core);
 
        return suite;
 }
 
+
 int
 main ()
 {
@@ -69,7 +200,7 @@ main ()
        suite   = modest_conf_suite ();
        srunner = srunner_create (suite);
 
-       srunner_run_all (srunner, CK_NORMAL);
+       srunner_run_all (srunner, CK_ENV);
        failures = srunner_ntests_failed (srunner);
        srunner_free (srunner);