mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-11-10 11:26:16 +01:00
Improve GSettings test coverage
This commit is contained in:
parent
b9406904a5
commit
d0301080ee
@ -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 ();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user