From d0301080ee78c2f67ce04486da2ee3e7e123eece Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 2 Jun 2013 20:00:21 -0400 Subject: [PATCH] Improve GSettings test coverage --- gio/tests/gsettings.c | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) diff --git a/gio/tests/gsettings.c b/gio/tests/gsettings.c index e5e5903..466ee4b 100644 --- a/gio/tests/gsettings.c +++ b/gio/tests/gsettings.c @@ -427,6 +427,7 @@ test_delay_apply (void) GSettings *settings; GSettings *settings2; gchar *str; + gboolean writable; settings = g_settings_new ("org.gtk.test"); settings2 = g_settings_new ("org.gtk.test"); @@ -448,6 +449,9 @@ test_delay_apply (void) g_assert (changed_cb_called); g_assert (!changed_cb_called2); + writable = g_settings_is_writable (settings, "greeting"); + g_assert (writable); + g_settings_get (settings, "greeting", "s", &str); g_assert_cmpstr (str, ==, "greetings from test_delay_apply"); g_free (str); @@ -482,6 +486,13 @@ test_delay_apply (void) g_assert (!g_settings_get_has_unapplied (settings)); g_assert (!g_settings_get_has_unapplied (settings2)); + g_settings_reset (settings, "greeting"); + g_settings_apply (settings); + + g_settings_get (settings, "greeting", "s", &str); + g_assert_cmpstr (str, ==, "Hello, earthlings"); + g_free (str); + g_object_unref (settings2); g_object_unref (settings); } @@ -501,6 +512,10 @@ test_delay_revert (void) g_settings_set (settings2, "greeting", "s", "top o' the morning"); + g_settings_get (settings, "greeting", "s", &str); + g_assert_cmpstr (str, ==, "top o' the morning"); + g_free (str); + g_settings_delay (settings); g_settings_set (settings, "greeting", "s", "greetings from test_delay_revert"); @@ -1531,6 +1546,13 @@ test_no_write_binding (void) g_test_trap_assert_passed (); } +static void +key_changed_cb (GSettings *settings, const gchar *key, gpointer data) +{ + gboolean *b = data; + (*b) = TRUE; +} + /* * Test that using a keyfile works */ @@ -1541,6 +1563,11 @@ test_keyfile (void) GSettings *settings; GKeyFile *keyfile; gchar *str; + gboolean writable; + GError *error = NULL; + gchar *data; + gsize len; + gboolean called = FALSE; g_remove ("gsettings.store"); @@ -1548,16 +1575,46 @@ test_keyfile (void) settings = g_settings_new_with_backend ("org.gtk.test", kf_backend); g_object_unref (kf_backend); + g_settings_reset (settings, "greeting"); + str = g_settings_get_string (settings, "greeting"); + g_assert_cmpstr (str, ==, "Hello, earthlings"); + g_free (str); + + writable = g_settings_is_writable (settings, "greeting"); + g_assert (writable); g_settings_set (settings, "greeting", "s", "see if this works"); + str = g_settings_get_string (settings, "greeting"); + g_assert_cmpstr (str, ==, "see if this works"); + g_free (str); + + g_settings_delay (settings); + g_settings_set (settings, "farewell", "s", "cheerio"); + g_settings_apply (settings); + keyfile = g_key_file_new (); g_assert (g_key_file_load_from_file (keyfile, "gsettings.store", 0, NULL)); str = g_key_file_get_string (keyfile, "tests", "greeting", NULL); g_assert_cmpstr (str, ==, "'see if this works'"); + g_free (str); + str = g_key_file_get_string (keyfile, "tests", "farewell", NULL); + g_assert_cmpstr (str, ==, "'cheerio'"); g_free (str); + + g_signal_connect (settings, "changed::greeting", G_CALLBACK (key_changed_cb), &called); + + g_key_file_set_string (keyfile, "tests", "greeting", "howdy"); + data = g_key_file_to_data (keyfile, &len, NULL); + g_file_set_contents ("gsettings.store", data, len, &error); + g_assert_no_error (error); + while (!called) + g_main_context_iteration (NULL, FALSE); + g_key_file_free (keyfile); + g_free (data); + g_object_unref (settings); } @@ -2233,6 +2290,47 @@ test_actions (void) g_object_unref (toggle); } +static void +test_null_backend (void) +{ + GSettingsBackend *backend; + GSettings *settings; + gchar *str; + gboolean writable; + + backend = g_null_settings_backend_new (); + settings = g_settings_new_with_backend ("org.gtk.test", backend); + + g_object_get (settings, "schema", &str, NULL); + g_assert_cmpstr (str, ==, "org.gtk.test"); + g_free (str); + + g_settings_get (settings, "greeting", "s", &str); + g_assert_cmpstr (str, ==, "Hello, earthlings"); + g_free (str); + + g_settings_set (settings, "greeting", "s", "goodbye world"); + g_settings_get (settings, "greeting", "s", &str); + g_assert_cmpstr (str, ==, "Hello, earthlings"); + g_free (str); + + writable = g_settings_is_writable (settings, "greeting"); + g_assert (!writable); + + g_object_unref (settings); + g_object_unref (backend); +} + +static void +test_memory_backend (void) +{ + GSettingsBackend *backend; + + backend = g_memory_settings_backend_new (); + g_assert (G_IS_SETTINGS_BACKEND (backend)); + g_object_unref (backend); +} + int main (int argc, char *argv[]) { @@ -2344,6 +2442,8 @@ main (int argc, char *argv[]) g_test_add_func ("/gsettings/get-range", test_get_range); g_test_add_func ("/gsettings/schema-source", test_schema_source); g_test_add_func ("/gsettings/actions", test_actions); + g_test_add_func ("/gsettings/null-backend", test_null_backend); + g_test_add_func ("/gsettings/memory-backend", test_memory_backend); result = g_test_run (); -- 2.7.4